I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Intshayelelo

Kolu ngcelele lwamanqaku, ndifuna ukujonga inkqubo yokwakha yokusasazwa kwe-buildroot kwaye wabelane ngamava am ekwenzeni ngokwezifiso. Kuya kubakho amava asebenzayo ekudaleni i-OS encinci ene-graphical interface kunye nokusebenza okuncinci.

Okokuqala, akufanele udibanise inkqubo yokwakha kunye nokusabalalisa. I-Buildroot inokwakha inkqubo ukusuka kwiseti yeepakethe ezinikezelwa kuyo. I-Buildroot yakhelwe kwiifayile zeefayile kwaye ngenxa yoko inamandla amakhulu okwenza ngokwezifiso. Buyisela ipakethe ngolunye uguqulelo, yongeza eyakho ipakethe, utshintshe imithetho yokwakha ipakethe, wenze ngokwezifiso inkqubo yefayile emva kokufaka zonke iipakethe? I-buildroot inokukwenza konke oku.

ERashiya, i-buildroot isetyenziswa, kodwa ngokombono wam kukho ulwazi oluncinci lwesiRashiya lwabaqalayo.

Injongo yomsebenzi kukudibanisa ikiti yokusabalalisa ngokukhuphela okuphilayo, i-icewm interface kunye nesikhangeli. Iqonga ekujoliswe kulo yibhokisi yenyani.

Kutheni uzakhele owakho usasazo? Amaxesha amaninzi ukusebenza okunyiniweyo kuyafuneka ngezibonelelo ezinyiniweyo. Ngokufuthi ngakumbi kwi-automation kufuneka wenze i-firmware. Ukulungelelanisa ukuhanjiswa kwenjongo ngokubanzi ngokucoca iipakethe ezingeyomfuneko kwaye uyiguqule ibe yi-firmware inzima kakhulu kunokwakha usasazo olutsha. Ukusebenzisa iGentoo nayo inemida yayo.

Inkqubo yeBuildroot inamandla kakhulu, kodwa ayizukwenzela nto. Inokwenza kuphela kwaye izenzele inkqubo yokuhlanganisa.

Iinkqubo zokwakha ezizezinye (i-yocto, inkqubo yokwakha evulekileyo kunye nezinye) aziqwalaselwa okanye zithelekiswe.

Apho ungayifumana kwaye uqale njani

Iwebhusayithi yeprojekthi - buildroot.org. Apha unokukhuphela inguqulelo yangoku kwaye ufunde incwadana. Apho ungaqhakamshelana noluntu, kukho i-bug tracker, uluhlu lwe-imeyile kunye nejelo le-irc.

I-Buildroot isebenza nge-defconfigs yebhodi ekujoliswe kuyo yokwakha. I-Defconfig yifayile yoqwalaselo egcina kuphela iinketho ezingenamaxabiso angagqibekanga. Nguye ogqibayo ukuba kuza kuqokelelwa ntoni kwaye njani. Kulo mzekelo, ungaqwalasela ngokwahlukileyo ubumbeko lwebhokisi exakekileyo, i-linux-kernel, i-uglibc, i-u-boot kunye ne-barebox bootloaders, kodwa zonke ziya kubotshelelwa kwibhodi ekujoliswe kuyo.
Emva kokukhulula i-archive ekhutshelweyo okanye ukudibanisa kwi-git, sifumana i-buildroot esele ilungile. Unokufunda ngakumbi malunga nolwakhiwo lwesikhokelo kwincwadana; Ndiza kukuxelela malunga nezona zibalulekileyo:

ibhodi β€” uvimba weefayili oneefayile ezithile kwibhodi nganye. Ezi zinokuba zizikripthi zokwenza imifanekiso yenkqubo (iso, i-sdcart, i-cpio kunye nezinye), i-directory engaphezulu, i-kernel config, njl.
configs - eyona defconfig yebhodi. I-Defconfig luqwalaselo lwebhodi olungaphelelanga. Igcina kuphela iiparamitha ezahlukileyo kwimimiselo engagqibekanga
dl β€” uvimba weefayili onekhowudi zemvelaphi ekhutshelweyo/iifayile zokudibanisa
imveliso/injongo β€” inkqubo yefayile edityanisiweyo yesiphumo se-OS. Emva koko, imifanekiso yenziwa kuyo ukuze ikhutshelwe/ufakelo
imveliso/umamkeli - izinto eziluncedo zokuhlanganisa
imveliso/ukwakha - iiphakheji ezidibeneyo

