Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Entwodiksyon

Nan seri atik sa a, mwen vle gade sistèm konstriksyon distribisyon buildroot epi pataje eksperyans mwen nan pèrsonalizasyon li. Pral gen eksperyans pratik nan kreye yon ti OS ak yon koòdone grafik ak fonksyonalite minim.

Premye a tout, ou pa ta dwe konfonn sistèm nan bati ak distribisyon an. Buildroot ka bati yon sistèm nan yon seri pakè yo ofri li. Buildroot se bati sou makefiles ak Se poutèt sa gen kapasite personnalisation menmen. Ranplase yon pake ak yon lòt vèsyon, ajoute pake pwòp ou a, chanje règ yo pou bati yon pake, Customize sistèm nan dosye apre enstale tout pakè yo? buildroot ka fè tout bagay sa yo.

Nan Larisi, yo itilize buildroot, men nan opinyon mwen gen ti enfòmasyon nan lang Ris pou débutan.

Objektif travay la se rasanble yon twous distribisyon ak telechaje an dirèk, koòdone icewm ak navigatè. Platfòm sib la se Virtualbox.

Poukisa bati pwòp distribisyon ou a? Souvan yo bezwen fonksyonalite limite ak resous limite. Menm pi souvan nan automatisation ou bezwen kreye firmwèr. Adapte yon distribisyon pou objektif jeneral lè w netwaye pakè ki pa nesesè yo epi fè l tounen firmwèr se plis travay entansif pase bati yon nouvo distribisyon. Sèvi ak Gentoo tou gen limit li yo.

Sistèm Buildroot la trè pwisan, men li pap fè anyen pou ou. Li ka sèlman pèmèt ak otomatize pwosesis asanble a.

Sistèm konstriksyon altènatif (yocto, open build system ak lòt) yo pa konsidere oswa konpare.

Ki kote yo jwenn li ak kouman yo kòmanse

Sit entènèt pwojè - buildroot.org. Isit la ou ka telechaje vèsyon aktyèl la epi li manyèl la. Gen ou ka kontakte kominote a, gen yon tracker ensèk, lis lapòs ak yon kanal irc.

Buildroot opere defconfigs pou tablo sib bati a. Defconfig se yon dosye konfigirasyon ki estoke sèlman opsyon ki pa gen valè default. Se li menm ki detèmine kisa yo pral kolekte ak ki jan. Nan ka sa a, ou ka separe konfigirasyon busybox, linux-kernel, uglibc, u-boot ak barebox bootloaders, men yo tout pral mare nan tablo sib la.
Apre debake achiv telechaje a oswa klonaj nan git, nou jwenn yon buildroot ki pare pou itilize. Ou ka li plis sou estrikti anyè a nan manyèl la; Mwen pral di w sou sa ki pi enpòtan yo:

tablo — yon anyè ak dosye espesifik pou chak tablo. Sa yo ka scripts pou fòme imaj sistèm (iso, sdcart, cpio ak lòt moun), yon anyè kouvri, konfigirasyon nwayo, elatriye.
konfig - defconfig aktyèl la nan tablo a. Defconfig se yon konfigirasyon tablo enkonplè. Li estoke sèlman paramèt ki diferan de paramèt default yo
dl — anyè ak kòd sous telechaje/fichye pou asanble
pwodiksyon/sib — sistèm fichye rasanble nan OS ki kapab lakòz. Imedyatman, imaj yo kreye nan li pou telechaje / enstalasyon
pwodiksyon/lame - lame sèvis piblik pou asanble
pwodiksyon / bati - pakè rasanble

Se asanble a konfigirasyon atravè KConfig. Yo itilize menm sistèm nan pou konstwi nwayo Linux la. Lis kòmandman ki pi souvan itilize yo (egzekite nan anyè buildroot):

  • make menuconfig - rele konfigirasyon an bati. Ou kapab tou itilize koòdone grafik la (fè nconfig, fè xconfig, fè gconfig)
  • fè linux-menuconfig - rele konfigirasyon nwayo a.
  • fè pwòp - netwaye rezilta yo bati (tout bagay ki estoke nan pwodiksyon)
  • fè - bati yon sistèm. Sa a pa remonte pwosesis deja reyini.
  • make defconfig_name - chanje konfigirasyon an nan yon defconfig espesifik
  • make list-defconfigs - montre yon lis defconfigs
  • fè sous - jis telechaje fichye enstalasyon yo, san yo pa bati.
  • fè èd - lis kòmandman posib

Nòt enpòtan ak konsèy itil

Buildroot pa rekonstwi pakè ki deja bati! Se poutèt sa, yon sitiyasyon ka rive kote yo mande yon reyaji konplè.

Ou ka rebati yon pake separe ak lòd la fè packagename-rebuild. Pou egzanp, ou ka rebati nwayo Linux la:

