Faatomuaga
I lenei faasologa o tala, ou te manaʻo e tilotilo i le buildroot distribution build system ma faʻasoa loʻu poto masani i le faʻavasegaina. O le ai ai le poto masani i le fatuina o se tamaʻi OS faʻatasi ai ma se faʻataʻitaʻiga faʻataʻitaʻi ma faʻaogaina laʻititi.
Muamua lava, e le tatau ona e fenumiai le faiga fau ma le tufatufaina. Buildroot e mafai ona fausia se faiga mai se seti o afifi o loʻo ofoina atu i ai. Buildroot e fausia i luga ole makefiles ma o lea e tele naua tomai faʻapitoa. Suia se afifi i se isi lomiga, faʻaopoopo lau oe lava afifi, sui tulafono mo le fausiaina o se afifi, faʻavasega le faila faila pe a uma ona faʻapipiʻi uma afifi? buildroot e mafai ona faia nei mea uma.
I Rusia, e faʻaaogaina le buildroot, ae i loʻu manatu e itiiti ni faʻamatalaga i le gagana Rusia mo tagata amata.
O le sini o le galuega o le fa'apipi'iina lea o se pusa fa'asoa fa'atasi ai ma le si'itia ola, icewm interface ma le su'esu'ega. O le fa'ailoga fa'atatau ole virtualbox.
Aisea e fausia ai lau lava tufatufaga? E masani ona mana'omia galuega fa'atapula'a ma fa'agata fa'aagaaga. E oʻo lava i le tele o taimi i le masini e te manaʻomia le fatuina o firmware. O le fetuutuuna'i o se fa'asoa fa'amoemoe lautele e ala i le fa'amamāina o afifi e le mana'omia ma fa'aliliuina i le firmware e sili atu le fa'atinoina o galuega nai lo le fausiaina o se tufatufaga fou. O le fa'aaogaina o Gentoo e iai fo'i ona tapula'a.
O le Buildroot system e matua mamana, ae o le a le faia se mea mo oe. Na'o le mafai ma fa'autometi le fa'agasologa o fa'apotopotoga.
O isi faiga faufale (yocto, tatala fau fale ma isi) e le o iloiloina pe fa'atusatusa.
O fea e maua ai ma le auala e amata ai
Upega tafa'ilagi o Poloketi -
Buildroot e fa'agaoioia defconfigs mo le laupapa fa'amoemoe o le fale. Defconfig o se faila fa'atulagaina e teu ai na'o filifiliga e leai ni tau fa'aletonu. O ia lava na te fuafuaina mea o le a aoina ma pe faʻafefea. I lenei tulaga, e mafai ona e faʻapipiʻi eseʻese le faʻapipiʻi o le busybox, linux-kernel, uglibc, u-boot ma barebox bootloaders, ae o latou uma o le a nonoa i le laupapa taulaʻi.
A maeʻa ona faʻapipiʻiina le faʻamaumauga o loʻo siiina mai poʻo le faʻapipiʻiina mai le git, matou te maua se faʻaoga saunia e faʻaaoga. E mafai ona e faitau atili e uiga i le faʻatulagaina o faʻamaumauga i totonu o le tusi lesona;
komiti - o se lisi ma faila e patino i laupapa taʻitasi. O nei mea e mafai ona avea ma faʻamaumauga mo le faʻatulagaina o ata faʻaoga (iso, sdcart, cpio ma isi), o se lisi faʻapipiʻi, kernel config, ma isi.
fetuunai - o le defconfig moni o le laupapa. Defconfig o se fa'atonuga a le laupapa e le'i atoatoa. E teu ai na'o tapula'a e ese mai le fa'atulagaina fa'aletonu
dl - fa'atonuga fa'atasi ai ma fa'ailoga fa'apogai na siiina mai/faila mo le fa'apotopotoga
galuega faatino/fa'atatau - le faʻapipiʻiina o faila faila o le OS e maua. Mulimuli ane, o ata e faia mai ai mo le siiina / faʻapipiʻi
galuega faatino/ talimalo - mea fa'aoga mo le fa'apotopotoga
gaosiga/fausia - afifi fa'atasi
O le faʻapotopotoga e faʻapipiʻiina e ala ile KConfig. O le faiga lava lea e tasi e faʻaaogaina e fausia ai le fatu Linux. Lisi o tulafono e masani ona faʻaaogaina (faʻatino i le buildroot directory):
- fai menuconfig - valaau le faʻatulagaina o le fausiaina. E mafai foi ona e faʻaogaina le faʻaoga faʻataʻitaʻi (faia nconfig, fai xconfig, fai gconfig)
- fai linux-menuconfig - valaʻau le kernel configuration.
- fa'amama - fa'amama i'uga fau (mea uma o lo'o teuina i totonu o galuega)
- fai - fausia se faiga. E le toe fa'aopoopoina faiga ua uma ona fa'apipi'iina.
- fai defconfig_name - sui le faʻatulagaga i se faʻamatalaga patino
- fai lisi-defconfigs - faʻaali se lisi o faʻaoga
- fai puna - naʻo le downloadina o faila faʻapipiʻi, e aunoa ma le fausiaina.
- fai fesoasoani - lisi poloaiga e mafai
Fa'amatalaga taua ma fesoasoani fesoasoani
Buildroot e le toe fausia ni afifi ua uma ona fausia! O le mea lea, e ono tulaʻi mai se tulaga e manaʻomia ai se toe faʻapipiʻi atoatoa.
E mafai ona e toe fausia se afifi ese ma le poloaiga fai packagename-rebuild. Mo se faʻataʻitaʻiga, e mafai ona e toe fausia le fatu Linux:
make linux-rebuild
E teu e Buildroot le tulaga o so'o se afifi e ala i le fatuina o faila .stamp i le fa'atonuga/fausia/$packagename:
O le mea lea, e mafai ona e toe fausia aʻa-fs ma ata e aunoa ma le toe fausia o afifi:
rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
Fa'aoga Fuafuaga
buildroot o loʻo i ai se seti o fesuiaiga mo faʻaoga faigofie
- $TOPDIR - buildroot directory
- $BASEDIR - OUTPUT directory
- $HOST_DIR, $STAGING_DIR, $TARGET_DIR - talimalo fs, fa'atulagaina fs, fa'amoemoe fs fausia fa'atonuga.
- $BUILD_DIR - fa'atonuga fa'atasi ma afifi ma fa'apipi'iina
Faʻaaliga vaaia
buildroot o lo'o iai se fa'aaliga fa'aaliga E mafai ona e fausia se ata fa'alagolago, se kalafi taimi fau, ma se kalafi o lapopo'a i le faiga mulimuli. O fa'ai'uga o lo'o iai i le faiga o faila pdf (e mafai ona e filifili mai le svn,png) i le fa'asologa o galuega/kalafa.
Fa'ata'ita'iga o fa'atonuga fa'aaliga:
make graph-depends
fausia laau faalagolagomake <pkg>-graph-depends
fausia se laau faalagolago mo se afifi faapitoaBR2_GRAPH_OUT=png make graph-build
taimi fau fa'afuafua fa'atasi ai ma mea e maua ai le PNGmake graph-size
fa'ailoga le tele o le afifi
Fa'amatalaga aoga
E iai se subdirectory i le buildroot directory fa'aoga ma tusitusiga aoga. Mo se faʻataʻitaʻiga, o loʻo i ai se tusitusiga e siaki ai le saʻo o faʻamatalaga o afifi. Atonu e aoga lenei mea pe a faʻaopoopo au lava afifi (O le a ou faia mulimuli ane). O le faila utils/readme.txt o loʻo i ai se faʻamatalaga o nei tusitusiga.
Tatou fausia se faasoasoaga
E taua le manatua o gaioiga uma e faia e fai ma sui o se tagata faʻaoga masani, ae le o le aʻa.
O fa'atonuga uma o lo'o fa'atinoina i le buildroot. O le pusa buildroot ua uma ona aofia ai se seti o faʻasalalauga mo le tele o laupapa masani ma virtualization.
Sei o tatou tilotilo i le lisi o faʻatonuga:
Su'e ile qemu_x86_64_defconfig config
make qemu_x86_64_defconfig
Ma tatou amata le faʻapotopotoga
make
Ua mae'a lelei le fausiaina, va'ai i'uga:
Buildroot ua tuufaatasia ata e mafai ona e tamoe i Qemu ma faʻamaonia e aoga.
qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
O le taunuuga o se faiga o loʻo taʻavale i le qemu:
Fausia lau oe lava fa'atulagaina laupapa
Fa'aopoopo Faila Fa'atonu
Sei o tatou tilotilo i le lisi o faʻatonuga:
I le lisi matou te vaʻai pc_x86_64_efi_defconfig. O le a matou fatuina a matou lava laupapa e ala i le kopiina mai le faʻatulagaga:
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
Sei o tatou vave faia se lisi laupapa e teu ai a tatou tusitusiga, rootfs-overlay ma isi faila talafeagai:
mkdir board/my_x86_board
Su'e i le defconfig lenei:
make my_x86_board_defconfig
O lea la, o le taimi nei o le fausia config (teuina i le .config i le aʻa o le buildroot directory) e fetaui ma le x86-64 legacy(bios) boot target machine.
Sei o tatou kopiina le linux-kernel configuration (aoga mulimuli ane):
cp board/pc/linux.config board/my_x86_board/
Fa'atulagaina fa'amaufa'ailoga e ala ile KConfig
Tatou amata le seti:
make menuconfig
O le a tatala le faamalama KConfig. E mafai ona faʻapipiʻi i se ata faʻataʻitaʻi (faia nconfig, fai xconfig, fai gconfig):
Matou te ulu atu i le vaega muamua Filifiliga Tau. O iinei e mafai ai ona e filifilia le fausaga faʻatulagaina o le a faʻatinoina ai le fausiaina.
Fausia filifiliga - o loʻo i ai tulaga faufale eseese iinei. E mafai ona e faʻamaoti faʻamaumauga faʻatasi ai ma tulafono faʻavae, numera o filo fau, faʻata mo le siiina mai o tulafono faʻavae ma isi tulaga. Se'i o tatou tu'u le fa'atonuga.
Toolchain - o meafaigaluega faufale lava latou ua faʻatulagaina iinei. Faitau atili e uiga ia te ia.
Ituaiga mea faigaluega - ituaiga o mea faigaluega faʻaaogaina. E mafai ona avea lenei mea ma se meafaigaluega e fausia i totonu o le buildroot poʻo se mea i fafo (e mafai ona e faʻamaonia le lisi ma le mea ua uma ona fausia poʻo le url mo le siiina). O lo'o iai avanoa fa'aopoopo mo fausaga eseese. Mo se faʻataʻitaʻiga, mo le lima e mafai ona e filifilia naʻo le Linaro version o le mea faigaluega fafo.
C faletusi - filifilia o le faletusi C O le faʻaogaina o le polokalama atoa e faʻalagolago i lenei. E masani lava, o le glibc o loʻo faʻaaogaina, lea e lagolagoina uma galuega faʻatino. Ae atonu e tele tele mo se faiga faʻapipiʻi, o lea e masani ona filifilia uglibc poʻo musl. Matou te filifilia glibc (o le a manaʻomia mulimuli ane e faʻaaoga systemd).
Kernel Headers ma Custom Kernel Headers faasologa - e tatau ona fetaui ma le faʻasologa o le fatu o le a i totonu o le faʻalapotopotoga faʻapipiʻi. Mo ulutala fatu, e mafai foi ona e faʻamaonia le ala i le tarball poʻo le git repository.
GCC COMPILER VERSIONS - filifili le faʻapipiʻi faʻaoga e faʻaoga mo le fausiaina
Fa'aagaoi le C++ lagolago - filifili e fau ma le lagolago mo C++ faletusi i totonu o le faiga. O le a aoga lenei mea ia i tatou i le lumanaʻi.
Fa'aopoopo filifiliga gcc - e mafai ona e setiina fa'aopoopo filifiliga tu'ufa'atasi. Matou te le manaʻomia mo le taimi nei.
Fa'atonuga fa'aoga e mafai ai e oe ona fa'atulagaina ni fa'asologa i le lumana'i o le faiga na faia:
O le tele o manatu e manino mai le ulutala. Seʻi o tatou uaʻi atu i manatu nei:
Auala i laulau a tagata fa'aoga - laulau ma tagata fa'aoga e fau (
Faila faila. O le tagata fa'aoga fa'aoga o le a faia i le fa'aupuga admin, otometi gid/uid, /bin/sh atigi, fa'aoga le fa'aoga fa'aoga, a'a tagata o le vaega, fa'amatalaga Foo tagata fa'aoga
[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 directory - fa'atonuga fa'apipi'i ile pito i luga ole fa'aputuga-fs. Faaopoopo faila fou ma sui faila o iai.
Fa'asinomaga fa'apitoa e fa'agasolo a'o le'i faia ata faifaila - Fa'atino fa'atonu a'o le'i gaugau le faiga faila i ata. Se'i tu'u pea le fa'amatalaga lava ia gaogao mo le taimi nei.
Tatou o i le vaega Kernel
O lo'o fa'atulaga i'inei fa'atonuga fatu. O le fatu lava ia e faʻapipiʻiina e ala i le faia linux-menuconfig.
E mafai ona e setiina le kernel version i auala eseese: filifili mai i latou na ofoina atu, ulufale i le lomiga ma le lima, faʻamaonia se faleoloa poʻo se tarball ua saunia.
Kernel configuration - ala i le kernel config. E mafai ona e filifilia le faʻatulagaina faʻaletonu mo le fausaga filifilia poʻo le defocnfig mai Linux. O le puna Linux o loʻo i ai se seti o faʻataʻitaʻiga mo faiga faʻatulagaina eseese. E mafai ona e mauaina le mea e te manaʻomia
O le vaega Target packages e mafai ai ona e filifili po o fea afifi o le a faʻapipiʻiina i luga o le polokalama o loʻo fausia. Sei o tatou tuu pea e le suia mo le taimi nei. O le a matou faʻaopoopoina a matou afifi i lenei lisi mulimuli ane.
Fa'atonu ata - o se lisi o ata faiga faila o le a aoina. Fa'aopoopo se ata iso
Bootloaders - filifilia o bootloaders e aoina. Sei o tatou filifili isolinix
Fa'atonu Systemd
Systemd ua avea ma se tasi o poutu o Linux, faatasi ai ma fatu ma glibc. O le mea lea, na ou siitia ai lona seti i se mea ese.
Fa'atonu e ala i le faia menuconfig, ona fa'asolo lea o afifi Fa'atatau → Meafaigaluega fa'aoga → systemd. O iinei e mafai ona e faʻamaonia poʻo fea auaunaga systemd o le a faʻapipiʻiina ma amata pe a amata le polokalama.
Fa'asaoina le fa'atulagaina o faiga
Matou te faʻasaoina lenei config e ala ile KConfig.
Ona fa'asaoina lea o la matou defconfig:
make savedefconfig
Linux Kernel Configuration
O le Linux kernel configuration o loʻo faʻaaogaina i le poloaiga lenei:
make linux-menuconfig
Tatou fa'aopoopo le lagolago mo le Virtualbox video card
Tatou fa'aopoopoina le lagolago tu'ufa'atasiga a le Virtualbox Guest
Sefe ma alu ese. TAIMI: fa'atulagaina o le a fa'asaoina i le gaosiga/fausia/linux-$version/config, ae le o totonu o le laupapa/my_x86_board/linux.config
O lea la, e tatau ona e kopiina ma le lima le config i se nofoaga e teu ai:
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
A maeʻa lea o le a matou faia se toe faʻaleleia atoatoa o le faiga atoa. buildroot e le toe fausia mea ua uma ona fausia, e tatau ona e faʻamaʻoti ma le lima afifi mo le toe fausia. Ina ia aua nei faʻaumatia le taimi ma neura, e sili atu ona faigofie le toe fausia o se tamaʻi faiga atoa):
make clean;make
A maeʻa le fausiaina, faʻalauiloa VirtualBox (faʻataʻitaʻiina i lomiga 5.2 ma le 6.0) faʻapipiʻi mai le CD System:
Tamomoe mai le iso ua tuufaatasia:
Lisi o mea fa'aoga
- Buildroot tusi lesona
puna: www.habr.com