Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Taw qhia

Nyob rau hauv cov kab lus no, kuv xav mus saib cov buildroot faib tsim system thiab qhia kuv cov kev paub nyob rau hauv customizing nws. Yuav muaj kev paub dhau los hauv kev tsim OS me me nrog cov duab kos duab thiab ua haujlwm tsawg.

Ua ntej ntawm tag nrho cov, koj yuav tsum tsis txhob confuse lub build system thiab kev faib. Buildroot tuaj yeem tsim ib qho system los ntawm cov txheej txheem ntawm cov pob khoom uas tau muab rau nws. Buildroot yog tsim los ntawm makefiles thiab yog li nws muaj peev xwm hloov kho loj heev. Hloov ib pob nrog rau lwm version, ntxiv koj tus kheej pob, hloov cov cai rau kev tsim ib pob, kho cov ntaub ntawv system tom qab txhim kho tag nrho cov pob? buildroot tuaj yeem ua txhua yam no.

Nyob rau hauv Russia, buildroot yog siv, tab sis nyob rau hauv kuv lub tswv yim muaj me ntsis lus Lavxias teb sab lus rau beginners.

Lub hom phiaj ntawm kev ua haujlwm yog sib sau ua ke cov khoom siv faib khoom nrog nyob download, icewm interface thiab browser. Lub hom phiaj platform yog virtualbox.

Vim li cas thiaj tsim koj tus kheej kev faib tawm? Feem ntau txwv kev ua haujlwm yog xav tau nrog cov peev txheej tsawg. Txawm ntau zaus hauv automation koj yuav tsum tsim firmware. Kev kho qhov kev faib tawm dav dav los ntawm kev ntxuav tawm cov pob khoom tsis tsim nyog thiab tig mus rau hauv firmware yog siv zog ntau dua li tsim kev faib tawm tshiab. Siv Gentoo kuj muaj nws cov kev txwv.

Buildroot system muaj zog heev, tab sis nws yuav tsis ua dab tsi rau koj. Nws tsuas muaj peev xwm pab tau thiab automate cov txheej txheem sib dhos.

Lwm txoj kev tsim tshuab (yocto, qhib tsim system thiab lwm yam) tsis suav lossis muab piv.

Yuav tau txais qhov twg thiab yuav pib li cas

Qhov project website - buildroot.org. Ntawm no koj tuaj yeem rub tawm cov ntawv tam sim no thiab nyeem phau ntawv. Nyob ntawd koj tuaj yeem tiv tauj rau zej zog, muaj kab laum tracker, mail-lists thiab irc channel.

Buildroot ua haujlwm defconfigs rau lub hom phiaj pawg thawj coj ntawm kev tsim. Defconfig yog cov ntaub ntawv teeb tsa uas khaws cov kev xaiv uas tsis muaj qhov tseem ceeb. Nws yog tus uas txiav txim siab seb yuav sau dab tsi thiab yuav ua li cas. Hauv qhov no, koj tuaj yeem cais cov teeb tsa ntawm busybox, linux-kernel, uglibc, u-boot thiab barebox bootloaders, tab sis tag nrho cov ntawm lawv yuav raug khi rau lub hom phiaj board.
Tom qab unpacking lub downloaded archive los yog cloning los ntawm git, peb tau txais ib tug npaj-rau-siv buildroot. Koj tuaj yeem nyeem ntxiv txog cov qauv hauv phau ntawv qhia; Kuv yuav qhia koj txog qhov tseem ceeb tshaj plaws:

Rooj Tswjhwm Saib cov - ib daim ntawv teev npe nrog cov ntaub ntawv tshwj xeeb rau txhua pawg thawj coj. Cov no tuaj yeem yog cov ntawv sau rau kev tsim cov duab kab ke (iso, sdcart, cpio thiab lwm yam), ib qho kev qhia overlay, kernel config, thiab lwm yam.
configs - qhov tseeb defconfig ntawm lub rooj tsavxwm. Defconfig yog ib qho kev teeb tsa tsis tiav. Nws tsuas khaws cov kev txwv uas txawv ntawm qhov chaw pib
dl - directory nrog downloaded qhov chaws / cov ntaub ntawv rau kev sib dhos
tso zis / phiaj - cov ntaub ntawv sib sau ua ke ntawm OS. Tom qab ntawd, cov duab tsim los ntawm nws rau rub tawm / nruab
tso zis / host - host kev siv hluav taws xob rau kev sib dhos
tso zis / tsim - cov pob khoom sib dhos

