Isingeniso
Kulolu chungechunge lwama-athikili, ngifuna ukubheka uhlelo lokwakhiwa kokusabalalisa kwe-buildroot futhi ngabelane ngolwazi lwami ekwenzeni ngokwezifiso. Kuzoba nesipiliyoni esisebenzayo ekudaleni i-OS encane ene-graphical interface kanye nokusebenza okuncane.
Okokuqala, akufanele udide uhlelo lokwakha nokusabalalisa. I-Buildroot ingakha isistimu kusuka kusethi yamaphakheji anikezwa kuyo. I-Buildroot yakhelwe kuma-makefiles ngakho-ke inamandla amakhulu okwenza ngokwezifiso. Shintsha iphakheji ngenye inguqulo, engeza iphakheji lakho, shintsha imithetho yokwakha iphakheji, wenze ngokwezifiso isistimu yefayela ngemva kokufaka wonke amaphakheji? i-builroot ingakwenza konke lokhu.
E-Russia, i-buildroot isetshenziswa, kodwa ngombono wami kukhona ulwazi oluncane lwesiRashiya lwabaqalayo.
Umgomo womsebenzi uwukuhlanganisa ikhithi yokusabalalisa ngokulanda bukhoma, isixhumi esibonakalayo se-icewm kanye nesiphequluli. Inkundla okuqondiswe kuyo yi-virtualbox.
Kungani uzakhele okwakho ukusatshalaliswa? Ngokuvamile ukusebenza okulinganiselwe kuyadingeka ngezinsiza ezilinganiselwe. Kaningi ku-automation udinga ukudala i-firmware. Ukujwayela ukusatshalaliswa kwenhloso evamile ngokuhlanza amaphakheji angadingekile nokuwenza abe i-firmware kuwumsebenzi onzima kunokwakha ukusatshalaliswa okusha. Ukusebenzisa i-Gentoo nakho kunemikhawulo yakho.
Isistimu ye-Buildroot inamandla kakhulu, kodwa ngeke ikwenzele lutho. Ingakwazi kuphela ukunika amandla futhi yenze ngokuzenzakalelayo inqubo yokuhlanganisa.
Ezinye izinhlelo zokwakha (i-yocto, isistimu yokwakha evulekile nezinye) azicatshangelwa noma ziqhathaniswa.
Ungayithola kuphi nokuthi ungaqala kanjani
Iwebhusayithi yephrojekthi -
I-Buildroot isebenzisa i-defconfigs yebhodi eliqondiwe lokwakha. I-Defconfig yifayela lokumisa eligcina kuphela izinketho ezingenawo amanani azenzakalelayo. Nguye onqumayo ukuthi yini ezoqoqwa nokuthi kanjani. Kulesi simo, ungakwazi ukumisa ngokuhlukene izilungiselelo zebhokisi elimatasa, i-linux-kernel, i-uglibc, i-u-boot kanye ne-barebox bootloaders, kodwa zonke zizoboshelwa ebhodini eliqondiwe.
Ngemuva kokukhipha ingobo yomlando elandiwe noma ukwenza i-cloning kusuka ku-git, sithola i-buildroot elungele ukusetshenziswa. Ungafunda kabanzi mayelana nesakhiwo senkomba kubhukwana; ngizokutshela mayelana nezibaluleke kakhulu:
ibhodi — uhla lwemibhalo olunamafayela aqondene nebhodi ngalinye. Lokhu kungaba imibhalo yokwenza izithombe zesistimu (iso, sdcart, cpio nezinye), uhla lwemibhalo oluyimbondela, ukumiswa kwe-kernel, njll.
okulungiselelwe - i-defconfig yangempela yebhodi. I-Defconfig ukucushwa kwebhodi okungaphelele. Igcina kuphela amapharamitha ahlukile kuzilungiselelo ezizenzakalelayo
dl — uhla lwemibhalo olunamakhodi/amafayela omthombo alandiwe ukuze ahlanganiswe
okukhiphayo/okuhlosiwe - uhlelo lwefayela oluhlanganisiwe lwe-OS ewumphumela. Kamuva, izithombe zenziwa kuyo ukuze zilandwe/zifakwe
okukhiphayo/umsingathi - Izinsiza zokusingatha ukuhlanganisa
okukhiphayo/ukwakha - amaphakheji ahlanganisiwe
Ukuhlanganiswa kumiswa nge-KConfig. Isistimu efanayo isetshenziselwa ukwakha i-Linux kernel. Uhlu lwemiyalo evame ukusetshenziswa kakhulu (yenza kumkhombandlela we-builroot):
- yenza i-menuconfig - shayela ukucushwa kokwakha. Ungasebenzisa futhi i-graphical interface (yenza i-nconfig, yenza i-xconfig, yenza i-gconfig)
- yenza i-linux-menuconfig - shayela ukucushwa kwe-kernel.
- hlanza - hlanza imiphumela yokwakha (yonke into egcinwe kokuphumayo)
- yenza - ukwakha uhlelo. Lokhu akuhlanganisi kabusha izinqubo esezihlanganisiwe.
- yenza i-defconfig_name - shintsha ukucushwa ku-defconfig ethile
- yenza uhlu-defconfigs - bonisa uhlu lwe-defconfigs
- yenza umthombo - vele ulande amafayela wokufaka, ngaphandle kokwakha.
- yenza usizo - klelisa imiyalo engenzeka
Amanothi abalulekile namathiphu awusizo
I-Buildroot ayiwakhi kabusha amaphakheji asevele akhiwe! Ngakho-ke, kungase kuphakame isimo lapho kudingeka khona ukuhlanganisa kabusha okuphelele.
Ungakha kabusha iphakheji ehlukile ngomyalo yenza i-packagename-yakha kabusha. Isibonelo, ungakha kabusha i-Linux kernel:
make linux-rebuild
I-Buildroot igcina isimo sanoma iyiphi iphakheji ngokudala amafayela e-.stamp kuhla lwemibhalo lokuphumayo/ukwakha/$packagename:
Ngakho-ke, ungakwazi ukwakha kabusha ama-root-fs nemifanekiso ngaphandle kokwakha kabusha amaphakheji:
rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
Izinguquko Eziwusizo
I-buildroot inesethi yezinto eziguquguqukayo zokucushwa kalula
- $TOPDIR - umkhombandlela wokwakha
- $BASEDIR - OUTPUT directory
- $HOST_DIR, $STAGING_DIR, $TARGET_DIR — usokhaya fs, isiteji fs, target fs ukwakha uhla lwemibhalo.
- $BUILD_DIR - inkomba enamaphakheji angapakishiwe futhi akhiwe
Ukubonakala
I-buildroot inesici sokubuka. Ungakha umdwebo wokuncika, igrafu yesikhathi sokwakha, kanye negrafu yosayizi bephakheji kusistimu yokugcina. Imiphumela isesimweni samafayela e-pdf (ungakhetha ku-svn,png) kumkhombandlela ophumayo/wegrafu.
Izibonelo zemiyalelo yokubuka ngeso lengqondo:
make graph-depends
yakha umuthi wokuncikamake <pkg>-graph-depends
yakha isihlahla sokuncika sephakheji elithileBR2_GRAPH_OUT=png make graph-build
isikhathi sokwakha isakhiwo ngokukhipha kwe-PNGmake graph-size
usayizi wephakethe lesakhiwo
Imibhalo ewusizo
Kukhona i-subdirectory kuhla lwemibhalo ye-buildroot isebenzisa ngemibhalo ewusizo. Isibonelo, kuneskripthi esihlola ukufaneleka kwezincazelo zephakheji. Lokhu kungase kube usizo lapho wengeza amaphakheji akho (ngizokwenza lokhu kamuva). Ifayela utils/readme.txt iqukethe incazelo yalezi scripts.
Asakhe ukusatshalaliswa kwesitoko
Kubalulekile ukukhumbula ukuthi yonke imisebenzi yenziwa egameni lomsebenzisi ojwayelekile, hhayi impande.
Yonke imiyalo isetshenziswa ku-builroot. Iphakheji le-buildroot selivele lihlanganisa isethi yokucushwa kwamabhodi amaningi avamile kanye nokwenza izinto ezibonakalayo.
Ake sibheke uhlu lokucushwa:
Shintshela ku-qemu_x86_64_defconfig
make qemu_x86_64_defconfig
Futhi siqala umhlangano
make
Ukwakhiwa kuqeda ngempumelelo, bheka imiphumela:
I-Buildroot ihlanganise izithombe ongazisebenzisa ku-Qemu futhi uqinisekise ukuthi ziyasebenza.
qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
Umphumela uba isistimu esebenza ku-qemu:
Ukwakha okwakho ukucushwa kwebhodi
Ukwengeza Amafayela Ebhodi
Ake sibheke uhlu lokucushwa:
Ohlwini sibona pc_x86_64_efi_defconfig. Sizokwakha ibhodi lethu ngokulikopisha ekucushweni:
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
Masidale ngokushesha uhla lwemibhalo lwebhodi ukuze sigcine imibhalo yethu, i-rootfs-overlay namanye amafayela adingekayo:
mkdir board/my_x86_board
Shintshela kulokhu defconfig:
make my_x86_board_defconfig
Ngakho, manje i-build config (egcinwe ku-.config empandeni yohlu lwemibhalo ye-buildroot) ihambisana nomshini wokukhomba we-x86-64 legacy(bios).
Ake sikopishe ukucushwa kwe-linux-kernel (kuzosetshenziswa kamuva):
cp board/pc/linux.config board/my_x86_board/
Isetha amapharamitha wokwakha nge-KConfig
Ake siqale ukusetha:
make menuconfig
Iwindi le-KConfig lizovuleka. Kungenzeka ukumisa nge-graphical interface (yenza i-nconfig, yenza i-xconfig, yenza i-gconfig):
Sifaka Izinketho zethagethi esigabeni sokuqala. Lapha ungakhetha ukwakheka okuhlosiwe okuzokwenziwa ngakho ukwakha.
Izinketho zokwakha - kunezilungiselelo ezahlukahlukene zokwakha lapha. Ungacacisa izinkomba ezinamakhodi omthombo, inombolo yezintambo zokwakha, izibuko zokulanda amakhodi omthombo nezinye izilungiselelo. Asishiye izilungiselelo ngokuzenzakalelayo.
I-Toolchain - amathuluzi okwakha ngokwawo amisiwe lapha. Funda kabanzi mayelana naye.
Uhlobo lwe-Toolchain - uhlobo lochungechunge lwamathuluzi olusetshenzisiwe. Lokhu kungaba uchungechunge lwamathuluzi olwakhelwe ku-buildroot noma olwangaphandle (ungacacisa uhla lwemibhalo nalolo oseluvele lwakhiwe noma i-url ukuze ilandwe). Kunezinketho ezengeziwe zezakhiwo ezahlukene. Isibonelo, ngengalo ungavele ukhethe inguqulo ye-Linaro ye-toolchain yangaphandle.
C umtapo wezincwadi - ukukhethwa komtapo C. Ukusebenza kwalo lonke uhlelo kuncike kulokhu. Ngokuvamile, i-glibc isetshenziswa, esekela konke ukusebenza okungenzeka. Kodwa ingase ibe nkulu kakhulu kusistimu eshumekiwe, ngakho-ke i-uglibc noma i-musl kuvame ukukhethwa. Sizokhetha i-glibc (lokhu kuzodingeka kamuva ukuze usebenzise i-systemd).
Izihloko Ze-Kernel kanye Nochungechunge Lwezihloko Ze-Kernel Ngokwezifiso - kufanele lufane nenguqulo ye-kernel ezoba kusistimu ehlanganisiwe. Ngezihloko ze-kernel, ungaphinda ucacise indlela eya ku-tarball noma ku-git repository.
I-GCC COMPILER VERSIONS - khetha inguqulo yomhlanganisi ezosetshenziselwa ukwakha
Nika amandla ukusekelwa kwe-C++ - khetha ukwakha ngokusekelwa kwemitapo yolwazi ye-C++ ohlelweni. Lokhu kuzoba usizo kithi esikhathini esizayo.
Izinketho ezengeziwe ze-gcc - ungasetha izinketho ezengeziwe ze-compiler. Asiyidingi okwamanje.
Ukucushwa kwesistimu kukuvumela ukuthi usethe amapharamitha wesikhathi esizayo wesistimu edaliwe:
Amaphuzu amaningi acacile esihlokweni. Ake sinake amaphuzu alandelayo:
Indlela eya kumatafula abasebenzisi - ithebula elinabasebenzisi elizokwakhiwa (
Ifayela eliyisibonelo. Umsebenzisi uzokwakhiwa nomlawuli wephasiwedi, ngokuzenzakalelayo i-gid/uid, /bin/sh shell, umsebenzisi weqembu ozenzakalelayo, impande yelungu leqembu, phawula umsebenzisi we-Foo
[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt
user -1 user -1 =admin /home/user /bin/sh root Foo user
Izinkomba zembondela yesistimu yefayela yezimpande - uhla lwemibhalo olumbozwe ngaphezulu kwama-target-fs ahlanganisiwe. Yengeza amafayela amasha futhi imiselela akhona kakade.
Imibhalo yangokwezifiso okufanele isebenze ngaphambi kokudala izithombe zesistimu yefayela - Imibhalo esetshenziswa ngokushesha ngaphambi kokugoqa uhlelo lwefayela ezithombeni. Masishiye iskripthi singenalutho okwamanje.
Asiye esigabeni se-Kernel
Izilungiselelo ze-Kernel zisethwe lapha. I-kernel ngokwayo ilungiselelwe ngokwenza i-linux-menuconfig.
Ungasetha inguqulo ye-kernel ngezindlela ezahlukene: khetha kulezo ezinikeziwe, faka inguqulo mathupha, ucacise indawo yokugcina noma i-tarball eyenziwe ngomumo.
Ukucushwa kwe-Kernel - indlela eya ekucushweni kwe-kernel. Ungakhetha ukucushwa okuzenzakalelayo kwesakhiwo esikhethiwe noma i-defocnfig ku-Linux. Umthombo we-Linux uqukethe isethi ye-defconfigs yamasistimu okuqondiwe ahlukene. Ungayithola oyidingayo
Isigaba samaphakheji ethagethi ikuvumela ukuthi ukhethe ukuthi imaphi amaphakheji azofakwa kusistimu eyakhiwayo. Asiyishiye ingashintshile okwamanje. Sizongeza amaphakheji ethu kulolu hlu ngokuhamba kwesikhathi.
Izithombe zesistimu yefayela - uhlu lwezithombe zesistimu yefayela ezizoqoqwa. Engeza isithombe se-iso
Ama-Bootloader - ukukhethwa kwama-bootloader ozowaqoqa. Ake sikhethe i-isolinix
Ilungiselela i-Systemd
I-Systemd isiba enye yezinsika ze-Linux, kanye ne-kernel ne-glibc. Ngakho-ke, ngithuthele ukulungiselelwa kwayo entweni ehlukile.
Ilungiselelwe nge-make menuconfig, bese kuba amaphakheji aqondiwe → Amathuluzi esistimu → systemd. Lapha ungacacisa ukuthi yiziphi izinsiza ze-systemd ezizofakwa futhi ziqalwe lapho uhlelo luqala.
Ilondoloza ukucushwa kwesistimu
Sigcina lokhu kulungiselelwa nge-KConfig.
Bese ulondoloza i-defconfig yethu:
make savedefconfig
Ukucushwa kwe-Linux Kernel
Ukucushwa kwe-Linux kernel kucelwa ngomyalo olandelayo:
make linux-menuconfig
Ake sengeze usekelo lwekhadi levidiyo le-Virtualbox
Ake sengeze usekelo lokuhlanganisa lwe-Virtualbox Guest
Londoloza bese uphuma. KUBALULEKILE: ukucushwa kuzolondolozwa ku-output/build/linux-$version/config, kodwa hhayi ebhodini/my_x86_board/linux.config
Ngakho-ke, udinga ukukopisha ngokwenza ukulungiselelwa endaweni yokugcina:
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
Ngemva kwalokho sizokwenza ukuhlanganisa kabusha okuphelele kwalo lonke uhlelo. I-buildroot ayikwakhi kabusha osekwakhiwe, kufanele ucacise amaphakheji okwakhiwa kabusha. Ukuze ungachithi isikhathi nezinzwa, kulula ukwakha kabusha uhlelo oluncane ngokuphelele):
make clean;make
Lapho usuqedile ukwakha, vula i-VirtualBox (ehlolwe ezinguqulweni ezingu-5.2 no-6.0) iqala ku-CD.
Ukugijima kusuka ku-iso ehlanganisiwe:
Uhlu lwezinto ezisetshenzisiwe
- I-Buidroot manual
Source: www.habr.com