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 -
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:
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 whakawhirinakimake <pkg>-graph-depends
hanga he rakau whakawhirinaki mo tetahi kete motuhakeBR2_GRAPH_OUT=png make graph-build
te wa hanga me te putanga PNGmake 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:
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:
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:
Te hanga i to ake ake whirihoranga papa
Tāpiri Kōnae Poari
Kia titiro tatou ki te rarangi o nga whirihoranga:
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):
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.
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.
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:
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 (
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
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
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
Kaihoko - te kowhiringa o nga kaieke boot hei kohi. Me whiriwhiri te isolinix
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.
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
Me taapiri te tautoko whakaurunga a te Manuhiri Virtualbox
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
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:
Rere mai i te iso kua whakaemihia:
Te rarangi o nga rauemi i whakamahia
- Buildroot pukapuka
Source: will.com