Indibano iqwalaselwe nge KConfig. Inkqubo efanayo isetyenziselwa ukwakha i-Linux kernel. Uluhlu lwemiyalelo edla ngokusetyenziswa (yenza kulawulo lwe-builroot):

  • yenza i-menuconfig-fowunela uqwalaselo lokwakha. Ungasebenzisa kwakhona ujongano lomzobo (yenza i-nconfig, yenza i-xconfig, yenza i-gconfig)
  • yenza i-linux-menuconfig-fowunela uqwalaselo lwe-kernel.
  • coca -coca iziphumo zokwakha (yonke into egcinwe kwimveliso)
  • yenza - ukwakha inkqubo. Oku akuhlanganisi iinkqubo esele ziqokelelwe.
  • yenza i-defconfig_name - tshintsha uhlengahlengiso kwi-defconfig ethile
  • yenza uluhlu-defconfigs - bonisa uluhlu lwe-defconfigs
  • yenza umthombo - khuphela nje iifayile zokufakela, ngaphandle kokwakha.
  • yenza uncedo - dwelisa imiyalelo enokwenzeka

Amanqaku abalulekileyo kunye neengcebiso eziluncedo

I-Buildroot ayizakhi kwakhona iipakethi esele zakhiwe! Ngoko ke, imeko inokuvela apho kufuneka ukudibanisa ngokupheleleyo.

Ungakha kwakhona ipakethe eyahlukileyo ngomyalelo yenza ipakeji-ukwakha kwakhona. Umzekelo, unokwakha kwakhona i-Linux kernel:

make linux-rebuild

I-Buildroot igcina imo yayo nayiphi na ipakethe ngokwenza iifayile zesitampu kwimveliso/ukwakha/$igama lepackagename:

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Ke ngoko, unokwakha kwakhona ingcambu-fs kunye nemifanekiso ngaphandle kokwakha kwakhona iipakethe:

rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make

Iinguqu eziluncedo

I-buildroot ineseti yezinto eziguquguqukayo zoqwalaselo olulula

  • $TOPDIR - i-buildroot directory
  • $BASEDIR - OUTPUT directory
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - host fs, staging fs, target fs ukwakha abalawuli.
  • $ BUILD_DIR - uvimba weefayili kunye neepakethi ezingapakishwanga kwaye zakhiwe

Ukubonakala

I-buildroot inomsebenzi wokubonwa.Ungakha umzobo wokuxhomekeka, igrafu yexesha lokwakha, kunye negrafu yobungakanani bephakheji kwinkqubo yokugqibela. Iziphumo zikwimo yeefayile ze-pdf (ungakhetha kwi-svn,png) kwimveliso/igrafu ulawulo.

Imizekelo yemiyalelo yokubonisa:

  • make graph-depends ukwakha umthi wokuxhomekeka
  • make <pkg>-graph-depends yakha umthi wokuxhomekeka kwiphakheji ethile
  • BR2_GRAPH_OUT=png make graph-build ixesha lokwakha iyelenqe kunye nemveliso yePNG
  • make graph-size ubungakanani bepakethe yeploti

Izikripthi eziluncedo

Kukho i-subdirectory kwi-buildroot directory izixhobo ngemibhalo eluncedo. Umzekelo, kukho iskripthi esijonga ukuchaneka kweenkcazo zephakheji. Oku kunokuba luncedo xa ufaka iipakethe zakho (ndizakwenza oku kamva). Ifayile utils/readme.txt iqulethe inkcazelo yezi scripts.

Masenze ukuhanjiswa kwempahla

Kubalulekile ukukhumbula ukuba yonke imisebenzi yenziwa egameni lomsebenzisi oqhelekileyo, hayi ingcambu.
Yonke imiyalelo iyenziwa kwi-buildroot. Iphakheji ye-buildroot sele iquka isethi yoqwalaselo lweebhodi ezininzi eziqhelekileyo kunye nokubonakala.

Makhe sijonge kuluhlu lolungelelwaniso:

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Tshintshela kuqwalaselo lweqemu_x86_64_defconfig

make qemu_x86_64_defconfig

Kwaye siqala indibano

make

Ulwakhiwo lugqibezela ngempumelelo, jonga iziphumo:

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

I-Buildroot iqulunqe imifanekiso onokuthi uyiqhube eQemu kwaye uqinisekise ukuba iyasebenza.

qemu-system-x86_64 -kernel output/images/bzImage -hda    output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S

