Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Pîrozbahiyê

Di vê rêze gotaran de, ez dixwazim li pergala avakirina belavkirina buildroot binihêrim û ezmûna xwe di xweşkirina wê de parve bikim. Li vir hûn ê di afirandina OS-ya piçûk a bi navgînek grafîkî û fonksiyonek hindiktirîn de xwedî ezmûnek pratîkî bin.

Berî her tiştî, divê hûn pergala çêkirinê û belavkirinê tevlihev nekin. Buildroot dikare ji komek pakêtên ku jê re têne pêşkêş kirin pergalek ava bike. Buildroot li ser pelan hatî çêkirin û ji ber vê yekê xwedan kapasîteyên xwerû ya pir mezin e. Pakêtek bi guhertoyek din veguherînin, pakêta xwe lê zêde bikin, qaîdeyên avakirina pakêtê biguhezînin, piştî sazkirina hemî pakêtan pergala pelan xweş bikin? buildroot dikare van hemîyan bike.

Li Rûsyayê, buildroot tê bikar anîn, lê li gorî min agahdariya bi zimanê rûsî ji bo destpêkek hindik heye.

Armanca xebatê ew e ku bi dakêşana zindî, navrûya icewm û gerokê re kîtek belavkirinê were berhev kirin. Platforma armanc virtualbox e.

Çima belavkirina xwe ava bikin? Bi gelemperî fonksiyonek tixûbdar bi çavkaniyên kêm hewce ne. Di otomatê de pir caran hûn hewce ne ku firmware biafirînin. Veguheztina belavkirinek gelemperî bi paqijkirina pakêtên nepêwist û zivirandina wê di nav firmware de ji avakirina belavkirinek nû kedtir e. Bikaranîna Gentoo jî sînorên xwe hene.

Pergala Buildroot pir bi hêz e, lê ew ê tiştek ji we re neke. Ew tenê dikare pêvajoya kombûnê çalak û otomatîk bike.

Pergalên avakirina alternatîf (yocto, pergala avakirina vekirî û yên din) nayên hesibandin an berhev kirin.

Wê ji ku derê bistînin û çawa dest pê bikin

Malpera projeyê - buildroot.org. Li vir hûn dikarin guhertoya heyî dakêşin û manual bixwînin. Li wir hûn dikarin bi civakê re têkilî daynin, şopgerek xelet, navnîşên e-nameyê û kanalek irc heye.

Buildroot ji bo panela armancê ya avahiyê defconfigan dixebitîne. Defconfig pelek vesazkirinê ye ku tenê vebijarkên ku xwedan nirxên xwerû ne hilîne. Yê ku biryar dide ka dê çi û çawa were berhev kirin ew e. Di vê rewşê de, hûn dikarin vesazên busybox, linux-kernel, uglibc, u-boot û barebox bootloaders ji hev veqetînin, lê hemî ew ê bi panela armancê ve werin girêdan.
Piştî ku arşîva dakêşandî an klonkirina ji git vekin, em avahîsaziyek amade-bikaranîna digirin. Hûn dikarin di manualê de li ser avahiya pelrêça bêtir bixwînin; Ez ê ji we re yên herî girîng vebêjim:

pêşewarî - pelrêçek bi pelên taybetî yên her panelê. Ev dikarin ji bo avakirina wêneyên pergalê (iso, sdcart, cpio û yên din) nivîsar bin, pelrêça sergirtî, mîhengê kernel, hwd.
vedigire - defconfig ya rastîn a panelê. Defconfig mîhengek panelê ya netemam e. Ew tenê pîvanên ku ji mîhengên xwerû cûda dibin hilîne
dl - pelrêça bi kodên çavkaniya dakêşandî / pelên ji bo kombûnê
encam / armanc - Pergala pelê ya berhevkirî ya OS-ya ku derketiye. Dûv re, ji bo dakêşandin/sazkirinê wêne jê têne afirandin
encam / mazûvan - karûbarên mêvandar ên ji bo civînê
derketin/çêkirin - pakêtên kombûyî

