Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

fampidirana

Amin'ity andian-dahatsoratra ity dia te hijery ny rafitra fananganana fizarana buildroot aho ary hizara ny traikefako amin'ny fanamboarana azy. Hisy traikefa azo ampiharina amin'ny famoronana OS kely miaraka amin'ny interface grafika sy fampiasa kely indrindra.

Voalohany indrindra, tsy tokony afangaro ny rafitra fananganana sy ny fizarana. Buildroot dia afaka manangana rafitra avy amin'ny andiana fonosana atolotra azy. Buildroot dia naorina amin'ny makefiles ary noho izany dia manana fahaiza-manao manokana. Soloy ny fonosana amin'ny dikan-teny hafa, ampio ny fonosanao manokana, ovay ny fitsipika momba ny fananganana fonosana, amboary ny rafi-drakitra aorian'ny fametrahana ny fonosana rehetra? buildroot dia afaka manao izany rehetra izany.

Ao Rosia, buildroot no ampiasaina, fa raha ny hevitro dia misy fampahalalana kely amin'ny teny Rosiana ho an'ireo vao manomboka.

Ny tanjon'ny asa dia ny hanangona kitapo fanapariahana miaraka amin'ny fampidinana mivantana, interface tsara icewm ary navigateur. Ny sehatra kendrena dia virtualbox.

Nahoana no manorina ny fizaranao manokana? Matetika ny fiasa voafetra dia ilaina amin'ny loharano voafetra. Matetika kokoa amin'ny automation dia mila mamorona firmware ianao. Ny fampifanarahana ny fitsinjarana amin'ny tanjona ankapobeny amin'ny alàlan'ny fanadiovana ny fonosana tsy ilaina sy ny famadihana azy ho firmware dia mitaky asa bebe kokoa noho ny fananganana fizarana vaovao. Misy fetrany ihany koa ny fampiasana Gentoo.

Tena mahery ny rafitra Buildroot, saingy tsy hahavita na inona na inona ho anao izany. Izy io ihany no afaka mamela sy manao automatique ny fizotry ny fivoriambe.

Ny rafitra fananganana hafa (yocto, rafitra fananganana misokatra sy ny hafa) dia tsy raisina na ampitahaina.

Aiza no ahazoana azy ary ahoana no hanombohana

Tranonkala tetikasa - buildroot.org. Eto ianao dia afaka misintona ny kinova ankehitriny ary mamaky ny boky. Any ianao dia afaka mifandray amin'ny vondrom-piarahamonina, misy mpitsikilo bug, lisitry ny mailaka ary fantsona irc.

Buildroot dia miasa defconfigs ho an'ny birao kendrena amin'ny fananganana. Defconfig dia rakitra fanamafisam-peo izay mitahiry safidy tsy manana sanda default. Izy no mamaritra hoe inona no hangonina sy ahoana. Amin'ity tranga ity, azonao atao ny manitsy ny configs an'ny busybox, linux-kernel, uglibc, u-boot ary barebox bootloaders, fa izy rehetra dia mifamatotra amin'ny birao kendrena.
Aorian'ny famongorana ny arsiva nalaina avy amin'ny git dia mahazo buildroot efa vonona izahay. Azonao atao ny mamaky bebe kokoa momba ny firafitry ny lahatahiry ao amin'ny boky fampianarana;

board — lahatahiry misy rakitra manokana ho an'ny birao tsirairay. Ireo dia mety ho script amin'ny famoronana sary rafitra (iso, sdcart, cpio ary ny hafa), lahatahiry overlay, kernel config, sns.
configs - ny tena defconfig ny birao. Defconfig dia fandrindrana birao tsy feno. Izy io dia mitahiry mari-pamantarana tsy mitovy amin'ny fanovana default
dl — lahatahiry misy kaody loharano / rakitra alaina ho an'ny fivoriambe
vokatra/kendrena - ny rafitra fichier miangona amin'ny OS vokatr'izany. Avy eo dia noforonina avy aminy ny sary ho an'ny fampidinana / fametrahana
output/host - fitaovana fampiantranoana ho an'ny fivoriambe
Output/build - fonosana natambatra