Lub rooj sib txoos tau teeb tsa ntawm KConfig. Tib lub cev yog siv los tsim lub Linux ntsiav. Cov npe ntawm cov lus txib feem ntau siv (ua haujlwm hauv buildroot directory):

  • ua menuconfig - hu rau tsim configuration. Koj tseem tuaj yeem siv cov graphical interface (ua nconfig, ua xconfig, ua gconfig)
  • ua linux-menuconfig - hu rau kernel configuration.
  • ua kom huv - ntxuav cov txiaj ntsig tsim (txhua yam khaws cia hauv cov zis)
  • ua-tsim system. Qhov no tsis reassemble twb assembled txheej txheem.
  • ua defconfig_name - hloov qhov kev teeb tsa mus rau qhov tshwj xeeb defconfig
  • ua cov npe-defconfigs - qhia cov npe ntawm defconfigs
  • ua qhov chaw - tsuas yog rub tawm cov ntaub ntawv teeb tsa, tsis muaj tsev.
  • ua kev pab - sau cov lus txib ua tau

Cov ntawv tseem ceeb thiab cov lus qhia pab tau

Buildroot tsis rov tsim cov pob khoom uas twb tau ua lawm! Yog li ntawd, qhov xwm txheej yuav tshwm sim qhov twg yuav tsum tau ua kom tiav reassembly.

Koj tuaj yeem rov tsim ib lub pob cais nrog cov lus txib ua packagename-rebuild. Piv txwv li, koj tuaj yeem tsim kho lub Linux kernel:

make linux-rebuild

Buildroot khaws lub xeev ntawm ib pob los ntawm kev tsim .stamp cov ntaub ntawv hauv cov zis / tsim / $ pob npe npe:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Yog li ntawd, koj tuaj yeem tsim kho hauv paus-fs thiab cov duab yam tsis muaj pob khoom rov tsim dua:

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

Muaj txiaj ntsig Variables

buildroot muaj cov txheej txheem sib txawv kom yooj yim configuration

  • $TOPDIR - buildroot directory
  • $BASEDIR - OUTPUT directory
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR β€” host fs, staging fs, phiaj fs build directory.
  • $BUILD_DIR - directory nrog unpacked thiab ua tej pob khoom

Kev Pom Kev

Buildroot muaj qhov ua kom pom tseeb, koj tuaj yeem tsim cov duab kos duab, tsim lub sijhawm teeb tsa, thiab daim duab ntawm pob qhov loj hauv qhov kawg. Cov txiaj ntsig yog nyob rau hauv daim ntawv ntawm pdf cov ntaub ntawv (koj tuaj yeem xaiv los ntawm svn, png) hauv cov ntawv tso zis / duab.

Piv txwv ntawm visualization commands:

  • make graph-depends tsim tsob ntoo nyob
  • make <pkg>-graph-depends tsim ib tsob ntoo dependency rau ib pob tshwj xeeb
  • BR2_GRAPH_OUT=png make graph-build plot tsim lub sij hawm nrog PNG tso zis
  • make graph-size daim phiaj pob ntawv loj

Cov ntawv sau muaj txiaj ntsig

Muaj ib tug subdirectory nyob rau hauv lub buildroot directory siv nrog cov ntawv sau muaj txiaj ntsig. Piv txwv li, muaj ib tsab ntawv uas tshuaj xyuas qhov tseeb ntawm pob lus piav qhia. Qhov no yuav pab tau thaum ntxiv koj cov pob khoom (Kuv mam li ua qhov no tom qab). Cov ntaub ntawv utils/readme.txt muaj cov lus piav qhia ntawm cov ntawv no.

Cia peb tsim cov khoom faib khoom

Nws yog ib qho tseem ceeb kom nco ntsoov tias tag nrho cov kev khiav hauj lwm yog ua los ntawm cov neeg siv tsis tu ncua, tsis yog hauv paus.
Tag nrho cov lus txib tau ua tiav hauv buildroot. Cov pob buildroot twb suav nrog cov txheej txheem teeb tsa rau ntau lub rooj sib tham thiab virtualization.

Cia peb saib cov npe ntawm kev teeb tsa:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Hloov mus rau qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Thiab peb pib lub rooj sib txoos

