Kulesi sigaba ngibheka ezinye zezinketho zokwenza ngokwezifiso ebengizidinga. Lolu akulona uhlu oluphelele lwalokho okunikezwa yi-buildroot, kodwa asebenza kahle futhi awadingi ukungenelela kumafayela e-buildroot ngokwayo.
Ukusebenzisa indlela NGAPHANDLE ukwenza ngendlela oyifisayo
Kodwa le ndlela ayilula kakhulu, ikakhulukazi lapho ubuyekeza i-builroot. Kukhona indlela yokuxazulula le nkinga isihlahla sangaphandle. Ingqikithi yayo ukuthi ungagcina ibhodi, ama-configs, amaphakheji nezinye izinkomba kuhlu oluhlukile (isibonelo, ngisebenzisa uhla lwemibhalo lwama-patches ukuze ngifake ama-patches kumaphakheji, imininingwane eyengeziwe esigabeni esihlukile) futhi i-buildroot ngokwayo izokwengeza kulabo abaku- inkomba yayo.
Qaphela: ungamboza izihlahla ezimbalwa zangaphandle ngesikhathi esisodwa, kunesibonelo kubhukwana le-builroot
Ake sakhe uhla lwemibhalo my_tree, olutholakala eduze kohlu lwemibhalo ye-buildroot futhi sidlulisele ukucushwa kwethu lapho. Okukhiphayo kufanele kube yisakhiwo sefayela esilandelayo:
[alexey@alexey-pc my_tree]$ tree
.
├── board
│ └── my_x86_board
│ ├── bef_cr_fs_img.sh
│ ├── linux.config
│ ├── rootfs_overlay
│ └── users.txt
├── Config.in
├── configs
│ └── my_x86_board_defconfig
├── external.desc
├── external.mk
├── package
└── patches
6 directories, 7 files
Njengoba ubona, ngokuvamile isakhiwo siphinda isakhiwo se-buildroot.
Directory ibhodi iqukethe amafayela aqondene nebhodi ngalinye kithi:
- I-bef_cr_fs_img.sh iwumbhalo esizosetshenziswa ngemva kokwakha isistimu yefayela eliqondiwe, kodwa ngaphambi kokuyipakisha ezithombeni. Sizoyisebenzisa esikhathini esizayo
- linux.config - ukucushwa kwe-kernel
- i-rootfs_overlay - uhla lwemibhalo okufanele lubekwe phezu kwesistimu yefayela eliqondiwe
- users.txt - ifayela elichaza abasebenzisi abazokwakhiwa
Directory okulungiselelwe iqukethe i-defconfig yamabhodi ethu. Sinoyedwa kuphela.
Iphakheji - ikhathalogu namaphakheji ethu. Ekuqaleni, i-buildroot iqukethe izincazelo nemithetho yokwakha inani elilinganiselwe lamaphakheji. Kamuva sizongeza umphathi wewindi le-icewm kanye nomphathi wokungena wesithombe esifushane lapha.
Ama-patches - ikuvumela ukuthi ugcine amapheshana akho amaphakheji ahlukene kalula. Imininingwane eyengeziwe esigabeni esihlukile ngezansi.
Manje sidinga ukungeza amafayela encazelo esihlahleni sethu sangaphandle. Kunamafayela angu-3 anesibopho salokhu: external.desc, Config.in, external.mk.
kwangaphandle.desc iqukethe incazelo yangempela:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for article
Umugqa wokuqala yisihloko. Esikhathini esizayo i-buildroot yakha okuguquguqukayo $(BR2_EXTERNAL_MY_TREE_PATH), okufanele isetshenziswe lapho uhlela umhlangano. Isibonelo, indlela eya kufayela lomsebenzisi ingasethwa kanje:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Umugqa wesibili uyincazelo emfushane, efundeka umuntu.
Config.in, external.mk - amafayela ukuchaza amaphakheji angeziwe. Uma ungawengezi amaphakheji akho, khona-ke lawa mafayela angashiywa engenalutho. Okwamanje, yilokho esizokwenza.
Manje sesinesihlahla sethu sangaphandle esilungile, esiqukethe i-defconfig yebhodi lethu namafayela eliwadingayo. Ake siye kumkhombandlela we-buildroot futhi ucacise ukusebenzisa isihlahla sangaphandle:
[alexey@alexey-pc buildroot]$ make BR2_EXTERNAL=../my_tree/ my_x86_board_defconfig
#
# configuration written to /home/alexey/dev/article/ramdisk/buildroot/.config
#
[alexey@alexey-pc buildroot]$ make menuconfig
Emyalweni wokuqala sisebenzisa impikiswano BR2_EXTERNAL=../my_tree/, okubonisa ukusetshenziswa kwesihlahla sangaphandle.Ungacacisa izihlahla zangaphandle ezimbalwa ezizosetshenziswa ngesikhathi esisodwa.Kulokhu, udinga ukwenza lokhu kanye kuphela, emva kwalokho kudalwe ifayela elikhiphayo/.br-external.mk elizosho ukuthi igcina ulwazi mayelana nesihlahla sangaphandle esisetshenzisiwe:
[alexey@alexey-pc buildroot]$ cat output/.br-external.mk
#
# Automatically generated file; DO NOT EDIT.
#
BR2_EXTERNAL ?= /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_NAMES =
BR2_EXTERNAL_DIRS =
BR2_EXTERNAL_MKS =
BR2_EXTERNAL_NAMES += my_tree
BR2_EXTERNAL_DIRS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_MKS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree/external.mk
export BR2_EXTERNAL_my_tree_PATH = /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
export BR2_EXTERNAL_my_tree_DESC = My simple external-tree for article
Okubalulekile! Izindlela kuleli fayela zizobe ziphelele!
Into yezinketho zangaphandle ivele kumenyu:
Le submenu izoqukatha amaphakheji ethu avela esihlahleni sethu sangaphandle. Lesi sigaba asinalutho okwamanje.
Manje kubaluleke kakhulu ngathi ukuthi sibhale kabusha izindlela ezidingekayo ukuze sisebenzise isihlahla sangaphandle.
Sicela uqaphele ukuthi ku-Yakha izinketho → Indawo yokugcina i-buildroot config section, kuzoba nendlela ephelele eya ku-defconfig elondoloziwe. Yakhiwa ngesikhathi sokucacisa ukusetshenziswa kwe-extgernal_tree.
Sizophinda silungise izindlela esigabeni sokucushwa kweSistimu. Okwetafula elinabasebenzisi abadaliwe:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Esigabeni se-Kernel, shintsha indlela eya ekucushweni kwe-kernel:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Manje amafayela ethu avela esihlahleni sethu sangaphandle azosetshenziswa ngesikhathi sokuhlanganiswa. Uma uthuthela kwenye inkomba noma ubuyekeza i-buildroot, sizoba nezinkinga ezincane.
Ukwengeza imbondela ye-root fs:
Le ndlela ikuvumela ukuthi wengeze/ushintshe kalula amafayela ohlelweni lwefayela eliqondiwe.
Uma ifayela likumbondela yempande fs, kodwa lingekho kuthagethi, lizongezwa
Uma ifayela likumbondela yempande fs futhi likuthagethi, lizoshintshwa.
Okokuqala, ake simise indlela eya ku-root fs overlay dir. Lokhu kwenziwa esigabeni sokucushwa kweSistimu → Isigaba sezinkomba zokumbondelana kwesistimu yefayela le-Root:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/
Manje ake sakhe amafayela amabili.
[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/etc/hosts
127.0.0.1 localhost
127.0.1.1 my_small_linux
8.8.8.8 google-public-dns-a.google.com.
[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt
This is new file from overlay
Ifayela lokuqala (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) lizongena esikhundleni sefayela /etc/hosts ohlelweni oluqediwe. Ifayela lesibili (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) lizongezwa.
Siqoqa futhi sihlole:
Ukwenziwa kwezikripthi zokwenza ngokwezifiso ezigabeni ezihlukene zokuhlanganisa isistimu
Ngokuvamile udinga ukwenza umsebenzi othile ngaphakathi kwesistimu yefayela eliqondiwe ngaphambi kokuthi lihlanganiswe ezithombeni.
Lokhu kungenziwa esigabeni sokucushwa kweSistimu:
Imibhalo yokuqala emibili isetshenziswa ngemva kokwakhiwa kwesistimu yefayela eliqondiwe, kodwa ngaphambi kokuthi ihlanganiswe ezithombeni. Umehluko ukuthi iskripthi se-fakeroot sisetshenziswa kumongo we-fakeroot, elingisa umsebenzi njengomsebenzisi wempande.
Iskripthi sokugcina senziwa ngemva kokudalwa kwezithombe zesistimu. Ungenza izenzo ezengeziwe kuyo, isibonelo, kopisha amafayela adingekayo kuseva ye-NFS noma udale isithombe se-firmware yedivayisi yakho.
Njengesibonelo, ngizodala iskripthi esizobhala inguqulo kanye nosuku lokwakha ku-/etc/.
Okokuqala ngizokhombisa indlela eya kuleli fayela esihlahleni sami sangaphandle:
Futhi manje iskripthi ngokwaso:
[alexey@alexey-pc buildroot]$ cat ../my_tree/board/my_x86_board/bef_cr_fs_img.sh
#!/bin/sh
echo "my small linux 1.0 pre alpha" > output/target/etc/mysmalllinux-release
date >> output/target/etc/mysmalllinux-release
Ngemva kokuhlanganisa, ungabona leli fayela ohlelweni.
Empeleni, iskripthi singaba sikhulu. Ngakho-ke, kuphrojekthi yangempela ngithathe umzila othuthuke kakhulu:
- Ngidale uhla lwemibhalo (my_tree/board_my_x86_board/inside_fakeroot_scripts) lapho kukhona imibhalo okufanele isetshenziswe, enezinombolo ze-serial. Isibonelo, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- Ngibhale iskripthi (my_tree/board_my_x86_board/run_inside_fakeroot.sh) esidlula kulolu hlu lwemibhalo futhi sikhiphe ngokulandelana imibhalo equkethwe kuyo.
- Icacise lesi skripthi kuzilungiselelo zebhodi Ekucushweni Kwesistimu -> Izikripthi ezenziwe ngokwezifiso ezizosebenza ngaphakathi kwendawo ye-fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) isigaba
Source: www.habr.com