Ny fivoriambe dia amboarina amin'ny alàlan'ny KConfig. Io rafitra io ihany no ampiasaina hanamboarana ny kernel Linux. Lisitry ny baiko fampiasa matetika indrindra (atao ao amin'ny lahatahiry buildroot):

  • manao menuconfig - antsoy ny fananganana fananganana. Azonao atao koa ny mampiasa ny interface grafika (manao nconfig, manao xconfig, manao gconfig)
  • manao linux-menuconfig - antsoy ny kernel configuration.
  • manadio - manadio ny vokatry ny fananganana (rehetra voatahiry ao anaty vokatra)
  • manao - manangana rafitra. Tsy mamerina ny dingana efa tafavory izany.
  • manao defconfig_name - afindrao amin'ny defconfig manokana ny config
  • manao lisitra-defconfigs - asehoy lisitry ny defconfigs
  • make source - alaivo fotsiny ny rakitra fametrahana, tsy misy fananganana.
  • manao fanampiana - mitanisa baiko azo atao

Fanamarihana manan-danja sy torohevitra mahasoa

Buildroot dia tsy manangana fonosana efa naorina! Noho izany dia mety hisy toe-javatra izay ilaina ny famerenana tanteraka.

Azonao atao ny manamboatra fonosana misaraka miaraka amin'ny baiko manao packagename-rebuild. Ohatra, azonao atao ny manangana indray ny kernel Linux:

make linux-rebuild

Ny Buildroot dia mitahiry ny toetry ny fonosana rehetra amin'ny famoronana rakitra .stamp ao amin'ny lahatahiry output/build/$packagename:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Noho izany, afaka manangana root-fs sy sary ianao raha tsy manamboatra fonosana:

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

Variable mahasoa

buildroot dia manana andiana variables ho an'ny fanamafisana mora

  • $TOPDIR - lahatahiry buildroot
  • $BASEDIR - lahatahiry OUTPUT
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR — mpampiantrano fs, filalaovana fs, tanjona fs manorina lahatahiry.
  • $BUILD_DIR - lahatahiry misy fonosana tsy misy fonosana sy namboarina

fijerena

Ny Buildroot dia manana endri-javatra hita maso Azonao atao ny manangana kisary fiankinan-doha, kisarisary momba ny fotoana fananganana, ary tabilao misy ny haben'ny fonosana ao amin'ny rafitra farany. Ny valiny dia amin'ny endrika rakitra pdf (azonao atao ny misafidy amin'ny svn,png) ao amin'ny lahatahiry output/graph.

Ohatra amin'ny baiko fijerena sary:

  • make graph-depends manangana hazo fiankinan-doha
  • make <pkg>-graph-depends manangana hazo fiankinana ho an'ny fonosana manokana
  • BR2_GRAPH_OUT=png make graph-build fotoana fananganana drafitra miaraka amin'ny famoahana PNG
  • make graph-size ny haben'ny fonosana

Soratra mahasoa

Misy subdirectory ao amin'ny lahatahiry buildroot ilaina miaraka amin'ny script mahasoa. Ohatra, misy script izay manamarina ny fahamarinan'ny famaritana fonosana. Mety ilaina izany rehefa manampy ny fonosanao manokana (ho ataoko any aoriana). Ny rakitra utils/readme.txt dia misy famaritana ireo script ireo.

Andao hanangana fizarana tahiry

Zava-dehibe ny mitadidy fa ny hetsika rehetra dia atao amin'ny anaran'ny mpampiasa mahazatra, fa tsy faka.
Ny baiko rehetra dia tanterahina ao amin'ny buildroot. Ny fonosan'ny buildroot dia efa misy andiana fanamafisam-peo ho an'ny birao mahazatra sy virtoaly.

Andeha hojerentsika ny lisitry ny configurations:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Miverena amin'ny qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Ary manomboka ny fivoriambe isika

make

Vita soa aman-tsara ny fananganana, jereo ny vokatra:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Buildroot dia nanangona sary azonao atao amin'ny Qemu ary manamarina fa miasa izy ireo.

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

