Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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.org. O iinei e mafai ona e sii maia le lomiga o loʻo i ai nei ma faitau le tusi lesona. O iina e mafai ona e faʻafesoʻotaʻi ai le nuʻu, o loʻo i ai se siaki pusi, lisi-meli ma se alalaupapa irc.

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:

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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 faalagolago
  • make <pkg>-graph-depends fausia se laau faalagolago mo se afifi faapitoa
  • BR2_GRAPH_OUT=png make graph-build taimi fau fa'afuafua fa'atasi ai ma mea e maua ai le PNG
  • make 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:

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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 - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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:

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

Fausia lau oe lava fa'atulagaina laupapa

Fa'aopoopo Faila Fa'atonu

Sei o tatou tilotilo i le lisi o faʻatonuga:

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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):

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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.

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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.

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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:

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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 (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

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

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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 e ala i le tilotilo sa'o i puna'oa iinei. Mo se faʻataʻitaʻiga, mo se laupapa uliuli ponaivi beagle e te mafaia filifili config.

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

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

Bootloaders - filifilia o bootloaders e aoina. Sei o tatou filifili isolinix

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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.

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

Tatou fa'aopoopoina le lagolago tu'ufa'atasiga a le Virtualbox Guest

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

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:

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

Tamomoe mai le iso ua tuufaatasia:

Buildroot - vaega 1. Faʻamatalaga lautele, faʻapipiʻiina o se faiga laʻititi, faʻatulagaina e ala i le lisi

Lisi o mea fa'aoga

  1. Buildroot tusi lesona

puna: www.habr.com

Faaopoopo i ai se faamatalaga