Horudhac
Maqaalladan taxanaha ah, waxaan rabaa inaan eego nidaamka dhisidda qaybinta dhisidda oo aan la wadaago waayo-aragnimadayda habaynta. Waxaa jiri doona waayo-aragnimo wax ku ool ah oo lagu abuurayo OS yar oo leh is-dhexgal garaafeed iyo shaqeyn yar.
Marka hore, waa inaadan isku khaldin nidaamka dhismaha iyo qaybinta. Buildroot waxay ka dhisi kartaa nidaam xirmo xirmo ah oo loo soo bandhigay. Buildroot wuxuu ku dhisan yahay makefiles oo sidaas darteed wuxuu leeyahay awoodo wax-ka-beddelid aad u weyn. Ku beddel xirmo nooc kale, ku dar xirmo adiga kuu gaar ah, beddel xeerarka dhismaha xirmo, habbee nidaamka file ka dib markii la rakibo dhammaan baakooyinka? buildroot ayaa samayn kara waxaas oo dhan.
Ruushka, dhisme root ayaa loo isticmaalaa, laakiin fikradayda waxaa jira macluumaad yar oo Ruush ah oo loogu talagalay bilawga.
Hadafka shaqadu waa in la isu keeno qalab qaybinta oo leh soo dejin toos ah, interface icewm iyo browser. Goobta la beegsanayo waa sanduuqa 'virtualbox'.
Maxaad u dhistaa qaybintaada? Badana shaqeyn xaddidan ayaa loo baahan yahay iyada oo la adeegsanayo kheyraad xaddidan. Xitaa marar badan si otomaatig ah waxaad u baahan tahay inaad abuurto firmware. La qabsiga qaybinta ujeedo-guud iyadoo la nadiifinayo baakadaha aan loo baahnayn oo loo beddelayo firmware-ka ayaa aad uga hawl-badan dhismaha qaybin cusub. Isticmaalka Gentoo sidoo kale waxay leedahay xaddidaaddeeda.
Nidaamka Buildroot aad buu u xoog badan yahay, laakiin waxba kuu tari maayo. Waxa kaliya oo ay awood u siin kartaa oo otomaatig u noqon kartaa habka isu-ururinta.
Nidaamyada dhisidda beddelka ah (yocto, nidaamka dhisidda furan iyo kuwa kale) lama tixgeliyo lamana barbar dhigo.
Halkee laga helaa iyo sida loo bilaabo
Mareegta mashruuca -
Buildroot waxay u shaqeysaa defconfigs-ka loox bartilmaameedka ah ee dhismaha. Defconfig waa faylka qaabeynta ee kaydiya xulashooyinka kaliya ee aan lahayn qiyamka caadiga ah. Waa isaga kan go'aamiya waxa la ururinayo iyo sida loo ururinayo. Xaaladdan oo kale, waxaad si gooni gooni ah u habeyn kartaa qaababka busybox, linux-kernel, uglibc, u-boot iyo bootloaders, laakiin dhammaantood waxay ku xirnaan doonaan guddiga bartilmaameedka.
Ka dib markii aan xirxirno kaydka la soo dejiyey ama cloning ka git, waxaan helnaa dhismo diyaar u ah in la isticmaalo. Waxaad ka akhrisan kartaa wax badan oo ku saabsan qaab-dhismeedka hagaha buug-gacmeedka; Waxaan kuu sheegi doonaa kuwa ugu muhiimsan:
guddiga - tusaha leh galal u gaar ah guddi kasta. Kuwani waxay noqon karaan qoraallo loogu talagalay samaynta sawirada nidaamka (iso, sdcart, cpio iyo kuwa kale), hagaha dusha sare leh, habaynta kernel, iwm.
khariidadaha - defconfig dhabta ah ee guddiga. Defconfig waa qaabaynta guddiga aan dhamaystirnayn. Waxa ay kaydisaa oo keliya cabbirro ka duwan goobaha caadiga ah
dl - tusaha leh koodhadhka isha la soo dejiyay/faylalka isu imaatinka
wax soo saarka/ bartilmaameedka - nidaamka faylka la isku daray ee OS ka soo baxay. Ka dib, sawiro ayaa laga abuuray si loo soo dejiyo / loo rakibo
wax soo saarka/martigeliyaha - qalabyada martida loo yahay ee shirarka
wax soo saarka/dhisidda - baakado la soo ururiyey
Kulanka waxaa lagu habeeyey iyada oo loo marayo KConfig. Nidaam isku mid ah ayaa loo isticmaalaa in lagu dhiso kernel Linux. Liiska amarrada inta badan la isticmaalo (ku ful tusaha tusaha root root):
- samee menuconfig - wac qaabeynta dhismaha. Waxa kale oo aad isticmaali kartaa is-dhexgalka garaafyada (samee nconfig, samee xconfig, samee gconfig)
- samee linux-menuconfig - wac qaabeynta kernel.
- nadiifi - nadiifi natiijooyinka dhismaha (wax kasta oo lagu kaydiyo wax soo saarka)
- samee - dhis nidaam. Tani dib isuma uruurinayso habab horeba la isugu keenay.
- samee defconfig_name - u beddel qaabeynta defconfig gaar ah
- same list-defconfigs - tus liiska defconfigs
- samee isha - kaliya soo deji faylalka rakibaadda, iyada oo aan la dhisin.
- caawimo samee - tax amarrada suurtogalka ah
Qoraalo muhim ah iyo talooyin waxtar leh
Buildroot dib uma dhiso baakadaha horay loo dhisay! Sidaa darteed, xaalad ayaa iman karta marka dib-u-ururin buuxda loo baahan yahay.
Waxaad dib u dhisi kartaa xirmo gaar ah amarka magaca xirmo-dib u dhis. Tusaale ahaan, waxaad dib u dhisi kartaa kernel Linux:
make linux-rebuild
Buildroot waxa uu kaydiyaa xaalada xirmo kasta isaga oo ku abuuraya .stamp files ee soo saarida/dhisidda/$aagga magaca xirmada:
Sidaa darteed, waxaad dib u dhisi kartaa root-fs iyo sawirada adigoon dib u dhisin baakadaha:
rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
Kala duwanaansho waxtar leh
buildroot waxay leedahay doorsoomayaal kala duwan oo loogu talagalay qaabeynta fudud
- $TOPDIR - hagaha dhismaha
- $BASEDIR - Tusaha wax soo saarka
- $HOST_DIR , $STAGING_DIR , $TARGET_DIR — martigeliyaha fs, habaynta fs, yoolka fs dhisidda hagaha.
- $BUILD_DIR - tusaha leh baakado aan la xidhin oo la dhisay
Muujinta
buildroot waxa uu leeyahay sifo muuqaal ah.Waxaad dhisi kartaa jaantus ku tiirsanaan, garaaf wakhti dhis ah, iyo garaaf cabirka xirmada nidaamka ugu dambeeya. Natiijooyinku waa qaab faylal pdf ah (waxaad ka dooran kartaa svn,png) ee hagaha wax soo saarka/garaafka.
Tusaalooyinka amarrada aragga:
make graph-depends
dhisa geed ku tiirsanaantamake <pkg>-graph-depends
dhis geed ku tiirsanaanta xirmo gaar ahBR2_GRAPH_OUT=png make graph-build
waqti dhismo goob oo leh wax soo saarka PNGmake graph-size
cabbirka baakadka goobta
Qoraallada waxtarka leh
Waxa jira hage-hoosaad ku jira hagaha Buildroot agabka oo leh qoraallo waxtar leh. Tusaale ahaan, waxaa jira qoraal hubinaya saxnaanta sharraxaadda xirmada. Tani waxay noqon kartaa mid faa'iido leh markaad ku darayso baakadahaaga (tan mar dambe ayaan samayn doonaa). Faylka utils/readme.txt wuxuu ka kooban yahay sharraxaad qoraalladan.
Aan dhisno saami qaybin
Waxaa muhiim ah in la xasuusto in dhammaan hawlgallada lagu fuliyo magaca isticmaalaha caadiga ah, ma aha xidid.
Dhammaan amarrada waxaa lagu fuliyay dhisidda rootiga. Xirmada buildroot waxay horeba ugu jirtay qaabaynta looxyo badan oo caadi ah iyo qaabaynta.
Aynu eegno liiska habaynta:
U beddel qemu_x86_64_defconfig config
make qemu_x86_64_defconfig
Waxaanan bilaabaynaa shirka
make
Dhismihiisu si guul leh ayuu u dhammaaday, eeg natiijooyinka:
Buildroot waxa ay soo ururisay sawiro aad ku dhex socon karto Qemu oo aad xaqiijiso in ay shaqeeyaan.
qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
Natiijadu waa nidaam ku socda qemu:
Abuuritaanka qaabaynta guddigaaga
Ku darida faylalka guddiga
Aynu eegno liiska habaynta:
Liiska waxaan ku aragnaa pc_x86_64_efi_defconfig. Waxaan samayn doonaa guddi noo gaar ah annagoo ka koobiyayna qaabeynta:
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
Aynu isla markiiba samayno hagaha guddiga si aanu u kaydino qoraaladayada, rootfs-overlay iyo faylasha kale ee lagama maarmaanka ah:
mkdir board/my_x86_board
U beddel defconfig kan:
make my_x86_board_defconfig
Sidaa darteed, hadda qaabeynta dhismaha (ku kaydsan .config ee xididka tusaha dhismaha) waxay u dhigantaa x86-64 dhaxalka (bios) mashiinka bartilmaameedka boot.
Aan koobiyeyno qaabeynta Linux-kernel (ka dib faa'iido leh):
cp board/pc/linux.config board/my_x86_board/
Dejinta xuduudaha dhismaha iyada oo loo marayo KConfig
Aan bilowno habaynta:
make menuconfig
Daaqada KConfig ayaa furmi doonta. Waa suurtagal in lagu habeeyo is-dhexgal garaaf ah (samee nconfig, samee xconfig, samee gconfig):
Waxaan galeynaa qaybta koowaad ee Xulashada Target. Halkan waxa aad ka dooran kartaa qaab-dhismeedka bartilmaameedka kaas oo dhismaha loo fulin doono.
Dhis doorashooyin - halkan waxaa jira goobo dhismo oo kala duwan. Waxaad ku qeexi kartaa hagayaal leh koodka isha, tirada dunta la dhisayo, muraayadaha lagu soo dejiyo koodka isha iyo goobaha kale. Aan uga tagno goobaha sida caadiga ah.
Qalabka wax lagu dhiso - qalabka wax lagu dhiso laftooda ayaa halkan lagu habeeyey. Akhri wax badan oo ku saabsan isaga.
Nooca qalabka - nooca qalabka la isticmaalo. Tani waxay noqon kartaa silsilad qalab ah oo loo dhisay dhisme root ama mid dibadda ah (waxaad ku qeexi kartaa hagaha mid hore loo dhisay ama url si loo soo dejiyo). Waxaa jira fursado dheeraad ah oo loogu talagalay naqshadaha kala duwan. Tusaale ahaan, cudud ahaan waxaad si fudud u dooran kartaa nooca Linaro ee silsiladda qalabka dibadda.
Maktabadda C - xulashada maktabadda C. Shaqada nidaamka oo dhan waxay ku xiran tahay tan. Caadi ahaan, glibc ayaa la isticmaalaa, taas oo taageerta dhammaan shaqeynta suurtagalka ah. Laakiin waxaa laga yaabaa inay aad u weyn tahay nidaamka ku-xidhan, sidaas darteed uglibc ama musl ayaa badanaa la doortaa. Waxaan dooran doonaa glibc (kan ayaa loo baahan doonaa hadhow si loo isticmaalo systemd).
Taxanaha Kernel Headers iyo Custom Kernel Headers - waa in ay u dhigmaan nooca kernel-ka kaas oo ku jiri doona nidaamka la isu keenay. Madaxa kernel-ka, waxa kale oo aad cayimi kartaa dariiqa loo maro kubbadda daamurka ama kaydka git.
GCC COMPILER VERSIONS - dooro nooca isu-ururinta si loo dhiso
Awoodi taageerada C++ - dooro inaad ku dhisto taageerada maktabadaha C++ ee nidaamka. Tani waxay anfacaysaa mustaqbalka.
Ikhtiyaarada gcc dheeraad ah - waxaad dejin kartaa ikhtiyaarada iskudubaridyada dheeraadka ah. Uma baahnin hadda.
Qaabeynta nidaamka ayaa kuu ogolaaneysa inaad dejiso xuduudaha mustaqbalka ee nidaamka la abuuray:
Inta badan qodobbada waa ka caddahay cinwaanka. Aynu fiiro gaar ah u yeelano qodobbada soo socda:
Jidka loo maro miisaska isticmaalayaasha - miiska isticmaalayaasha la abuurayo (
Tusaalaha faylka. Isticmaalaha waxaa lagu abuuri doonaa admin password-ka, si toos ah gid/uid, /bin/sh shell, user group default, root member group, comment Foo user
[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt
user -1 user -1 =admin /home/user /bin/sh root Foo user
Tusaha nidaamka xididka dulsaar - hagaha lagu dahaadhay dusha sare ee bartilmaameedka-fs. Wuxuu ku daraa faylal cusub wuxuuna beddelaa kuwa hadda jira.
Qoraallada gaarka ah si ay u shaqeeyaan ka hor inta aan la abuurin sawirada nidaamka faylka - Qoraallada ayaa la fuliyay isla markiiba ka hor inta aan nidaamka faylka la gelin sawirro. Aan ka tago qoraalka faaruq ah hadda.
Aan tagno qaybta Kernel-ka
Dejinta Kernel ayaa lagu dejiyay halkan Kernel-ka laftiisa waxaa lagu habeeyey iyada oo loo marayo samaynta linux-menuconfig.
Waxaad u dejin kartaa nooca kernel siyaalo kala duwan: ka dooro kuwa la soo bandhigay, nooca gacanta ku geli, cadee meel kayd ah ama daamur diyaarsan.
Qaabeynta Kernel - wadada loo maro qaabeynta kernel. Waxaad ka dooran kartaa qaabka caadiga ah ee naqshadaha la doortay ama defocnfig Linux. Isha Linux waxay ka kooban tahay defconfigs oo loogu talagalay nidaamyada bartilmaameedyada kala duwan. Waxaad heli kartaa mid aad u baahan tahay
Qaybta baakadaha Target waxay kuu ogolaaneysaa inaad doorato baakadaha lagu rakibayo nidaamka la dhisayo. Aan iska dhaafno isma bedelin hadda. Waxaan ku dari doonaa xirmooyinkayada liiskan mar dambe.
Sawirada nidaamka faylka - liiska sawirada nidaamka faylka ee la ururin doono. Kudar sawir iso
Bootloaders - xulashada bootloaders si loo ururiyo. Aynu doorano isolinix
Habaynta Systemd
Systemd wuxuu noqonayaa mid ka mid ah tiirarka Linux, oo ay la socdaan kernel iyo glibc. Sidaa darteed, waxaan u raray goobteeda shay gaar ah.
Lagu habeeyey iyada oo loo marayo samaynta menuconfig, ka dibna baakadaha Target → Qalabka nidaamka → systemd. Halkan waxa aad ku qeexi kartaa adeegyada systemd-ka ee la rakibi doono oo la bilaabi doono marka nidaamku bilowdo.
Kaydinta habaynta nidaamka
Waxa aanu ku kaydinay qaabkan KConfig
Markaa badbaadi defconfig-keena:
make savedefconfig
Isku xidhka Kernel Linux
Qaabeynta kernel-ka Linux waxaa lagu baaqaa amarka soo socda:
make linux-menuconfig
Aynu taageero ku darno kaarka muuqaalka ee Virtualbox
Aynu ku darno taageerada is dhexgalka martida Virtualbox
Keydso oo bixi MUHIIMQaabeynta waxaa lagu keydin doonaa wax soo saarka/dhisidda/linux-$ nooca/config, laakiin kuma jiraan guddiga/my_x86_board/linux.config.
Sidaa darteed, waxaad u baahan tahay inaad gacanta ku koobiyayso isku xidhka goobta kaydinta:
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
Taas ka dib waxaan sameyn doonaa dib u habeyn buuxda oo nidaamka oo dhan ah. buildroot dib uma dhisto wixii horey loo dhisay, waa inaad gacanta ku sheegtaa baakadaha dib u dhiska. Si aan loo lumin wakhtiga iyo neerfaha, way fududahay in dib loo dhiso nidaam yar oo dhan:
make clean;make
Marka la dhammeeyo dhismaha, billow VirtualBox (oo lagu tijaabiyay noocyada 5.2 iyo 6.0) ka bootinta CD-ga cabbirrada nidaamka:
Ka soo ordaaya iso urursan:
Liiska alaabta la isticmaalay
- Buugga Buildroot
Source: www.habr.com