Isiphumo sisixokelelwano esiqhutywa kwiqemu:

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Ukwenza eyakho ibhodi ubumbeko

Ukongeza iiFayile zeBhodi

Makhe sijonge kuluhlu lolungelelwaniso:

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Kuluhlu sibona pc_x86_64_efi_defconfig. Siza kwenza eyethu ibhodi ngokuyikopa kuqwalaselo:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Masenze kwangoko isikhombisi sebhodi ukuze sigcine izikripthi zethu, i-rootfs-overlay kunye nezinye iifayile eziyimfuneko:

mkdir board/my_x86_board

Tshintshela kolu defconfig:

make my_x86_board_defconfig

Ngaloo ndlela, ngoku i-config config (egcinwe kwi-.config kwingcambu ye-buildroot directory) ihambelana ne-x86-64 legacy (bios) umatshini ojoliswe kuwo.

Masikope uqwalaselo lwe-linux-kernel (eluncedo kamva):

cp board/pc/linux.config board/my_x86_board/

Ukucwangcisa iiparameters zokwakha nge KConfig

Masiqalise ukuseta:

make menuconfig 

Ifestile ye KConfig iya kuvula. Kuyenzeka ukuqwalasela ngojongano lomzobo (yenza i-nconfig, yenza i-xconfig, yenza i-gconfig):

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Sifaka icandelo lokuqala Iinketho ekujoliswe kuzo. Apha ungakhetha ulwakhiwo olujoliswe kuyo apho ulwakhiwo luya kwenziwa.

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Yakha iinketho - kukho izicwangciso zokwakha ezahlukeneyo apha. Ungakhankanya abalawuli abaneekhowudi zomthombo, inani lemisonto yokwakha, izibuko zokukhuphela iikhowudi zemvelaphi kunye nezinye izicwangciso. Masizishiye iisetingi ngokungagqibekanga.

I-Toolchain - izixhobo zokwakha ngokwazo ziqwalaselwe apha. Funda ngakumbi ngaye.

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Uhlobo lwekhonkco lwezixhobo – uhlobo lwekhonkco lwezixhobo ezisetyenzisiweyo. Oku kunokuba yi-toolchain eyakhelwe kwi-buildroot okanye eyangaphandle (ungakhankanya ulawulo olusele lwakhiwe okanye i-url yokukhuphela). Kukho iinketho ezongezelelweyo zezakhiwo ezahlukeneyo. Ngokomzekelo, ngengalo unokukhetha ngokulula inguqulo ye-Linaro ye-toolchain yangaphandle.

C ilayibrari - ukhetho lwethala leencwadi C. Ukusebenza kwayo yonke inkqubo kuxhomekeke koku. Ngokuqhelekileyo, i-glibc isetyenziswa, exhasa yonke imisebenzi enokwenzeka. Kodwa inokuba nkulu kakhulu kwinkqubo ehlonyelweyo, ngoko ke i-uglibc okanye i-musl zihlala zikhethwa. Siza kukhetha i-glibc (oku kuya kufuneka kamva ukusebenzisa i-systemd).

Iintloko zeKernel kunye ne-Custom Kernel Headers series - kufuneka zihambelane nenguqu ye-kernel eya kuba kwisistim edibeneyo. Kwizihloko zekernel, ungakhankanya nendlela eya kwitarball okanye kwindawo yokugcina igit.

IINDLELA ZOKUQHUBISA I-GCC - khetha inguqulelo yomqokeleli eza kusetyenziselwa ukwakha
Yenza inkxaso yeC ++ isebenze - khetha ukwakha ngenkxaso yeelayibrari zeC ++ kwinkqubo. Oku kuya kuba luncedo kuthi kwixesha elizayo.

Iinketho ezongezelelweyo ze-gcc - unokuseta ukhetho olongezelelweyo lomqokeleli. Asiyidingi okwangoku.

