Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Ievads

Å ajā rakstu sērijā es vēlos apskatÄ«t buildroot izplatÄ«Å”anas veidoÅ”anas sistēmu un dalÄ«ties savā pieredzē tās pielāgoÅ”anā. BÅ«s praktiska pieredze nelielas OS izveidē ar grafisko interfeisu un minimālu funkcionalitāti.

Pirmkārt, nevajadzētu jaukt veidoÅ”anas sistēmu un izplatÄ«Å”anu. Buildroot var izveidot sistēmu no pakotņu kopas, kas tai tiek piedāvāta. Buildroot ir veidota uz makefailiem, un tāpēc tai ir milzÄ«gas pielāgoÅ”anas iespējas. Aizstāt pakotni ar citu versiju, pievienot savu pakotni, mainÄ«t pakotnes veidoÅ”anas noteikumus, pielāgot failu sistēmu pēc visu pakotņu instalÄ“Å”anas? buildroot to visu var izdarÄ«t.

Krievijā izmanto buildroot, bet, manuprāt, iesācējiem ir maz informācijas krievu valodā.

Darba mērÄ·is ir salikt izplatÄ«Å”anas komplektu ar tieÅ”raides lejupielādi, icewm interfeisu un pārlÅ«kprogrammu. MērÄ·a platforma ir virtualbox.

Kāpēc izveidot savu izplatÄ«Å”anu? Bieži vien ir nepiecieÅ”ama ierobežota funkcionalitāte ar ierobežotiem resursiem. Pat biežāk automatizācijā ir jāizveido programmaparatÅ«ra. Universāla izplatÄ«Å”anas pielāgoÅ”ana, iztÄ«rot nevajadzÄ«gās pakotnes un pārvērÅ”ot to par programmaparatÅ«ru, ir darbietilpÄ«gāka nekā jauna izplatÄ«Å”anas izveide. Gentoo lietoÅ”anai ir arÄ« savi ierobežojumi.

Buildroot sistēma ir ļoti jaudīga, taču tā jums neko nedos. Tas var tikai iespējot un automatizēt montāžas procesu.

AlternatÄ«vas veidoÅ”anas sistēmas (yocto, open build sistēma un citas) netiek ņemtas vērā un salÄ«dzinātas.

Kur to iegūt un kā sākt

Projekta mājas lapa - buildroot.org. Å eit varat lejupielādēt paÅ”reizējo versiju un izlasÄ«t rokasgrāmatu. Tur jÅ«s varat sazināties ar kopienu, ir kļūdu izsekotājs, pasta saraksti un irc kanāls.

Buildroot izmanto defconfigs bÅ«vējuma mērÄ·a panelim. Defconfig ir konfigurācijas fails, kurā tiek saglabātas tikai opcijas, kurām nav noklusējuma vērtÄ«bu. Tas ir viņŔ, kurÅ” nosaka, kas un kā tiks savākts. Å ajā gadÄ«jumā jÅ«s varat atseviŔķi konfigurēt busybox, linux-kernel, uglibc, u-boot un barebox bootloader konfigurācijas, taču tās visas tiks piesaistÄ«tas mērÄ·a platei.
Pēc lejupielādētā arhÄ«va izpakoÅ”anas vai klonÄ“Å”anas no git mēs iegÅ«stam lietoÅ”anai gatavu buildroot. Vairāk par direktoriju struktÅ«ru varat izlasÄ«t rokasgrāmatā, es pastāstÄ«Å”u par svarÄ«gākajiem:

valde ā€” direktoriju ar failiem, kas raksturÄ«gi katrai platei. Tie var bÅ«t skripti sistēmas attēlu veidoÅ”anai (iso, sdcart, cpio un citi), pārklājuma direktoriju, kodola konfigurāciju utt.
configs ā€” plates faktiskā defconfig. Defconfig ir nepilnÄ«ga plates konfigurācija. Tas saglabā tikai parametrus, kas atŔķiras no noklusējuma iestatÄ«jumiem
dl ā€” direktorijs ar lejupielādētajiem pirmkodiem/failiem montāžai
produkcija/mērÄ·is ā€” iegÅ«tās OS samontētā failu sistēma. Pēc tam no tā tiek izveidoti attēli lejupielādei/instalÄ“Å”anai
izvade/resursdators - resursdatora utilītas montāžai
izvadīt/būvēt - saliktas paketes

