Inngangur
Í þessari greinaröð vil ég skoða byggingarkerfið fyrir dreifingu byggðarrótar og deila reynslu minni af að sérsníða það. Það verður hagnýt reynsla í að búa til lítið stýrikerfi með grafísku viðmóti og lágmarks virkni.
Í fyrsta lagi ættirðu ekki að rugla saman byggingarkerfinu og dreifingunni. Buildroot getur byggt upp kerfi úr setti pakka sem því er boðið upp á. Buildroot er byggt á makefile og hefur því gríðarlega aðlögunarmöguleika. Skipta út pakka fyrir aðra útgáfu, bæta við eigin pakka, breyta reglum um að búa til pakka, sérsníða skráarkerfið eftir að hafa sett upp alla pakka? buildroot getur gert þetta allt.
Í Rússlandi er buildroot notað, en að mínu mati er lítið um rússnesku upplýsingar fyrir byrjendur.
Markmið verksins er að setja saman dreifisett með lifandi niðurhali, icewm viðmóti og vafra. Markvettvangurinn er virtualbox.
Af hverju að byggja upp þína eigin dreifingu? Oft þarf takmarkaða virkni með takmörkuðu fjármagni. Jafnvel oftar í sjálfvirkni þarftu að búa til fastbúnað. Að aðlaga almenna dreifingu með því að hreinsa út óþarfa pakka og breyta því í fastbúnað er vinnufrekara en að byggja nýja dreifingu. Notkun Gentoo hefur líka sínar takmarkanir.
Buildroot kerfið er mjög öflugt, en það mun ekki gera neitt fyrir þig. Það getur aðeins virkjað og sjálfvirkt samsetningarferlið.
Önnur byggingarkerfi (yocto, opið byggingarkerfi og önnur) eru ekki tekin til greina eða borin saman.
Hvar á að fá það og hvernig á að byrja
Heimasíða verkefnisins -
Buildroot rekur defconfigs fyrir markborð byggingunnar. Defconfig er stillingarskrá sem geymir aðeins valkosti sem eru ekki með sjálfgefin gildi. Það er hann sem ákveður hverju verður safnað og hvernig. Í þessu tilviki geturðu sérstaklega stillt stillingar busybox, linux-kjarna, uglibc, u-boot og barebox ræsiforritara, en þær verða allar tengdar við miðborðið.
Eftir að hafa pakkað niður skjalasafninu eða klónun úr git fáum við byggingarrót sem er tilbúinn til notkunar. Þú getur lesið meira um möppuuppbygginguna í handbókinni; Ég skal segja þér frá þeim mikilvægustu:
Stjórn - möppu með skrám sem eru sértækar fyrir hvert borð. Þetta geta verið forskriftir til að mynda kerfismyndir (iso, sdcart, cpio og fleiri), yfirlagsskrá, kjarnastillingar o.s.frv.
stillingar - raunveruleg defconfig stjórnarinnar. Defconfig er ófullkomin töfluuppsetning. Það geymir aðeins færibreytur sem eru frábrugðnar sjálfgefnum stillingum
dl — möppu með niðurhaluðum frumkóðum/skrám til samsetningar
framleiðsla/markmið — samsetta skráarkerfi stýrikerfisins sem myndast. Í kjölfarið eru búnar til myndir úr því til niðurhals/uppsetningar
úttak/gestgjafi - hýsingartæki fyrir samsetningu
framleiðsla/bygging - samansettar pakkar
Samsetningin er stillt í gegnum KConfig. Sama kerfi er notað til að byggja upp Linux kjarnann. Listi yfir algengustu skipanirnar (framkvæma í buildroot möppunni):
- búa til menuconfig - hringdu í byggingarstillinguna. Þú getur líka notað grafíska viðmótið (búa til nconfig, búa til xconfig, búa til gconfig)
- búa til linux-menuconfig - hringdu í kjarnastillinguna.
- gera hreint - hreinsaðu byggingarniðurstöðurnar (allt sem er geymt í úttakinu)
- búa til - byggja upp kerfi. Þetta setur ekki saman ferla sem þegar eru samsettir aftur.
- gera defconfig_name - skiptu stillingunni yfir í ákveðna defconfig
- gera list-defconfigs - sýna lista yfir defconfigs
- búa til heimild - bara hlaða niður uppsetningarskránum, án þess að byggja.
- búa til hjálp - skráðu mögulegar skipanir
Mikilvægar athugasemdir og gagnlegar ábendingar
Buildroot endurbyggir ekki pakka sem þegar hafa verið smíðaðir! Þess vegna geta komið upp aðstæður þar sem þörf er á algjörri samsetningu.
Þú getur endurbyggt sérstakan pakka með skipuninni gera packagename-rebuild. Til dæmis geturðu endurbyggt Linux kjarnann:
make linux-rebuild
Buildroot geymir ástand hvers pakka með því að búa til .stamp skrár í output/build/$packagename möppunni:
Þess vegna geturðu endurbyggt root-fs og myndir án þess að endurbyggja pakka:
rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
Gagnlegar breytur
buildroot hefur sett af breytum til að auðvelda uppsetningu
- $TOPDIR - byggingarrótarskrá
- $BASEDIR - OUTPUT skrá
- $HOST_DIR, $STAGING_DIR, $TARGET_DIR — gestgjafi fs, sviðsetning fs, miða fs byggja möppur.
- $BUILD_DIR - möppu með útpökkuðum og byggðum pökkum
Sjónræn
buildroot er með myndunareiginleika. Þú getur smíðað skýringarmynd fyrir ósjálfstæði, byggingartímagraf og línurit yfir pakkastærðir í lokakerfinu. Niðurstöðurnar eru í formi pdf skráa (þú getur valið úr svn,png) í úttaks/grafasafninu.
Dæmi um sjónrænar skipanir:
make graph-depends
byggja ávanatrémake <pkg>-graph-depends
byggja upp ávanatré fyrir ákveðinn pakkaBR2_GRAPH_OUT=png make graph-build
byggingartími samsæris með PNG úttakmake graph-size
lóð pakkastærð
Gagnlegar forskriftir
Það er undirskrá í buildroot möppunni tól með gagnlegum skriftum. Til dæmis er til forskrift sem athugar réttmæti pakkalýsinga. Þetta gæti verið gagnlegt þegar þú bætir við þínum eigin pökkum (ég geri þetta síðar). Skráin utils/readme.txt inniheldur lýsingu á þessum skriftum.
Byggjum upp hlutabréfadreifingu
Það er mikilvægt að muna að allar aðgerðir eru gerðar fyrir hönd venjulegs notanda, ekki rótar.
Allar skipanir eru keyrðar í byggingarrótinni. Byggingarrótarpakkinn inniheldur nú þegar sett af stillingum fyrir mörg algeng töflur og sýndarvæðingu.
Við skulum skoða listann yfir stillingar:
Skiptu yfir í qemu_x86_64_defconfig stillingar
make qemu_x86_64_defconfig
Og við byrjum þingið
make
Smíðin lýkur með góðum árangri, skoðaðu niðurstöðurnar:
Buildroot hefur tekið saman myndir sem þú getur keyrt í Qemu og staðfest að þær virki.
qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
Niðurstaðan er kerfi sem keyrir í qemu:
Að búa til þína eigin borðstillingu
Bætir við borðskrám
Við skulum skoða listann yfir stillingar:
Á listanum sjáum við pc_x86_64_efi_defconfig. Við munum búa til okkar eigið borð með því að afrita það úr uppsetningunni:
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
Búum strax til borðskrá til að geyma forskriftir okkar, rootfs-yfirlag og aðrar nauðsynlegar skrár:
mkdir board/my_x86_board
Skiptu yfir í þessa defconfig:
make my_x86_board_defconfig
Þannig, núna samsvarar build config (geymd í .config í rót buildroot möppunnar) x86-64 arfleifð(bios) ræsimarkvélinni.
Við skulum afrita linux-kjarna stillingar (gagnlegar síðar):
cp board/pc/linux.config board/my_x86_board/
Stilla byggingarfæribreytur í gegnum KConfig
Byrjum á uppsetningunni:
make menuconfig
KConfig glugginn opnast. Það er hægt að stilla með grafísku viðmóti (gera nconfig, búa til xconfig, búa til gconfig):
Við förum inn í fyrsta hlutann Target Options. Hér getur þú valið markarkitektúr sem byggingin verður framkvæmd fyrir.
Byggingarvalkostir - það eru ýmsar byggingarstillingar hér. Þú getur tilgreint möppur með frumkóðum, fjölda byggingarþráða, spegla til að hlaða niður frumkóðum og aðrar stillingar. Við skulum láta stillingarnar vera sjálfgefnar.
Verkfærakeðja – byggingarverkfærin sjálf eru stillt hér. Lestu meira um hann.
Gerð verkfærakeðju – gerð verkfærakeðju sem notuð er. Þetta getur verið verkfærakeðja sem er innbyggð í buildroot eða ytri (þú getur tilgreint möppuna með þeirri sem þegar er byggð eða slóðina til að hlaða niður). Það eru fleiri valkostir fyrir mismunandi arkitektúr. Til dæmis, fyrir arm geturðu einfaldlega valið Linaro útgáfuna af ytri verkfærakeðjunni.
C bókasafn – val á bókasafni C. Rekstur alls kerfisins fer eftir því. Venjulega er glibc notað, sem styður alla mögulega virkni. En það gæti verið of stórt fyrir innbyggt kerfi, svo uglibc eða musl eru oft valin. Við munum velja glibc (þetta verður krafist síðar til að nota systemd).
Kernel Headers og Custom Kernel Headers röð – verða að passa við útgáfu kjarnans sem verður í samsettu kerfinu. Fyrir kjarnahausa geturðu líka tilgreint slóðina að tarball eða git geymslunni.
GCC COMPILER VERSIONS - veldu þýðandaútgáfuna sem á að nota til að byggja
Virkja C++ stuðning – veldu að byggja með stuðningi fyrir C++ bókasöfn í kerfinu. Þetta mun nýtast okkur í framtíðinni.
Viðbótar gcc valkostir - þú getur stillt fleiri þýðanda valkosti. Við þurfum þess ekki í bili.
Kerfisstilling gerir þér kleift að stilla framtíðarfæribreytur fyrir búið kerfi:
Flest atriðin eru skýr af titlinum. Við skulum gefa gaum að eftirfarandi atriðum:
Slóð að notendatöflunum - tafla með notendum sem á að búa til (
Dæmi um skrá. Notandinn verður búinn til með lykilorðinu admin, sjálfkrafa gid/uid, /bin/sh skel, sjálfgefinn hópnotandi, rót hópmeðlima, athugasemd Foo notandi
[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt
user -1 user -1 =admin /home/user /bin/sh root Foo user
Yfirlagsmöppur rótarskráakerfis - skrá sem er lögð ofan á samansetta target-fs. Bætir við nýjum skrám og kemur í stað núverandi.
Sérsniðin forskrift til að keyra áður en skráarkerfismyndir eru búnar til - Forskriftir keyrðar strax áður en skráarkerfið er brotið saman í myndir. Við skulum skilja handritið eftir tómt í bili.
Við skulum fara í kjarnahlutann
Kjarnastillingar eru stilltar hér. Kjarninn sjálfur er stilltur með make linux-menuconfig.
Þú getur stillt kjarnaútgáfuna á mismunandi vegu: veldu úr þeim sem boðið er upp á, sláðu inn útgáfuna handvirkt, tilgreindu geymslu eða tilbúna tarball.
Kernel configuration — slóð að kjarnastillingu. Þú getur valið sjálfgefna stillingu fyrir valda arkitektúr eða defocnfig frá Linux. Linux heimildin inniheldur sett af defconfigs fyrir mismunandi markkerfi. Þú getur fundið þann sem þú þarft
Markpakkahlutinn gerir þér kleift að velja hvaða pakkar verða settir upp á kerfinu sem verið er að smíða. Við skulum láta það óbreytt í bili. Við munum bæta pökkunum okkar á þennan lista síðar.
Skráarkerfismyndir - listi yfir skráarkerfismyndir sem verður safnað. Bættu við iso mynd
Bootloaders - úrval af bootloaders til að safna. Við skulum velja isolinix
Stillir Systemd
Systemd er að verða ein af stoðum Linux, ásamt kjarna og glibc. Þess vegna færði ég stillingu þess í sérstakt atriði.
Stillt með make menuconfig, síðan Target pakka → Kerfisverkfæri → systemd. Hér getur þú tilgreint hvaða kerfisþjónustur verða settar upp og ræstar þegar kerfið fer í gang.
Vistar kerfisstillingar
Við vistum þessa stillingu í gegnum KConfig.
Vistaðu síðan defconfig okkar:
make savedefconfig
Linux kjarnastillingar
Linux kjarnastillingin er kölluð með eftirfarandi skipun:
make linux-menuconfig
Við skulum bæta við stuðningi fyrir Virtualbox skjákortið
Bætum við Virtualbox Guest samþættingarstuðningi
Vista og hætta. MIKILVÆGT: stillingar verða vistaðar í output/build/linux-$version/config, en ekki í board/my_x86_board/linux.config
Þess vegna þarftu að afrita stillinguna handvirkt á geymslustað:
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
Eftir það munum við framkvæma fullkomna samsetningu á öllu kerfinu. buildroot endurbyggir ekki það sem þegar hefur verið byggt, þú verður að tilgreina handvirkt pakka fyrir endurbyggingu. Til þess að eyða ekki tíma og taugum er auðveldara að endurbyggja lítið kerfi algjörlega):
make clean;make
Þegar smíði er lokið skaltu ræsa VirtualBox (prófað í útgáfum 5.2 og 6.0) og ræsa af geisladisknum. Kerfisbreytur:
Keyrir frá samsettum iso:
Listi yfir efni sem notuð eru
- Buildroot handbók
Heimild: www.habr.com