I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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 - buildroot.org. Lapha ungalanda inguqulo yamanje futhi ufunde imanuwali. Lapho ungathintana nomphakathi, kune-tracker yeziphazamisi, izinhlu zemeyili kanye nesiteshi se-irc.

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:

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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 wokuncika
  • make <pkg>-graph-depends yakha isihlahla sokuncika sephakheji elithile
  • BR2_GRAPH_OUT=png make graph-build isikhathi sokwakha isakhiwo ngokukhipha kwe-PNG
  • make 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:

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Shintshela ku-qemu_x86_64_defconfig

make qemu_x86_64_defconfig

Futhi siqala umhlangano

make

Ukwakhiwa kuqeda ngempumelelo, bheka imiphumela:

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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:

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Ukwakha okwakho ukucushwa kwebhodi

Ukwengeza Amafayela Ebhodi

Ake sibheke uhlu lokucushwa:

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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):

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Sifaka Izinketho zethagethi esigabeni sokuqala. Lapha ungakhetha ukwakheka okuhlosiwe okuzokwenziwa ngakho ukwakha.

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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.

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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:

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Amaphuzu amaningi acacile esihlokweni. Ake sinake amaphuzu alandelayo:
Indlela eya kumatafula abasebenzisi - ithebula elinabasebenzisi elizokwakhiwa (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

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

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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 ngokubheka ngqo imithombo lapha. Isibonelo, ngebhodi elimnyama le-beagle ungakwazi khetha config.

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

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Ama-Bootloader - ukukhethwa kwama-bootloader ozowaqoqa. Ake sikhethe i-isolinix

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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.

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Ake sengeze usekelo lokuhlanganisa lwe-Virtualbox Guest

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Londoloza bese uphuma. KUBALULEKILE: ukucushwa kuzolondolozwa ku-output/build/linux-$version/config, kodwa hhayi ebhodini/my_x86_board/linux.config

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

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.

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Ukugijima kusuka ku-iso ehlanganisiwe:

I-Buildroot - ingxenye 1. Ulwazi olujwayelekile, ukuhlanganisa uhlelo oluncane, ukucushwa ngemenyu

Uhlu lwezinto ezisetshenzisiwe

  1. I-Buidroot manual

Source: www.habr.com

Engeza amazwana