Ny vokatr'izany dia rafitra mandeha amin'ny qemu:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Mamorona ny tefitranonao manokana

Manampy fisie board

Andeha hojerentsika ny lisitry ny configurations:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Ao amin'ny lisitra dia hitantsika ny pc_x86_64_efi_defconfig. Hamorona ny biraontsika manokana isika amin'ny alàlan'ny kopia azy avy amin'ny fanamafisana:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Andao hamorona lahatahiry avy hatrany hitahiry ny script, rootfs-overlay ary ny rakitra ilaina hafa:

mkdir board/my_x86_board

Miverena amin'ity defconfig ity:

make my_x86_board_defconfig

Noho izany, ankehitriny ny fananganana config (voatahiry ao amin'ny .config ao amin'ny fototry ny lahatahiry buildroot) dia mifanitsy amin'ny milina kendrena baotin'ny x86-64 (bios).

Andao handika ny linux-kernel configuration (mahasoa avy eo):

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

Mametraka masontsivana fananganana amin'ny alàlan'ny KConfig

Andao hanomboka ny fanamboarana:

make menuconfig 

Hisokatra ny varavarankely KConfig. Azo atao ny manitsy amin'ny interface grafika (manao nconfig, manao xconfig, manao gconfig):

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Miditra amin'ny fizarana voalohany Target Options isika. Eto ianao dia afaka misafidy ny maritrano kendrena hanaovana ny fananganana.

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Safidy fananganana - misy fika fananganana isan-karazany eto. Azonao atao ny mamaritra ny lahatahiry misy kaody loharano, ny isan'ny kofehy fananganana, ny fitaratra amin'ny fampidinana ny kaody loharano ary ny toe-javatra hafa. Aleo avela ho default ny fika.

Toolchain - ny fitaovana fananganana mihitsy no namboarina eto. Vakio bebe kokoa momba azy.

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Karazana fitaovam-pitaovana - karazana rojom-pitaovana ampiasaina. Ity dia mety ho rojom-pitaovana namboarina ao amin'ny buildroot na ivelany (azonao atao ny mamaritra ny lahatahiry miaraka amin'ny efa namboarina na ny url ho an'ny fampidinana). Misy safidy fanampiny ho an'ny maritrano samihafa. Ohatra, ho an'ny sandry dia azonao atao ny misafidy ny dikan-teny Linaro amin'ny rojo fitaovana ivelany.

C tranomboky - fifantenana ny tranomboky C Ny fiasan'ny rafitra manontolo dia miankina amin'izany. Matetika ny glibc no ampiasaina, izay manohana ny fiasa rehetra azo atao. Saingy mety ho lehibe loatra izany ho an'ny rafitra mipetaka, ka uglibc na musl no voafidy matetika. Hifantina ny glibc isika (takina izany amin'ny fampiasana systemd).

Kernel Headers sy Custom Kernel Headers andian-dahatsoratra - tsy maintsy mifanaraka amin'ny dikan'ny kernel izay ho ao amin'ny rafitra tafavory. Ho an'ny lohatenin'ny kernel dia azonao atao koa ny mamaritra ny lalana mankany amin'ny tarball na git repository.

GCC COMPILER VERSIONS - safidio ny kinova compiler hampiasaina amin'ny fananganana
Alefaso ny fanohanana C++ - safidio ny fananganana miaraka amin'ny fanohanana ny tranomboky C++ ao amin'ny rafitra. Hahasoa antsika izany amin’ny hoavy.

Safidy gcc fanampiny - azonao atao ny mametraka safidy compiler fanampiny. Tsy mila izany isika amin'izao fotoana izao.

Ny fanamafisana ny rafitra dia ahafahanao mametraka masontsivana ho avy amin'ny rafitra noforonina:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Ny ankamaroan'ny teboka dia mazava amin'ny lohateny. Andeha hodinihintsika ireto teboka manaraka ireto:
Lalana mankany amin'ny latabatra mpampiasa - latabatra misy mpampiasa hoforonina (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Ohatra rakitra. Ny mpampiasa mpampiasa dia noforonina miaraka amin'ny admin tenimiafina, gid/uid mandeha ho azy, /bin/sh shell, mpampiasa vondrona default, root mpikambana ao amin'ny vondrona, mpampiasa Foo

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