Montāža tiek konfigurēta, izmantojot KConfig. Tāda pati sistēma tiek izmantota, lai izveidotu Linux kodolu. Visbiežāk izmantoto komandu saraksts (izpildiet buildroot direktorijā):

  • make menuconfig ā€” izsauciet bÅ«vÄ“Å”anas konfigurāciju. Varat arÄ« izmantot grafisko interfeisu (make nconfig, make xconfig, make gconfig)
  • make linux-menuconfig - izsauciet kodola konfigurāciju.
  • padarÄ«t tÄ«ru ā€” notÄ«riet veidoÅ”anas rezultātus (visu, kas tiek saglabāts izvadē)
  • izveidot - izveidot sistēmu. Tas nesaliek no jauna jau samontētos procesus.
  • make defconfig_name ā€” pārslēdziet konfigurāciju uz konkrētu defconfig
  • make list-defconfigs - parādÄ«t defconfig sarakstu
  • izveidot avotu ā€” vienkārÅ”i lejupielādējiet instalācijas failus, neveidojot.
  • sniegt palÄ«dzÄ«bu - uzskaitÄ«t iespējamās komandas

Svarīgas piezīmes un noderīgi padomi

Buildroot nepārbÅ«vē jau uzbÅ«vētas paketes! Tāpēc var rasties situācija, kad nepiecieÅ”ama pilnÄ«ga montāža.

Ar komandu var atjaunot atseviŔķu pakotni veikt pakotnes nosaukumu-rebuild. Piemēram, varat atjaunot Linux kodolu:

make linux-rebuild

Buildroot saglabā jebkuras pakotnes stāvokli, izveidojot .stamp failus direktorijā output/build/$packagename:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Tāpēc jūs varat atjaunot root-fs un attēlus, nepārbūvējot pakotnes:

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

Noderīgi mainīgie

Buildroot ir mainīgo lielumu kopums, kas atvieglo konfigurēŔanu

  • $TOPDIR - buildroot direktorijs
  • $BASEDIR ā€” OUTPUT direktorijs
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR ā€” resursdatora fs, staging fs, mērÄ·a fs bÅ«vdirektoriji.
  • $BUILD_DIR ā€” direktorijs ar izpakotām un uzbÅ«vētām pakotnēm

Vizualizācija

Buildroot ir vizualizācijas līdzeklis. Galīgajā sistēmā varat izveidot atkarības diagrammu, izveides laika grafiku un pakotņu izmēru grafiku. Rezultāti ir pdf failu veidā (varat izvēlēties no svn, png) izvades/grafikas direktorijā.

Vizualizācijas komandu piemēri:

  • make graph-depends izveidot atkarÄ«bu koku
  • make <pkg>-graph-depends izveidojiet atkarÄ«bas koku konkrētai pakotnei
  • BR2_GRAPH_OUT=png make graph-build gabala veidoÅ”anas laiks ar PNG izvadi
  • make graph-size gabala paketes lielums

Noderīgi skripti

Buildroot direktorijā ir apakÅ”direktorijs utils ar noderÄ«giem skriptiem. Piemēram, ir skripts, kas pārbauda pakotņu aprakstu pareizÄ«bu. Tas var bÅ«t noderÄ«gi, pievienojot savas pakotnes (to izdarÄ«Å”u vēlāk). Fails utils/readme.txt satur Å”o skriptu aprakstu.

Veidosim akciju sadalījumu

Ir svarīgi atcerēties, ka visas darbības tiek veiktas parasta lietotāja, nevis root vārdā.
Visas komandas tiek izpildītas buildroot. Buildroot pakotnē jau ir iekļauta konfigurāciju kopa daudzām izplatītākajām platēm un virtualizācijai.

Apskatīsim konfigurāciju sarakstu:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Pārslēdzieties uz qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Un mēs sākam montāžu

make

Būvniecība ir veiksmīgi pabeigta, skatiet rezultātus:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Buildroot ir apkopojis attēlus, kurus varat palaist programmā Qemu un pārbaudīt, vai tie darbojas.

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