make linux-rebuild

Buildroot estoke eta nenpòt pake lè li kreye fichye .stamp nan anyè output/build/$packagename:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Se poutèt sa, ou ka rebati rasin-fs ak imaj san yo pa rebati pakè:

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

Varyab itil

buildroot gen yon seri varyab pou konfigirasyon fasil

  • $TOPDIR - buildroot directory
  • $BASEDIR - OUTPUT anyè
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR — host fs, staging fs, target fs build directories.
  • $BUILD_DIR - anyè ak pakè depake ak bati

Vizyalizasyon

buildroot gen yon karakteristik vizyalizasyon.Ou ka bati yon dyagram depandans, yon graf tan konstriksyon, ak yon graf gwosè pake nan sistèm final la. Rezilta yo sou fòm fichye pdf (ou ka chwazi nan svn,png) nan anyè pwodiksyon/graf.

Egzanp kòmandman vizyalizasyon:

  • make graph-depends bati pye bwa depandans
  • make <pkg>-graph-depends bati yon pye bwa depandans pou yon pake espesifik
  • BR2_GRAPH_OUT=png make graph-build trase tan bati ak pwodiksyon PNG
  • make graph-size trase gwosè pake a

Scripts itil

Gen yon sous-anyè nan anyè buildroot la utils ak scripts itil. Pou egzanp, gen yon script ki tcheke kòrèkteman deskripsyon pake yo. Sa a ka itil lè w ajoute pakè pwòp ou yo (mwen pral fè sa pita). Dosye utils/readme.txt gen yon deskripsyon scripts sa yo.

Ann konstwi yon distribisyon stock

Li enpòtan sonje ke tout operasyon yo te pote soti nan non yon itilizatè regilye, pa rasin.
Tout kòmandman yo egzekite nan buildroot la. Pake buildroot la deja gen ladann yon seri konfigirasyon pou anpil tablo komen ak Virtualization.

Ann gade nan lis konfigirasyon yo:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Chanje nan konfigirasyon qemu_x86_64_defconfig

make qemu_x86_64_defconfig

Epi nou kòmanse asanble a

make

Konstriksyon an fini avèk siksè, gade rezilta yo:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Buildroot te konpile imaj ke ou ka kouri nan Qemu epi verifye ke yo travay.

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

Rezilta a se yon sistèm ki kouri nan qemu:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Kreye pwòp konfigirasyon tablo ou

Ajoute Fichye Komisyon Konsèy

Ann gade nan lis konfigirasyon yo:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Nan lis la nou wè pc_x86_64_efi_defconfig. Nou pral kreye pwòp tablo nou an pa kopye li nan konfigirasyon an:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

An nou imedyatman kreye yon anyè tablo pou estoke scripts nou yo, rootfs-overlay ak lòt dosye ki nesesè yo:

mkdir board/my_x86_board

Chanje nan defconfig sa a:

make my_x86_board_defconfig

Kidonk, kounye a konfigirasyon konstriksyon an (ki estoke nan .config nan rasin anyè buildroot la) koresponn ak machin sib x86-64 legacy(bios) bòt la.

Ann kopye konfigirasyon linux-kernel la (itil pita):

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

Mete paramèt bati atravè KConfig

Ann kòmanse konfigirasyon an:

make menuconfig 

Fenèt KConfig la ap louvri. Li posib pou konfigirasyon ak yon koòdone grafik (fè nconfig, fè xconfig, fè gconfig):

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Nou antre nan premye seksyon Opsyon sib. Isit la ou ka chwazi achitekti a sib pou ki bati a pral te pote soti.

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Opsyon bati - gen divès kalite anviwònman bati isit la. Ou ka presize anyè ak kòd sous, kantite fil bati, miwa pou telechaje kòd sous ak lòt paramèt. Ann kite paramèt yo nan default.

Toolchain - zouti yo bati tèt yo configuré isit la. Li plis sou li.

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Kalite chèn zouti - kalite chèn zouti yo itilize. Sa a kapab yon chèn zouti ki bati nan buildroot oswa yon ekstèn (ou ka presize anyè a ak youn ki deja bati a oswa url la pou telechaje). Gen opsyon adisyonèl pou diferan achitekti. Pou egzanp, pou bra ou ka tou senpleman chwazi vèsyon an Linaro nan chèn zouti ekstèn lan.

Bibliyotèk C - seleksyon bibliyotèk C. Operasyon an nan tout sistèm nan depann sou sa a. Tipikman, yo itilize glibc, ki sipòte tout fonksyonalite posib. Men, li ka twò gwo pou yon sistèm entegre, kidonk uglibc oswa musl yo souvan chwazi. Nou pral chwazi glibc (sa ap mande pita pou itilize systemd).

