Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Whakataki

I roto i tenei raupapa tuhinga, e hiahia ana ahau ki te titiro ki te punaha hanga tohatoha buildroot me te tiri i taku wheako ki te whakarite. Ka whai wheako mahi ki te hanga i tetahi OS iti me te atanga kauwhata me te iti o te mahi.

Tuatahi, kaua e whakapoauau i te punaha hanga me te tohatoha. Ka taea e Buildroot te hanga i tetahi punaha mai i te huinga o nga kete ka tukuna ki a ia. Hangaia a Buildroot ki runga i nga konae konae, na reira he nui nga mana whakarite. Whakakapia he kete ki tetahi atu putanga, taapirihia to ake kete, whakarereke i nga ture mo te hanga kete, whakarite i te punaha konae i muri i te whakaurunga o nga kete katoa? Ka taea e buildroot enei mahi katoa.

I Ruhia, ka whakamahia te buildroot, engari ki taku whakaaro he iti noa nga korero reo-Rusia mo nga tiimata.

Ko te whainga o te mahi he whakahiato kete tohatoha me te tango ora, te atanga icewm me te tirotiro. Ko te papaapapa ko te pouaka mariko.

He aha te hanga i to ake tohatoha? I te nuinga o nga wa ka hiahiatia he mahi iti me te iti o nga rauemi. I te nuinga o nga wa ka hiahia koe ki te hanga firmware. Ko te whakarereke i te tohatoha kaupapa whanui ma te horoi i nga kete koretake me te huri hei firmware he kaha ake te mahi i te hanga tohatoha hou. Ko te whakamahi i a Gentoo he herenga ano.

He tino kaha te punaha Buildroot, engari karekau he mahi mo koe. Ka taea e ia anake te whakahoa me te whakaaunoa i te tukanga huihuinga.

Ko nga punaha hanga rereke (yocto, punaha hanga tuwhera me etahi atu) kaore e whakaarohia, ka whakatauritehia ranei.

Kei hea te tiki me pehea te tiimata

paetukutuku kaupapa - buildroot.org. I konei ka taea e koe te tango i te putanga o naianei me te panui i te pukapuka. I reira ka taea e koe te whakapā atu ki te hapori, kei reira he kaitaki iro, he rarangi mēra me tetahi hongere irc.

Ka whakahaerehia e Buildroot nga defconfigs mo te papa whaainga o te hanga. Ko Defconfig he konae whirihora e penapena ana i nga whiringa karekau he uara taunoa. Mana e whakatau he aha ka kohia me pehea. I tenei keehi, ka taea e koe te whirihora wehe i nga whirihoranga o busybox, linux-kernel, uglibc, u-boot me te barebox bootloaders, engari ka herea katoa ki te papa whaainga.
Whai muri i te wetewete i te purongo kua tangohia mai i te git, ka whiwhi tatou i te hanga-a-whakamahi. Ka taea e koe te panui atu mo te hanganga whaiaronga i roto i te pukapuka; Ka korero ahau ki a koe mo nga mea tino nui:

poari — he whaiaronga me nga konae motuhake mo ia papa. Ka taea e enei he tuhinga mo te hanga whakaahua punaha (iso, sdcart, cpio me etahi atu), he raarangi whakakikorua, whirihora kernel, aha atu.
configs — te defconfig tūturu o te poari. Ko Defconfig he whirihoranga poari kaore i oti. Pupuri ana i nga tawhā e rereke ana i nga tautuhinga taunoa
dl — whaiaronga me nga waehere puna / konae i tangohia mo te huihuinga
putanga/whangai — te punaha konae kua kohia o te OS kua puta. I muri mai, ka hangaia nga whakaahua mai i a ia mo te tango / whakauru
putanga / ope - nga taputapu manaaki mo te huihuinga
whakaputa/hanga - nga kohinga kua kohia

