I-Buildroot - ingxenye 2. Ukudala ukucushwa kwebhodi lakho; usebenzisa isihlahla sangaphandle, i-rootfs-overlay, imibhalo ye-post-build

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

Esihlokweni esedlule Sibheke isibonelo esilula sokwengeza ukucushwa kwakho ngokwengeza i-defconfig yebhodi kanye namafayela adingekayo ngqo kumkhombandlela we-Buildroot.

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:

I-Buildroot - ingxenye 2. Ukudala ukucushwa kwebhodi lakho; usebenzisa isihlahla sangaphandle, i-rootfs-overlay, imibhalo ye-post-build

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:

I-Buildroot - ingxenye 2. Ukudala ukucushwa kwebhodi lakho; usebenzisa isihlahla sangaphandle, i-rootfs-overlay, imibhalo ye-post-build

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:

I-Buildroot - ingxenye 2. Ukudala ukucushwa kwebhodi lakho; usebenzisa isihlahla sangaphandle, i-rootfs-overlay, imibhalo ye-post-build

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:

I-Buildroot - ingxenye 2. Ukudala ukucushwa kwebhodi lakho; usebenzisa isihlahla sangaphandle, i-rootfs-overlay, imibhalo ye-post-build

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:

  1. 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
  2. Ngibhale iskripthi (my_tree/board_my_x86_board/run_inside_fakeroot.sh) esidlula kulolu hlu lwemibhalo futhi sikhiphe ngokulandelana imibhalo equkethwe kuyo.
  3. 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

Engeza amazwana