Civîn bi rêya KConfig ve hatî mîheng kirin. Heman pergal ji bo avakirina kernel Linux tê bikaranîn. Lîsteya fermanên herî gelemperî têne bikar anîn (di pelrêça buildroot de bicîh bikin):

  • menuconfig bikin - gazî veavakirina çêkirinê bikin. Her weha hûn dikarin navgîniya grafîkî bikar bînin (nconfig bikin, xconfig bikin, gconfig bikin)
  • linux-menuconfig bikin - veavakirina kernelê bang bikin.
  • paqij bike - encamên çêkirinê paqij bike (her tiştê ku di encam de hatî hilanîn)
  • bike - sîstemek ava bike. Ev pêvajoyên jixwe hatine berhev kirin ji nû ve kom nake.
  • defconfig_name çêbikin - veavakirinê veguherînin defconfigek taybetî
  • list-defconfigs çêbikin - navnîşek defconfigs nîşan bide
  • çavkaniyê çêbikin - tenê pelên sazkirinê, bêyî avakirin, dakêşin.
  • alîkariyê çêbikin - fermanên gengaz navnîş bikin

Têbînîyên girîng û serişteyên alîkar

Buildroot pakêtên ku berê hatine çêkirin ji nû ve ava nake! Ji ber vê yekê, dibe ku rewşek ku pêdivî ye ku ji nû ve nûvekirinek bêkêmasî were çêkirin.

Hûn dikarin bi fermanê pakêtek veqetandî ji nû ve ava bikin navê pakêtê-ji nû ve ava bike. Mînakî, hûn dikarin kernel Linux ji nû ve ava bikin:

make linux-rebuild

Buildroot bi çêkirina pelên .stamp di pelrêça encam/build/$packagename de rewşa her pakêtê hilîne:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Ji ber vê yekê, hûn dikarin bêyî nûavakirina pakêtan root-fs û wêneyan ji nû ve ava bikin:

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

Guherbarên Kêrhatî

buildroot ji bo veavakirina hêsan komek guhêrbar heye

  • $TOPDIR - pelrêça buildroot
  • $BASEDIR - pelrêça OUTPUT
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - fs mêvandar, fs distînin, fs pelrêçan ava dikin armanc.
  • $BUILD_DIR - pelrêça bi pakêtên nevekirî û çêkirî

Dîtin

buildroot taybetmendiyek dîtbarîkirinê heye. Hûn dikarin di pergala dawîn de diyagramek girêdayîbûnê, grafek dema çêkirinê û grafiyek mezinahiya pakêtê ava bikin. Encam di pelrêça derketinê/grafê de di forma pelên pdf de ne (hûn dikarin ji svn, png hilbijêrin).

Nimûneyên fermanên dîtbariyê:

  • make graph-depends dara girêdayîbûnê ava bike
  • make <pkg>-graph-depends ji bo pakêtek taybetî dara pêwendiyê ava bikin
  • BR2_GRAPH_OUT=png make graph-build dema avakirina komployê bi derketina PNG
  • make graph-size mezinahiya pakêtê

Nivîsarên kêrhatî

Di pelrêça buildrootê de binerdekek heye bikartê bi nivîsarên kêrhatî. Mînakî, skrîptek heye ku rastbûna danasînên pakêtê kontrol dike. Dema ku pakêtên xwe lê zêde bikin ev dibe ku kêrhatî be (ez ê paşê wiya bikim). Dosya utils/readme.txt danasîna van nivîsan dihewîne.

Werin em belavkirina stokê ava bikin

Girîng e ku ji bîr mekin ku hemî operasyon li ser navê bikarhênerek birêkûpêk têne kirin, ne root.
Hemî ferman di buildroot de têne darve kirin. Pakêta buildroot jixwe komek mîhengan ji bo gelek panelên hevpar û virtualbûnê vedihewîne.

Ka em li navnîşa mîhengan binêrin:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Biguherîne ser mîhengê qemu_x86_64_defconfig

make qemu_x86_64_defconfig

Û em dest bi meclîsê dikin

make

Avakirin bi serfirazî qediya, li encaman binihêrin:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Buildroot wêneyên ku hûn dikarin li Qemu bimeşînin berhev kirine û piştrast bikin ku ew dixebitin.

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

Encam pergalek ku di qemu de dixebite ye:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Afirandina veavakirina panela xwe