Rezultāts ir sistēma, kas darbojas qemu:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Izveidojiet savu dēļa konfigurāciju

Dēļa failu pievienoÅ”ana

Apskatīsim konfigurāciju sarakstu:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Sarakstā mēs redzam pc_x86_64_efi_defconfig. Mēs izveidosim savu dēli, kopējot to no konfigurācijas:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Nekavējoties izveidosim dēļa direktoriju, kurā glabāsim mÅ«su skriptus, rootfs-overlay un citus nepiecieÅ”amos failus:

mkdir board/my_x86_board

Pārslēdzieties uz Å”o defconfig:

make my_x86_board_defconfig

Tādējādi tagad bÅ«vÄ“Å”anas konfigurācija (kas tiek saglabāta .config failā buildroot direktorija saknē) atbilst x86-64 mantotā(bios) sāknÄ“Å”anas mērÄ·a maŔīnai.

Kopēsim Linux kodola konfigurāciju (noderīga vēlāk):

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

BūvēŔanas parametru iestatīŔana, izmantojot KConfig

Sāksim iestatīŔanu:

make menuconfig 

Tiks atvērts KConfig logs. Ir iespējams konfigurēt ar grafisko interfeisu (make nconfig, make xconfig, make gconfig):

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Mēs ieejam pirmajā sadaļā MērÄ·a opcijas. Å eit jÅ«s varat izvēlēties mērÄ·a arhitektÅ«ru, kurai tiks veikta bÅ«vÄ“Å”ana.

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

BÅ«vÄ“Å”anas opcijas ā€” Å”eit ir pieejami dažādi bÅ«vÄ“Å”anas iestatÄ«jumi. Varat norādÄ«t direktorijus ar avota kodiem, veidoÅ”anas pavedienu skaitu, spoguļus avota kodu lejupielādei un citus iestatÄ«jumus. Atstāsim iestatÄ«jumus pēc noklusējuma.

RÄ«ku ķēde ā€” Å”eit ir konfigurēti paÅ”i veidoÅ”anas rÄ«ki. Lasiet vairāk par viņu.

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Toolchain tips ā€“ izmantotās instrumentu ķēdes veids. Tā var bÅ«t rÄ«kķēde, kas iebÅ«vēta buildroot vai ārēja (varat norādÄ«t direktoriju ar jau izveidoto vai lejupielādes URL). Dažādām arhitektÅ«rām ir papildu iespējas. Piemēram, arm varat vienkārÅ”i atlasÄ«t ārējās rÄ«ku ķēdes Linaro versiju.

C bibliotēka ā€“ C bibliotēkas izvēle, no kuras ir atkarÄ«ga visas sistēmas darbÄ«ba. Parasti tiek izmantots glibc, kas atbalsta visas iespējamās funkcionalitātes. Bet tas var bÅ«t pārāk liels iegultai sistēmai, tāpēc bieži tiek izvēlēts uglibc vai musl. Mēs atlasÄ«sim glibc (tas bÅ«s nepiecieÅ”ams vēlāk, lai izmantotu systemd).

Kodola galvenes un pielāgotas kodola galvenes ā€” jāatbilst kodola versijai, kas bÅ«s samontētajā sistēmā. Kodola galvenēm varat arÄ« norādÄ«t ceļu uz tarball vai git repozitoriju.

GCC COMPILER VERSIONS ā€“ atlasiet kompilatora versiju, kas tiks izmantota veidoÅ”anai
Iespējot C++ atbalstu ā€” atlasiet, lai izveidotu ar atbalstu C++ bibliotēkām sistēmā. Tas mums noderēs nākotnē.

Papildu gcc opcijas ā€” varat iestatÄ«t papildu kompilatora opcijas. Pagaidām mums tas nav vajadzÄ«gs.