Kua whirihorahia te huihuinga ma KConfig. Ko te punaha ano ka whakamahia hei hanga i te pata Linux. Rarangi o nga whakahau e whakamahia nuitia ana (whakamahia i roto i te whaiaronga buildroot):

  • hanga menuconfig - karangahia te whirihoranga hanga. Ka taea hoki e koe te whakamahi i te atanga kauwhata (hanga nconfig, hanga xconfig, hanga gconfig)
  • hanga linux-menuconfig - karangahia te whirihoranga kernel.
  • horoia - horoia nga hua hanga (nga mea katoa ka rongoa ki roto i nga putanga)
  • hanga - hanga he punaha. Kaore tenei i te whakahiato i nga tukanga kua oti kee.
  • hanga defconfig_name - whakawhiti te whirihoranga ki te defconfig motuhake
  • hanga rārangi-defconfigs - whakaatu i te rarangi o defconfigs
  • hanga puna - tango noa i nga konae whakaurunga, me te kore hanga.
  • hanga awhina - whakarārangihia ngā tono ka taea

Nga korero nui me nga tohutohu awhina

Kaore a Buildroot e hanga ano i nga kete kua oti te hanga! Na reira, ka ara ake pea he ahuatanga ka hiahiatia he huinga katoa.

Ka taea e koe te hanga i tetahi kete motuhake me te whakahau hanga packagename-hanganga. Hei tauira, ka taea e koe te hanga ano i te kernel Linux:

make linux-rebuild

Ka penapenahia e Buildroot te ahua o tetahi kete ma te hanga i nga konae .stamp ki te raarangi whakaputa/hanga/$packagename:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Na reira, ka taea e koe te hanga i nga pakiaka-fs me nga whakaahua me te kore e hanga ano i nga kete:

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

Taurangi Whaihua

He huinga taurangi to buildroot mo te whirihoranga ngawari

  • $TOPDIR - whaiaronga hanga pakiaka
  • $BASEDIR - whaiaronga PUTANGA
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR — kaihautu fs, whakaari fs, fs hanga whaiaronga.
  • $BUILD_DIR - whaiaronga me nga kete kua wetewete me te hanga

Whakaaturanga

He ahua tirohanga to buildroot. Ka taea e koe te hanga hoahoa whakawhirinaki, kauwhata wa hanga, me te kauwhata o te rahi o te kete i te punaha whakamutunga. Ko nga hua kei te ahua o nga konae pdf (ka taea e koe te whiriwhiri mai i te svn,png) i roto i te raarangi whakaputa/kauwhata.

He tauira o nga tono whakakitenga:

  • make graph-depends hanga rakau whakawhirinaki
  • make <pkg>-graph-depends hanga he rakau whakawhirinaki mo tetahi kete motuhake
  • BR2_GRAPH_OUT=png make graph-build te wa hanga me te putanga PNG
  • make graph-size te rahi o te paatete

Tuhituhi whai hua

He raarangiroto kei roto i te whaiaronga buildroot whai hua me nga tuhinga whai hua. Hei tauira, he tuhinga hei tirotiro i te tika o nga whakaahuatanga kete. Ka whai hua pea tenei ina taapiri i a koe ake kete (Ka mahia e au a muri ake nei). Kei te kōnae utils/readme.txt he whakaahuatanga mo enei tuhinga.

Me hanga he tohatoha kararehe

He mea nui kia mahara ko nga mahi katoa ka mahia mo te kaiwhakamahi auau, ehara i te pakiaka.
Ko nga whakahau katoa ka mahia i roto i te buildroot. Kei roto i te kete buildroot he huinga whirihoranga mo te maha o nga papa noa me te mariko.

Kia titiro tatou ki te rarangi o nga whirihoranga:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Hurihia ki te qemu_x86_64_defconfig whirihora

make qemu_x86_64_defconfig

Na ka timata tatou i te huihuinga

make

Ka oti pai te hanga, tirohia nga hua:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Kua whakahiatohia e Buildroot nga whakaahua ka taea e koe te whakahaere i Qemu me te manatoko kei te mahi.

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

Ko te hua he punaha e rere ana i te qemu:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Te hanga i to ake ake whirihoranga papa