Zêdekirina pelên panelê

Ka em li navnîşa mîhengan binêrin:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Di navnîşê de em pc_x86_64_efi_defconfig dibînin. Em ê panela xwe bi kopîkirina wê ji veavakirinê biafirînin:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Ka em tavilê pelrêçek panelê biafirînin da ku nivîsarên me, rootfs-overlay û pelên din ên pêwîst hilînin:

mkdir board/my_x86_board

Biguherîne vê defconfig:

make my_x86_board_defconfig

Ji ber vê yekê, naha konfigurasyona avakirinê (di .config de di koka pelrêça buildroot de hatî hilanîn) bi makîneya armanca bootê ya mîrateya x86-64 (bios) re têkildar e.

Ka em veavakirina linux-kernel kopî bikin (paşê bikêr e):

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

Sazkirina parametreyên avakirinê bi rêya KConfig

Ka em sazkirinê dest pê bikin:

make menuconfig 

Pencereya KConfig dê vebe. Mimkûn e ku meriv bi navgînek grafîkî ve mîheng bike (nconfig bike, xconfig bike, gconfig bike):

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Em dikevin beşa yekem Vebijarkên Armanc. Li vir hûn dikarin mîmariya armancê ya ku dê çêbibe hilbijêrin.

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Vebijarkên çêkirinê - li vir mîhengên cûda yên çêkirinê hene. Hûn dikarin pelrêçan bi kodên çavkaniyê, hejmara têlên çêkirinê, neynikên ji bo daxistina kodên çavkaniyê û mîhengên din diyar bikin. Ka em mîhengan li xwerû bihêlin.

Toolchain - amûrên çêkirinê bixwe li vir têne mîheng kirin. Li ser wî bêtir bixwînin.

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Tîpa zincîra amûrê - celebê zincîra amûrê tê bikar anîn. Ev dikare bibe zincîra amûrek ku di nav avahîsaziyê de an yekek derveyî hatî çêkirin (hûn dikarin pelrêça bi ya jixwe hatî çêkirin an url-ya dakêşanê diyar bikin). Vebijarkên din ên ji bo mîmariyên cûda hene. Mînakî, ji bo milê hûn dikarin bi tenê guhertoya Linaro ya zincîra amûra derveyî hilbijêrin.

Pirtûkxaneya C - Hilbijartina pirtûkxaneya C. Karkirina tevahiya pergalê bi vê yekê ve girêdayî ye. Bi gelemperî glibc tête bikar anîn, ku hemî fonksiyonên gengaz piştgirî dike. Lê dibe ku ew ji bo pergalek pêvekirî pir mezin be, ji ber vê yekê uglibc an musl pir caran têne hilbijartin. Em ê glibc hilbijêrin (ev ê paşê hewce bike ku systemd bikar bînin).

Sernivîsên Kernel û Sernivîsên Kernelê yên Xweser - divê bi guhertoya kernelê ya ku dê di pergala berhevkirî de be li hev bikin. Ji bo sernavên kernelê, hûn dikarin rêça depoya tarball an git jî diyar bikin.

VERSÎVÊN KOMPILERÊN GCC - guhertoya berhevkerê ku ji bo avakirinê were bikar anîn hilbijêrin
Piştgiriya C ++ çalak bikin - hilbijêrin ku bi piştgirîkirina pirtûkxaneyên C ++ di pergalê de ava bikin. Ev dê di pêşerojê de ji me re bikêr be.

Vebijarkên din ên gcc - hûn dikarin vebijarkên berhevkar ên din saz bikin. Ji bo niha hewcedariya me tune.