Ubumbeko lwenkqubo likuvumela ukuba usete iiparamitha zexesha elizayo zenkqubo eyenziweyo:

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Uninzi lwamanqaku lucacile kumxholo. Masithathele ingqalelo ezi ngongoma zilandelayo:
Indlela eya kwiitafile zabasebenzisi - itafile enabasebenzisi abaza kuyilwa (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Umzekelo wefayile. Umsebenzisi uyakwenziwa kunye negama lokugqitha, ngokuzenzekelayo gid/uid, /bin/sh iqokobhe, umsebenzisi weqela elingagqibekanga, ingcambu yelungu leqela, comment Foo umsebenzisi

[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt 
user -1 user -1 =admin /home/user /bin/sh root Foo user

Iingcambu zendlela yokwaleka abalawuli - uvimba weefayili ogqunywe ngaphezulu kweethagethi-fs ezidityanisiweyo. Yongeza iifayile ezintsha kwaye ibuyisela esele ikho.

Izikripthi ezenzelwe ukwenziwa phambi kokudala imifanekiso yenkqubo yefayile-Izikripthi zikhutshwe ngokukhawuleza phambi kokusonga inkqubo yefayile kwimifanekiso. Masishiye iscript singenanto okwangoku.

Makhe siye kwicandelo le-Kernel

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Iisetingi zeKernel zisetwe apha. I-kernel ngokwayo iqwalaselwe ngokwenza i-linux-menuconfig.
Unokuseta uguqulelo lwe-kernel ngeendlela ezahlukeneyo: khetha kwezo zinikezelweyo, faka uguqulelo ngesandla, khankanya indawo yokugcina okanye itarball esele ilungile.

Ubumbeko lwe-kernel β€” indlela eya kwi-kernel config. Ungakhetha uqwalaselo olungagqibekanga lolwakhiwo olukhethiweyo okanye i-defocnfig esuka kwiLinux. Umthombo we Linux uqulathe uluhlu lwe defconfigs kwiinkqubo ezahlukeneyo ekujoliswe kuzo. Ungayifumana le oyifunayo ngokujonga ngqo kwimithombo elapha. Umzekelo, kwibhodi emnyama yethambo le-beagle unako khetha uqwalaselo.

Ipakethe icandelo leepakethe ekujoliswe kuzo likuvumela ukuba ukhethe ukuba yeyiphi imipakethe ezakufakwa kwindlela eyakhiwayo. Masiyiyeke ingatshintshanga okwangoku. Siza kongeza iipakethi zethu kolu luhlu kamva.
Imifanekiso yefayile yefayile - uluhlu lwemifanekiso yefayile yefayile eya kuqokelelwa. Yongeza umfanekiso we-iso

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

I-Bootloaders-ukukhethwa kwee-bootloaders ukuqokelela. Makhe sikhethe i-isolinix

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Ukuqwalasela iNkqubo

I-Systemd iba yenye yeentsika zeLinux, kunye ne-kernel kunye ne-glibc. Ke ngoko, ndisuse useto lwalo kwinto eyahlukileyo.

Iqwalaselwe ngokwenza i-menuconfig, emva koko iipakethe ekujoliswe kuzo β†’ Izixhobo zenkqubo β†’ inkqubod. Apha ungakhankanya ukuba zeziphi iinkonzo zenkqubo ezakufakwa kwaye ziqalwe xa inkqubo iqala.

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Ukugcinwa kobumbeko lwesixokelelwano

Sigcina olu qwalaselo nge KConfig.

Emva koko gcina i-defconfig yethu:

make savedefconfig

Uqwalaselo lwe-Linux Kernel

Ubumbeko lwe-kernel ye-Linux lubhengezwa ngalo myalelo ulandelayo:

make linux-menuconfig

Masiyongeze inkxaso yekhadi levidiyo yeVirtualbox

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Masiyongeze inkxaso yokudibanisa yeeNdwendwe zeVirtualbox

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Gcina kwaye uphume. KUBALULEKILEYO: uqwalaselo luya kugcinwa kwimveliso/ukwakha/linux-$version/config, kodwa hayi ebhodini/my_x86_board/linux.config

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Ke ngoko, kufuneka ukope ngesandla uqwalaselo kwindawo yokugcina:

cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config

Emva koko siya kwenza udibaniso olupheleleyo lwenkqubo yonke. I-buildroot ayisakhi kwakhona into esele yakhiwe, kufuneka ukhankanye ngesandla iipakethe zokwakhiwa kwakhona. Ukuze ungachithi ixesha kunye nemithambo-luvo, kulula ukwakha inkqubo encinci ngokupheleleyo):

make clean;make

Ekugqityweni kolwakhiwo, sungula iVirtualBox (ivavanywe kwiinguqulelo 5.2 kunye ne-6.0) ukuqala kwi-CD.

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Ukubaleka ukusuka kwi-iso edibeneyo:

I-Buildroot - inxalenye ye-1. Ulwazi ngokubanzi, ukudibanisa inkqubo encinci, ukucwangciswa kwimenyu

Uluhlu lwezinto ezisetyenzisiweyo

  1. Incwadi ye-Buidroot

umthombo: www.habr.com

Yongeza izimvo