Root filesystem overlay directories - lahatahiry voapetaka eo ambonin'ny target-fs tafavory. Manampy rakitra vaovao ary manolo ny efa misy.

Skripta manokana hapetraka alohan'ny hamoronana sarin'ny fichier-rakitra - Ny script dia vita avy hatrany alohan'ny hamoritra ny rafi-drakitra ho sary. Aleo avela ho foana ny script.

Andao ho any amin'ny fizarana Kernel

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Ny firafitry ny kernel dia napetraka eto. Ny kernel mihitsy dia amboarina amin'ny alàlan'ny make linux-menuconfig.
Azonao atao ny mametraka ny dikan-kernel amin'ny fomba samihafa: misafidiana amin'ireo atolotra, ampidiro amin'ny tanana ny dikan-teny, mametraha tahiry na tarball efa vita.

Kernel configuration - lalana mankany amin'ny kernel config. Azonao atao ny misafidy ny config default ho an'ny maritrano voafantina na defocnfig avy amin'ny Linux. Ny loharano Linux dia misy andian-defconfigs ho an'ny rafitra kendrena samihafa. Afaka mahita izay ilainao ianao amin'ny fijerena mivantana ny loharano eto. Ohatra, ho an'ny birao mainty taolana beagle azonao atao mifidy config.

Ny fizarana Target packages dia ahafahanao misafidy izay fonosana hapetraka amin'ny rafitra namboarina. Aleo avela tsy hiova aloha izany. Hanampy ny fonosanay amin'ity lisitra ity izahay any aoriana.
Sary rafitra rakitra - lisitry ny sary rafitra rakitra izay ho angonina. Manampia sary iso

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Bootloaders - fifantenana ny bootloaders hanangona. Andao hisafidy isolinix

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Configuring Systemd

Ny Systemd dia lasa iray amin'ireo andry Linux, miaraka amin'ny kernel sy glibc. Noho izany dia nafindrako tamina singa misaraka ny fandrindrany.

Namboarina tamin'ny alalan'ny make menuconfig, avy eo Target packages → System tools → systemd. Eto ianao dia afaka mamaritra izay serivisy systemd hapetraka sy hatomboka rehefa manomboka ny rafitra.

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Mitahiry ny rafitra rafitra

Tehirizo ity config ity amin'ny alàlan'ny KConfig.

Avy eo tehirizo ny defconfig:

make savedefconfig

Linux Kernel Configuration

Ny fanamafisana kernel Linux dia ampiasaina amin'ny baiko manaraka:

make linux-menuconfig

Andao hanampy fanohanana ny karatra video Virtualbox

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Andao hanampy ny Virtualbox Guest fanohanana fampidirana

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Tehirizo ary mialà. ZAVA-DEHIBE: ny configuration dia ho voatahiry ao amin'ny output/build/linux-$version/config, fa tsy ao anaty board/my_x86_board/linux.config

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Noho izany, mila mandika ny config amin'ny toerana fitahirizana ianao:

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

Aorian'izay dia hanao famerenana tanteraka ny rafitra manontolo isika. buildroot dia tsy manangana izay efa naorina, tsy maintsy mamaritra ny fonosana ho an'ny fananganana indray ianao. Mba tsy handany fotoana sy tebiteby dia mora kokoa ny manangana rafitra kely iray manontolo):

make clean;make

Rehefa vita ny fivoriambe dia atombohy ny VirtualBox (voasedra amin'ny dikan-teny 5.2 sy 6.0) booting avy amin'ny CD System:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Mihazakazaka avy amin'ny iso natambatra:

Buildroot - ampahany 1. Fampahalalana ankapobeny, fanangonana rafitra kely indrindra, fanamafisana amin'ny alàlan'ny menio

Lisitry ny fitaovana ampiasaina

  1. Buildroot manual

Source: www.habr.com

Add a comment