Tāpiri Kōnae Poari

Kia titiro tatou ki te rarangi o nga whirihoranga:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

I roto i te rarangi ka kite matou i te pc_x86_64_efi_defconfig. Ka hangahia e maatau ake ta maatau papa ma te kape mai i te whirihoranga:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Me hanga tonu he raarangi poari hei penapena i a maatau tuhinga, rootfs-overlay me etahi atu konae e tika ana:

mkdir board/my_x86_board

Hurihia ki tenei tautuhi:

make my_x86_board_defconfig

Na, inaianei ko te whirihora hanga (kei roto i te .config i te putake o te whaiaronga buildroot) e rite ana ki te x86-64 tuku iho(bios) miihini whawhai whawhai.

Me kape te whirihoranga linux-kernel (he whai hua i muri mai):

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

Te tautuhi i nga tawhā hanga ma KConfig

Me timata te tatūnga:

make menuconfig 

Ka tuwhera te matapihi KConfig. Ka taea te whirihora me te atanga kauwhata (hanga nconfig, hanga xconfig, hanga gconfig):

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Ka uru matou ki te waahanga tuatahi Nga Kōwhiringa Target. I konei ka taea e koe te kowhiri i te hoahoanga whaainga ka mahia te hanga.

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Nga whiringa hanga - he maha nga waahanga hangahanga kei konei. Ka taea e koe te tautuhi i nga raarangi me nga waehere puna, te maha o nga miro hanga, nga whakaata mo te tango waehere puna me etahi atu tautuhinga. Waiho nga tautuhinga ki te taunoa.

Utauta - ko nga taputapu hanga ake kua whirihorahia ki konei. Pānuihia atu mo ia.

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Momo taputapu - te momo o te mekameka taputapu i whakamahia. Ka taea tenei he mekameka taputapu i hangaia ki te buildroot, ki waho ranei (ka taea e koe te tohu i te raarangi me te mea kua oti te hanga, te url ranei mo te tango). He whiringa taapiri mo nga hoahoanga rereke. Hei tauira, mo te ringaringa ka taea e koe te kowhiri noa i te putanga Linaro o te mekameka taputapu o waho.

Wharepukapuka C – te kowhiringa o te whare pukapuka C. Ko te mahinga o te punaha katoa kei runga i tenei. Ko te tikanga, ka whakamahia te glibc, e tautoko ana i nga mahi katoa ka taea. Engari he nui rawa pea mo te punaha whakauru, no reira ka kowhiria te uglibc, musl ranei. Ka tohua e matou te glibc (ka hiahiatia tenei i muri mai hei whakamahi i te systemd).

Nga Pane Kernel me nga raupapa Panui Kernel Ritenga - me taurite ki te putanga o te kernel ka uru ki te punaha kua whakaemihia. Mo nga pane o te kernel, ka taea hoki e koe te tohu i te ara ki te putunga tarball, git ranei.

GCC COMPILER VERSIONS – tohua te putanga whakahiato hei whakamahi mo te hanga
Whakahohehia te tautoko C++ – tohua ki te hanga me te tautoko mo nga whare pukapuka C++ i roto i te punaha. Ka whai hua tenei ki a tatou a meake nei.

Ko nga whiringa gcc taapiri - ka taea e koe te whakarite etahi atu whiringa whakahiato. Kaore e hiahiatia ana mo tenei wa.