make

Kev tsim ua tiav tiav, saib cov txiaj ntsig:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Buildroot tau tso ua ke cov duab uas koj tuaj yeem khiav hauv Qemu thiab xyuas tias lawv ua haujlwm.

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

Qhov tshwm sim yog qhov system khiav hauv qemu:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Tsim koj tus kheej board configuration

Ntxiv cov ntaub ntawv Board

Cia peb saib cov npe ntawm kev teeb tsa:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Hauv cov npe peb pom pc_x86_64_efi_defconfig. Peb yuav tsim peb lub rooj tsavxwm los ntawm kev theej nws los ntawm kev teeb tsa:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Cia tam sim ntawd tsim ib daim ntawv teev npe los khaws peb cov ntawv sau, rootfs-overlay thiab lwm yam ntaub ntawv tsim nyog:

mkdir board/my_x86_board

Hloov mus rau qhov defconfig no:

make my_x86_board_defconfig

Yog li, tam sim no tus tsim config ( khaws cia hauv .config hauv lub hauv paus ntawm buildroot directory) sib raug rau x86-64 legacy (bios) khau raj lub hom phiaj tshuab.

Cia peb theej lub linux-kernel configuration (paub tom qab):

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

Teeb tsa cov kev txwv ntawm KConfig

Cia peb pib lub teeb:

make menuconfig 

KConfig qhov rais yuav qhib. Nws tuaj yeem teeb tsa nrog graphical interface (ua nconfig, ua xconfig, ua gconfig):

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Peb nkag mus rau thawj ntu Kev Xaiv Lub Hom Phiaj. Ntawm no koj tuaj yeem xaiv lub hom phiaj architecture uas tsim yuav ua tiav.

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Tsim cov kev xaiv - muaj ntau yam tsim kho ntawm no. Koj tuaj yeem teev cov npe nrog cov lej cim, tus naj npawb ntawm cov xov tsim, tsom iav rau rub tawm cov lej cim thiab lwm qhov chaw. Cia peb tawm ntawm qhov chaw ntawm lub neej ntawd.

Toolchain - cov cuab yeej tsim lawv tus kheej tau teeb tsa ntawm no. Nyeem ntxiv txog nws.

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Toolchain type – hom toolchain siv. Qhov no tuaj yeem yog lub cuab yeej cuab tam ua rau hauv buildroot lossis ib qho sab nraud (koj tuaj yeem teev cov npe nrog cov twb tau ua ib qho los yog url rau rub tawm). Muaj cov kev xaiv ntxiv rau cov architectures sib txawv. Piv txwv li, rau caj npab koj tuaj yeem xaiv cov Linaro version ntawm cov cuab yeej sab nraud.

C lub tsev qiv ntawv - xaiv ntawm C lub tsev qiv ntawv. Feem ntau, glibc yog siv, uas txhawb txhua qhov ua tau zoo. Tab sis nws yuav loj dhau rau lub kaw lus embedded, yog li uglibc lossis musl feem ntau xaiv. Peb yuav xaiv glibc (qhov no yuav tsum tau tom qab siv systemd).

Kernel Headers thiab Custom Kernel Headers series - yuav tsum phim cov version ntawm cov ntsiav uas yuav nyob rau hauv cov txheej txheem sib dhos. Rau kernel headers, koj tuaj yeem hais qhia txoj hauv kev mus rau tarball lossis git repository.

GCC COMPILER VERSIONS - xaiv cov compiler version los siv rau lub tsev
Pab txhawb C ++ - xaiv los tsim nrog kev txhawb nqa rau C ++ cov tsev qiv ntawv hauv qhov system. Qhov no yuav pab tau rau peb yav tom ntej.

Cov kev xaiv gcc ntxiv - koj tuaj yeem teeb tsa cov kev xaiv compiler ntxiv. Peb tsis xav tau tam sim no.