Veavakirina pergalê dihêle hûn pîvanên pêşerojê yên pergala çêkirî saz bikin:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Piraniya xalan ji sernavê zelal in. Ka em bala xwe bidin van xalên jêrîn:
Rêya berbi tabloyên bikarhêneran - tabloya bi bikarhêneran re ku bêne çêkirin (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Mînak pelê. Bikarhênerê bikarhêner dê bi şîfreya rêveberê, bixweber gid/uid, /bin/sh shell, bikarhênerê koma xwerû, root endamê komê, şîroveya bikarhêner Foo were afirandin.

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

Pîrektîfên pêvekirina pergala pelan a root - pelrêça ku li ser hedef-fs-ên hatine berhev kirin hatî girtin. Pelên nû zêde dike û li şûna yên heyî dixe.

Nivîsarên xwerû yên ku berî çêkirina wêneyên pergala pelan têne xebitandin - Nivîsarên ku tavilê berî ku pergala pelan di nav wêneyan de biqelînin têne darve kirin. Ka em ji niha ve senaryoyê xwe vala bihêlin.

Ka em biçin beşa Kernel

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Mîhengên kernel li vir têne danîn. Kernel bixwe bi rêya make linux-menuconfig ve hatî mîheng kirin.
Hûn dikarin guhertoya kernelê bi awayên cihêreng saz bikin: ji yên ku têne pêşkêş kirin hilbijêrin, guhertoya bi destan têkevin, depoyek an tarballek amade diyar bikin.

Veavakirina kernel - rêça mîhengê kernel. Hûn dikarin veavakirina xwerû ji bo mîmariya hilbijartî an defocnfig ji Linux hilbijêrin. Çavkaniya Linux ji bo pergalên armanc ên cihêreng komek defconfig dihewîne. Hûn dikarin ya ku hûn hewce ne bibînin bi dîtina rasterast li çavkaniyên vir. Mînakî, ji bo tabloyek reş a hestiyê beagle hûn dikarin mîhengê hilbijêre.

Beşa pakêtên Target dihêle hûn hilbijêrin ka kîjan pakêt dê li ser pergala ku tê çêkirin werin saz kirin. Werin em ji bo niha neguherî bihêlin. Em ê paşê pakêtên xwe li vê navnîşê zêde bikin.
Wêneyên pergala pelan - navnîşek wêneyên pergala pelan ên ku dê werin berhev kirin. Wêneyek iso zêde bikin

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Bootloaders - Hilbijartina bootloaders ji bo komkirin. Ka em isolinix hilbijêrin

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Veavakirina Systemd

Systemd bi kernel û glibc re dibe yek ji stûnên Linux. Ji ber vê yekê, min mîhenga wê veguhezand babetek cihê.

Bi rêya make menuconfig ve hatî mîheng kirin, paşê pakêtên Armanc → Amûrên pergalê → systemd. Li vir hûn dikarin diyar bikin ka kîjan karûbarên systemd dê werin saz kirin û dest pê kirin dema ku pergalê dest pê dike.

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Saving veavakirina pergalê

Em vê veavakirinê bi rêya KConfig tomar dikin.

Dûv re defconfigê me hilînin:

make savedefconfig

Veavakirina Kernel Linux

Veavakirina kernel Linux bi fermana jêrîn tê vexwendin:

make linux-menuconfig

Ka em ji bo qerta vîdyoyê Virtualbox piştgirî zêde bikin

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Ka em piştgiriya entegrasyona Virtualbox Guest zêde bikin

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Save û derkeve. Girîng: veavakirin dê di encam/build/linux-$version/config de were tomar kirin, lê ne di panelê/my_x86_board/linux.config de

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Ji ber vê yekê, hûn hewce ne ku mîhengê bi destan li cîhek hilanînê kopî bikin:

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

Piştî vê yekê em ê ji nû ve nûvekirina tevahî pergalê pêk bînin. buildroot tiştê ku berê hatî çêkirin ji nû ve ava nake, divê hûn bi destan pakêtan ji bo ji nû ve avakirinê diyar bikin. Ji bo ku dem û demaran winda nekin, hêsantir e ku meriv pergalek piçûk bi tevahî ji nû ve ava bike):

make clean;make

Piştî ku çêkirinê qediya, VirtualBox (li ser guhertoyên 5.2 û 6.0 hatine ceribandin) dest pê bikin ku ji CD-yê boot bike. Parametreyên pergalê:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Ji iso-ya berhevkirî diherike:

Buildroot - beş 1. Agahdariya gelemperî, komkirina pergalek hindiktirîn, veavakirin bi navgîniyê

Lîsteya materyalên bikar anîn

  1. manual Buildroot

Source: www.habr.com

Add a comment