Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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.org. Hér getur þú hlaðið niður núverandi útgáfu og lesið handbókina. Þar er hægt að hafa samband við samfélagið, það er villuleit, póstlistar og irc rás.

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:

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Þ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 pakka
  • BR2_GRAPH_OUT=png make graph-build byggingartími samsæris með PNG úttak
  • make 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:

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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 - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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:

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Að búa til þína eigin borðstillingu

Bætir við borðskrám

Við skulum skoða listann yfir stillingar:

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Við förum inn í fyrsta hlutann Target Options. Hér getur þú valið markarkitektúr sem byggingin verður framkvæmd fyrir.

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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.

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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:

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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 (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

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

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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 með því að horfa beint á heimildir hér. Til dæmis, fyrir Beagle bein svart borð sem þú getur veldu stillingar.

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

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Bootloaders - úrval af bootloaders til að safna. Við skulum velja isolinix

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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.

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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ð

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Bætum við Virtualbox Guest samþættingarstuðningi

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Vista og hætta. MIKILVÆGT: stillingar verða vistaðar í output/build/linux-$version/config, en ekki í board/my_x86_board/linux.config

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

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

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Keyrir frá samsettum iso:

Buildroot - hluti 1. Almennar upplýsingar, samsetning lágmarkskerfis, stillingar í gegnum valmyndina

Listi yfir efni sem notuð eru

  1. Buildroot handbók

Heimild: www.habr.com

Bæta við athugasemd