Qhov system configuration tso cai rau koj los teeb tsa yav tom ntej tsis ntawm qhov tsim system:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Feem ntau ntawm cov ntsiab lus yog qhov tseeb ntawm lub npe. Cia peb mloog cov ntsiab lus hauv qab no:
Txoj kev mus rau cov neeg siv cov rooj - rooj nrog cov neeg siv los tsim (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Piv txwv cov ntaub ntawv. Tus neeg siv yuav raug tsim nrog tus password admin, cia li gid/uid, /bin/sh plhaub, default pab pawg neeg siv, pab pawg neeg hauv paus, saib Foo neeg siv

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

Hauv paus filesystem overlay directories - directory overlayed on to top of the assembled target-fs. Ntxiv cov ntaub ntawv tshiab thiab hloov cov uas twb muaj lawm.

Custom scripts khiav ua ntej tsim filesystem dluab - Scripts ua tam sim ntawd ua ntej folding lub filesystem rau hauv cov duab. Cia peb tso tsab ntawv tseg rau tam sim no.

Wb mus rau ntu Kernel

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Kernel nqis tau teeb tsa ntawm no. Lub kernel nws tus kheej yog configured ntawm ua linux-menuconfig.
Koj tuaj yeem teeb tsa cov ntsiav version nyob rau hauv ntau txoj kev: xaiv los ntawm cov uas tau muab, nkag mus rau lub version manually, qhia ib lub repository los yog npaj txhij-ua tarball.

Kernel configuration - txoj hauv kev mus rau kernel config. Koj tuaj yeem xaiv qhov kev teeb tsa lub neej ntawd rau qhov xaiv architecture lossis defocnfig los ntawm Linux. Lub hauv paus Linux muaj cov txheej txheem defconfigs rau cov phiaj xwm sib txawv. Koj tuaj yeem nrhiav qhov koj xav tau los ntawm kev saib ncaj qha ntawm cov peev txheej ntawm no. Piv txwv li, rau beagle pob txha dub board koj tuaj yeem ua tau xaiv config.

Lub Hom Phiaj ntu tso cai rau koj xaiv cov pob twg yuav raug teeb tsa ntawm lub kaw lus tsim. Cia peb cia nws tsis hloov rau tam sim no. Peb yuav ntxiv peb cov pob khoom rau cov npe no tom qab.
Filesystem dluab - ib daim ntawv teev cov ntaub ntawv system dluab uas yuav raug sau. Ntxiv ib daim duab iso

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Bootloaders - xaiv cov bootloaders los sau. Cia peb xaiv isolinix

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Configuring Systemd

Systemd tau dhau los ua ib tus ncej ntawm Linux, nrog rau cov ntsiav thiab glibc. Yog li ntawd, kuv tsiv nws qhov chaw mus rau ib qho khoom cais.

Configured ntawm ua menuconfig, ces Target pob β†’ System cuab yeej β†’ systemd. Ntawm no koj tuaj yeem txheeb xyuas qhov kev pabcuam systemd yuav raug teeb tsa thiab pib thaum lub kaw lus pib.

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Txuag system configuration

Peb khaws qhov kev teeb tsa no ntawm KConfig.

Tom qab ntawd txuag peb defconfig:

make savedefconfig

Linux Kernel Configuration

Linux kernel configuration yog invoked nrog cov lus txib hauv qab no:

make linux-menuconfig

Wb ntxiv kev txhawb nqa rau Virtualbox video card

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Wb ntxiv Virtualbox Guest integration support

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Txuag thiab tawm. TSEEM CEEB: configuration yuav raug cawm dim hauv cov zis / tsim / linux-$version / config, tab sis tsis nyob rau hauv board/my_x86_board/linux.config

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Yog li ntawd, koj yuav tsum manually luam cov config rau ib qhov chaw cia:

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

Tom qab ntawd peb yuav ua tiav reassembly ntawm tag nrho cov system. buildroot tsis rebuild dab tsi twb tau ua, koj yuav tsum manually qhia tej pob khoom rau rebuilding. Txhawm rau kom tsis txhob nkim sijhawm thiab cov hlab ntsha, nws yooj yim dua los tsim kho lub cev me me nkaus xwb):

make clean;make

Thaum ua tiav qhov tsim, tso VirtualBox (kuaj ntawm versions 5.2 thiab 6.0) booting los ntawm CD. System tsis:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Khiav los ntawm kev sib dhos iso:

Buildroot - ib feem 1. Cov ntaub ntawv dav dav, sib sau ua ke ib qho me me, teeb tsa los ntawm cov ntawv qhia zaub mov

Daim ntawv teev cov khoom siv

  1. Buildroot phau ntawv

Tau qhov twg los: www.hab.com

Ntxiv ib saib