Ko te whirihoranga o te punaha ka taea e koe te whakarite i nga tawhā a meake nei o te punaha hanga:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Ko te nuinga o nga tohu he maamaa mai i te taitara. Kia whai whakaaro tatou ki nga waahanga e whai ake nei:
Ara ki nga ripanga kaiwhakamahi - tepu me nga kaiwhakamahi hei hanga (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Tauira kōnae. Ka hangaia te kaiwhakamahi kaiwhakamahi me te kaiwhakahaere kupuhipa, gid/uid aunoa, /bin/sh anga, kaiwhakamahi roopu taunoa, pakiaka mema roopu, korero Kaiwhakamahi Foo

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

Whaiaronga whakakikorua i te punaha konae pakiaka - i whakakikoruatia te whaiaronga ki runga ake o te whaainga-fs kua kohia. Ka taapirihia nga konae hou me te whakakapi i nga konae o mua.

Ko nga tuhinga ritenga hei whakahaere i mua i te hanga whakaahua punaha konae - I mahia nga tuhinga i mua tonu i te whakakopa i te punaha konae hei whakaahua. Me waiho noa te tuhinga mo tenei wa.

Me haere ki te wahanga Kernel

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Kei konei nga tautuhinga Kernel. Ko te kernel ake ka whirihorahia ma te hanga linux-menuconfig.
Ka taea e koe te whakarite i te putanga kernel i roto i nga huarahi rereke: tohua mai i nga mea e tukuna ana, whakauruhia te putanga a-ringa, tohua he putunga, he tarball kua rite ranei.

Whirihoranga Kernel — ara ki te whirihora kernel. Ka taea e koe te kowhiri i te whirihoranga taunoa mo te hoahoanga kua tohua, te defocnfig ranei mai i Linux. Kei roto i te puna Linux he huinga defconfigs mo nga punaha whaainga rereke. Ka kitea e koe te mea e hiahia ana koe ma te titiro tika ki nga puna korero i konei. Hei tauira, mo te papa pango wheua beagle ka taea e koe tīpako whirihora.

Ko te wahanga o nga kohinga Target ka taea e koe te kowhiri ko wai nga kohinga ka whakauruhia ki te punaha e hangaia ana. Me waiho kia kaua e whakarereketia mo tenei wa. Ka taapirihia a maatau kete ki tenei rarangi i muri mai.
Ko nga whakaahua punaha konae - he rarangi o nga whakaahua punaha konae ka kohia. Tāpirihia he whakaahua iso

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Kaihoko - te kowhiringa o nga kaieke boot hei kohi. Me whiriwhiri te isolinix

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Whirihorahia te Pūnaha

Ko te Systemd tetahi o nga pou o te Linux, me te kernel me te glibc. Na reira, i nukuhia e ahau tona tautuhinga ki tetahi mea motuhake.

Ka whirihorahia ma te hanga menuconfig, katahi ko nga kohinga Target → Utauta punaha → systemd. I konei ka taea e koe te tohu ko nga ratonga systemd ka whakauruhia ka tiimata ka tiimata ana te punaha.

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Tiaki whirihoranga pūnaha

Ka tiakina e matou tenei whirihora ma KConfig.

Na ka tiakina to maatau tautuhinga:

make savedefconfig

Whirihoranga Kernel Linux

Ko te whirihoranga kernel Linux ka tonohia me te whakahau e whai ake nei:

make linux-menuconfig

Me taapiri tautoko mo te kaari ataata Virtualbox

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Me taapiri te tautoko whakaurunga a te Manuhiri Virtualbox

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Tiakina ka puta. Tuhinga: ka tiakina te whirihoranga i roto i te putanga/hanga/linux-$version/config, engari kaore i te poari/my_x86_board/linux.config

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

No reira, me kape a ringa koe i te whirihora ki te waahi rokiroki:

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

I muri i tera ka mahia e matou he kohinga katoa o te punaha katoa. Karekau a buildroot e hanga ano i nga mea kua oti kee te hanga, me tohu a ringa koe i nga kohinga mo te hanga ano. Kia kore ai e moumou taima me nga uaua, he maamaa ake te hanga i tetahi punaha iti katoa):

make clean;make

I te otinga o te hanga, whakarewahia a VirtualBox (whakamatautauria ki nga putanga 5.2 me 6.0) e whakaohooho ana i te CD. Tawhā Pūnaha:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Rere mai i te iso kua whakaemihia:

Buildroot - wahanga 1. Nga korero whaanui, te hanga i te punaha iti, te whakatakoto ma te tahua

Te rarangi o nga rauemi i whakamahia

  1. Buildroot pukapuka

Source: will.com

Tāpiri i te kōrero