Sistēmas konfigurācija ļauj iestatīt izveidotās sistēmas turpmākos parametrus:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Lielākā daļa punktu ir skaidri no virsraksta. PievērsÄ«sim uzmanÄ«bu Ŕādiem punktiem:
CeļŔ uz lietotāju tabulām - tabula ar lietotājiem, kas jāizveido (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Piemēra fails. Lietotāja lietotājs tiks izveidots ar paroli admin, automātiski gid/uid, /bin/sh apvalks, noklusējuma grupas lietotājs, grupas dalībnieka sakne, komentāru Foo lietotājs

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

Saknes failu sistēmas pārklājuma direktoriji - direktorijs, kas pārklāts virs samontētā mērÄ·a-fs. Pievieno jaunus failus un aizstāj esoÅ”os.

Pielāgoti skripti, kas jāpalaiž pirms failu sistēmas attēlu izveides ā€” skripti, kas tiek izpildÄ«ti tieÅ”i pirms failu sistēmas locÄ«Å”anas attēlos. Atstāsim skriptu pagaidām tukÅ”u.

Dosimies uz sadaļu Kodols

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Šeit tiek iestatīti kodola iestatījumi. Pats kodols ir konfigurēts, izmantojot make linux-menuconfig.
Kodola versiju var iestatīt dažādos veidos: izvēlieties no piedāvātajiem, ievadiet versiju manuāli, norādiet repozitoriju vai gatavu tarbolu.

Kodola konfigurācija ā€” ceļŔ uz kodola konfigurāciju. Varat atlasÄ«t noklusējuma konfigurāciju atlasÄ«tajai arhitektÅ«rai vai defocnfig no Linux. Linux avots satur defconfigu komplektu dažādām mērÄ·a sistēmām. JÅ«s varat atrast to, kas jums nepiecieÅ”ams apskatot tieÅ”i Å”eit esoÅ”os avotus. Piemēram, bÄ«gla kaula melnajam dēlim jÅ«s varat atlasiet konfigurāciju.

Sadaļā MērÄ·a pakotnes varat izvēlēties, kuras pakotnes tiks instalētas veidotajā sistēmā. Pagaidām atstāsim to nemainÄ«gu. Mēs pievienosim savas pakas Å”im sarakstam vēlāk.
Failu sistēmas attēli ā€” to failu sistēmas attēlu saraksts, kas tiks apkopoti. Pievienojiet ISO attēlu

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Bootloaders - sāknÄ“Å”anas ielādētāju izvēle, ko savākt. Izvēlēsimies Isolinix

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Systemd konfigurēŔana

Systemd kļūst par vienu no Linux pÄ«lāriem kopā ar kodolu un glibc. Tāpēc es pārvietoju tā iestatÄ«jumu uz atseviŔķu vienumu.

Konfigurēts, izmantojot make menuconfig, pēc tam MērÄ·a pakotnes ā†’ Sistēmas rÄ«ki ā†’ systemd. Å eit jÅ«s varat norādÄ«t, kuri systemd pakalpojumi tiks instalēti un sākti, sistēmai startējot.

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Sistēmas konfigurācijas saglabāŔana

Mēs saglabājam Å”o konfigurāciju, izmantojot KConfig.

Pēc tam saglabājiet mūsu defconfig:

make savedefconfig

Linux kodola konfigurācija

Linux kodola konfigurācija tiek izsaukta ar Ŕādu komandu:

make linux-menuconfig

Pievienosim atbalstu Virtualbox videokartei

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Pievienosim Virtualbox Guest integrācijas atbalstu

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Saglabājiet un izejiet. SVARÄŖGI: konfigurācija tiks saglabāta mapē output/build/linux-$version/config, bet ne board/my_x86_board/linux.config.

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Tādēļ jums manuāli jākopē konfigurācija uz krātuves vietu:

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

Pēc tam mēs veiksim pilnīgu visas sistēmas montāžu. buildroot nepārbūvē to, kas jau ir uzbūvēts, pārbūvei ir manuāli jānorāda pakotnes. Lai netērētu laiku un nervus, mazu sistēmu ir vieglāk pilnībā atjaunot):

make clean;make

Pēc bÅ«vÄ“Å”anas pabeigÅ”anas palaidiet VirtualBox (pārbaudÄ«ts versijās 5.2 un 6.0), kas tiek palaists no kompaktdiska. Sistēmas parametri:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Darbojas no samontētā iso:

Buildroot - 1.daļa. VispārÄ«ga informācija, minimālas sistēmas salikÅ”ana, konfigurÄ“Å”ana caur izvēlni

Izmantoto materiālu saraksts

  1. Buildroot rokasgrāmata

Avots: www.habr.com

Pievieno komentāru