Kernel Headers ak seri Custom Kernel Headers - dwe matche ak vèsyon an nan nwayo a ki pral nan sistèm nan reyini. Pou tèt nwayo, ou ka presize tou chemen ki mennen nan depo tarball oswa git la.

VÈSYON KONPILÈ GCC - chwazi vèsyon konpilatè a pou itilize pou bati
Pèmèt sipò C++ - chwazi pou konstwi ak sipò pou bibliyotèk C++ nan sistèm nan. Sa a pral itil nou nan tan kap vini an.

Opsyon adisyonèl gcc - ou ka mete lòt opsyon konpilatè. Nou pa bezwen li pou kounye a.

Konfigirasyon sistèm pèmèt ou mete paramèt nan lavni nan sistèm kreye a:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Pifò nan pwen yo klè nan tit la. Ann peye atansyon sou pwen sa yo:
Chemen nan tab itilizatè yo - tab ak itilizatè yo dwe kreye (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Egzanp dosye. Itilizatè itilizatè a pral kreye ak admin modpas la, otomatikman gid/uid, /bin/sh shell, itilizatè gwoup default, rasin manm gwoup, kòmantè itilizatè Foo.

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

Anyè sipèvizyon sistèm fichye rasin - anyè kouvri sou tèt sib-fs yo rasanble. Ajoute nouvo fichye epi ranplase sa ki deja egziste.

Scripts koutim yo kouri anvan yo kreye imaj sistèm fichye - Scripts egzekite imedyatman anvan pliye sistèm fichye a nan imaj. Ann kite script la vid pou kounye a.

Ann ale nan seksyon Kernel la

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Anviwònman Kernel yo mete isit la. Kernel nan tèt li se configuré atravè make linux-menuconfig.
Ou ka mete vèsyon nwayo a nan diferan fason: chwazi nan sa yo ofri, antre vèsyon an manyèlman, presize yon depo oswa yon tarball pare-fè.

Konfigirasyon Kernel - chemen nan konfigirasyon nwayo a. Ou ka chwazi konfigirasyon default la pou achitekti chwazi a oswa defocnfig soti nan Linux. Sous Linux la gen yon seri defconfigs pou diferan sistèm sib. Ou ka jwenn youn ou bezwen an pa gade dirèkteman nan sous yo isit la. Pou egzanp, pou yon tablo nwa zo beagle ou kapab chwazi konfigirasyon.

Seksyon pakè sib la pèmèt ou chwazi ki pakè ki pral enstale sou sistèm y ap konstwi a. Ann kite li san chanjman pou kounye a. Nou pral ajoute pakè nou yo nan lis sa a pita.
Imaj Filesystem - yon lis imaj sistèm fichye ke yo pral kolekte. Ajoute yon imaj iso

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Bootloaders - seleksyon bootloaders pou kolekte. Ann chwazi isolinix

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Konfigirasyon Systemd

Systemd ap vin youn nan poto Linux, ansanm ak Kernel ak glibc. Se poutèt sa, mwen deplase anviwònman li yo nan yon atik separe.

Konfigirasyon atravè make menuconfig, Lè sa a, Pake sib → Zouti sistèm → systemd. Isit la ou ka presize ki sèvis systemd yo pral enstale epi kòmanse lè sistèm lan kòmanse.

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Ekonomize konfigirasyon sistèm lan

Nou sove konfigirasyon sa a atravè KConfig.

Lè sa a, sove defconfig nou an:

make savedefconfig

Konfigirasyon Kernel Linux

Konfigirasyon nwayo Linux yo envoke ak lòd sa a:

make linux-menuconfig

Ann ajoute sipò pou kat videyo Virtualbox la

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Ann ajoute sipò entegrasyon Virtualbox Guest

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Sove epi sòti. ENPTAN: konfigirasyon yo pral sove nan output/build/linux-$version/config, men se pa nan board/my_x86_board/linux.config

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Se poutèt sa, ou bezwen manyèlman kopye konfigirasyon an nan yon kote depo:

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

Apre sa, nou pral fè yon reasanblaj konplè nan sistèm nan tout antye. buildroot pa rebati sa ki deja bati, ou dwe manyèlman presize pakè pou rekonstwi. Pou pa gaspiye tan ak nè, li pi fasil pou rebati yon ti sistèm nèt):

make clean;make

Lè yo fin bati a, lanse VirtualBox (teste sou vèsyon 5.2 ak 6.0) demaraj soti nan CD a. Paramèt sistèm yo:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Kouri soti nan izo yo reyini:

Buildroot - pati 1. Enfòmasyon jeneral, rasanble yon sistèm minim, konfigirasyon nan meni an

Lis materyèl yo itilize

  1. Manyèl Buildroot

Sous: www.habr.com

Add nouvo kòmantè