Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Ynlieding

Yn dizze searje artikels wol ik sjen nei it buildsysteem foar buildroot-distribúsje en myn ûnderfining diele yn it oanpassen. Hjir sille jo praktyske ûnderfining hawwe yn it meitsjen fan in lyts OS mei in grafyske ynterface en minimale funksjonaliteit.

Earst moatte jo it bousysteem en de distribúsje net betize. Buildroot kin in systeem bouwe út in set fan pakketten dy't deroan wurde oanbean. Buildroot is boud op makefiles en hat dêrom enoarme oanpassingsmooglikheden. Ferfange in pakket mei in oare ferzje, foegje jo eigen pakket ta, feroarje de regels foar it bouwen fan in pakket, oanpasse it bestânsysteem nei it ynstallearjen fan alle pakketten? buildroot kin dit alles dwaan.

Yn Ruslân wurdt buildroot brûkt, mar nei myn miening is d'r net folle Russysktalige ynformaasje foar begjinners.

It doel fan it wurk is om in distribúsjekit te sammeljen mei live download, icewm-ynterface en browser. It doelplatfoarm is virtualbox.

Wêrom bouwe jo eigen distribúsje? Faak is beheinde funksjonaliteit nedich mei beheinde middels. Noch faker yn automatisearring moatte jo firmware oanmeitsje. It oanpassen fan in distribúsje foar algemiene doelen troch ûnnedige pakketten skjin te meitsjen en it yn firmware te feroarjen is arbeidsyntinsiver dan it bouwen fan in nije distribúsje. It brûken fan Gentoo hat ek syn beheiningen.

It Buildroot-systeem is heul krêftich, mar it sil neat foar jo dwaan. It kin allinich it assemblageproses ynskeakelje en automatisearje.

Alternative bousystemen (yocto, iepen bouwsysteem en oaren) wurde net beskôge of fergelike.

Wêr te krijen en hoe te begjinnen

Projektwebside - buildroot.org. Hjir kinne jo de aktuele ferzje downloade en de hantlieding lêze. Dêr kinne jo kontakt opnimme mei de mienskip, d'r is in bug tracker, e-postlisten en in irc-kanaal.

Buildroot wurket defconfigs foar it doelboerd fan 'e build. Defconfig is in konfiguraasjetriem dat allinich opsjes bewarret dy't gjin standertwearden hawwe. It is hy dy't bepaalt wat wurdt sammele en hoe. Yn dit gefal kinne jo de konfiguraasjes fan busybox, linux-kernel, uglibc, u-boot en barebox bootloaders apart konfigurearje, mar se wurde allegear bûn oan it doelboerd.
Nei it útpakke fan it ynladen argyf of klonen fan git, krije wy in klear te brûken buildroot. Jo kinne mear lêze oer de mapstruktuer yn 'e hantlieding; Ik sil jo fertelle oer de wichtichste:

board - in map mei bestannen spesifyk foar elk boerd. Dit kinne skripts wêze foar it foarmjen fan systeemôfbyldings (iso, sdcart, cpio en oaren), in overlay-map, kernel-konfiguraasje, ensfh.
configs - de eigentlike defconfig fan it bestjoer. Defconfig is in ûnfolsleine boerdkonfiguraasje. It bewarret allinich parameters dy't ferskille fan 'e standertynstellingen
dl - map mei ynladen boarne koades / bestannen foar montage
útfier / doel - it gearstalde bestânsysteem fan it resultearjende OS. Dêrnei wurde ôfbyldings derfan makke foar ynlaad/ynstallaasje
útfier / host - host nutsbedriuwen foar montage
útfier / bouwe - gearstalde pakketten

De gearstalling wurdt konfigurearre fia KConfig. Itselde systeem wurdt brûkt om de Linux kernel te bouwen. List mei de meast brûkte kommando's (útfiere yn 'e buildroot-map):

  • meitsje menuconfig - rop de boukonfiguraasje op. Jo kinne ek de grafyske ynterface brûke (meitsje nconfig, meitsje xconfig, meitsje gconfig)
  • meitsje linux-menuconfig - rop de kernelkonfiguraasje op.
  • meitsje skjin - skjin de bouresultaten (alles opslein yn útfier)
  • meitsje - bouwe in systeem. Dit bringt al gearstalde prosessen net op 'e nij.
  • meitsje defconfig_name - skeakelje de konfiguraasje nei in spesifike defconfig
  • meitsje list-defconfigs - lit in list mei defconfigs sjen
  • meitsje boarne - download gewoan de ynstallaasjebestannen, sûnder te bouwen.
  • meitsje help - list mooglike kommando's

Wichtige notysjes en nuttige tips

Buildroot bout pakketten net opnij op dy't al binne boud! Dêrom kin in situaasje ûntstean wêr't in folsleine weryndieling fereaske is.

Jo kinne in apart pakket opnij opbouwe mei it kommando meitsje packagename-rebuild. Jo kinne bygelyks de Linux kernel opnij bouwe:

make linux-rebuild

Buildroot bewarret de steat fan elk pakket troch it meitsjen fan .stamp-bestannen yn 'e útfier/build/$packagename-map:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Dêrom kinne jo root-fs en ôfbyldings opnij opbouwe sûnder pakketten opnij op te bouwen:

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

Nuttige fariabelen

buildroot hat in set fan fariabelen foar maklike konfiguraasje

  • $TOPDIR - buildroot map
  • $BASEDIR - OUTPUT map
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR — host fs, staging fs, target fs build directories.
  • $BUILD_DIR - map mei útpakte en boude pakketten

Fisualisaasje

buildroot hat in fisualisaasjefunksje Jo kinne in ôfhinklikensdiagram, in build-tiidgrafyk en in grafyk fan pakketgrutte bouwe yn it definitive systeem. De resultaten binne yn 'e foarm fan pdf-bestannen (jo kinne kieze út svn, png) yn' e útfier / grafykmap.

Foarbylden fan fisualisaasjekommando's:

  • make graph-depends bouwe ôfhinklikensbeam
  • make <pkg>-graph-depends bouwe in ôfhinklikensbeam foar in spesifyk pakket
  • BR2_GRAPH_OUT=png make graph-build plot bouwe tiid mei PNG útfier
  • make graph-size plot pakket grutte

Nuttige skripts

D'r is in submap yn 'e buildroot-map utils mei brûkbere skripts. D'r is bygelyks in skript dat de krektens fan pakketbeskriuwingen kontrolearret. Dit kin nuttich wêze as jo jo eigen pakketten tafoegje (ik sil dit letter dwaan). De triem utils/readme.txt befettet in beskriuwing fan dizze skripts.

Litte wy in stockferdieling bouwe

It is wichtich om te betinken dat alle operaasjes wurde útfierd út namme fan in gewoane brûker, net root.
Alle kommando's wurde útfierd yn 'e buildroot. It buildroot-pakket omfettet al in set konfiguraasjes foar in protte mienskiplike boerden en virtualisaasje.

Litte wy nei de list mei konfiguraasjes sjen:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Wikselje nei de qemu_x86_64_defconfig konfiguraasje

make qemu_x86_64_defconfig

En wy begjinne de gearkomste

make

De bou foltôge mei sukses, sjoch nei de resultaten:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Buildroot hat ôfbyldings gearstald dy't jo kinne útfiere yn Qemu en ferifiearje dat se wurkje.

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

It resultaat is in systeem dat rint yn qemu:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

It meitsjen fan jo eigen boerdkonfiguraasje

Taheakjen Board Files

Litte wy nei de list mei konfiguraasjes sjen:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Yn 'e list sjogge wy pc_x86_64_efi_defconfig. Wy sille ús eigen boerd oanmeitsje troch it te kopiearjen fan 'e konfiguraasje:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Litte wy fuortendaliks in boerdmap oanmeitsje om ús skripts, rootfs-overlay en oare nedige bestannen op te slaan:

mkdir board/my_x86_board

Wikselje nei dizze defconfig:

make my_x86_board_defconfig

Sa komt no de build-konfiguraasje (opslein yn .config yn 'e root fan' e buildroot-map) oerien mei de x86-64 legacy (bios) bootdoelmasine.

Litte wy de linux-kernel-konfiguraasje kopiearje (letter brûkber):

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

Bouwparameters ynstelle fia KConfig

Litte wy de opset begjinne:

make menuconfig 

It KConfig-finster sil iepenje. It is mooglik om te konfigurearjen mei in grafyske ynterface (meitsje nconfig, meitsje xconfig, meitsje gconfig):

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Wy ynfiere de earste seksje Doelopsjes. Hjir kinne jo de doelarsjitektuer selektearje wêrfoar de bou sil wurde útfierd.

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Bouwopsjes - d'r binne hjir ferskate bouynstellingen. Jo kinne mappen oantsjutte mei boarne koades, it oantal build threads, spegels foar it downloaden fan boarne koades en oare ynstellings. Litte wy de ynstellings op standert litte.

Toolchain - de bou-ark sels wurde hjir konfigureare. Lês mear oer him.

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Toolchain type - type toolchain brûkt. Dit kin in toolchain wêze ynboud yn buildroot of in eksterne (jo kinne de map opjaan mei de al boude of de url foar it downloaden). D'r binne ekstra opsjes foar ferskate arsjitektueren. Bygelyks, foar earm kinne jo gewoan selektearje de Linaro ferzje fan de eksterne toolchain.

C bibleteek – seleksje fan de biblioteek C. De wurking fan it hiele systeem hinget hjirfan ôf. Typysk wurdt glibc brûkt, dy't alle mooglike funksjonaliteit stipet. Mar it kin wêze te grut foar in ynbêde systeem, sadat uglibc of musl wurde faak keazen. Wy sille glibc selektearje (dit sil letter nedich wêze om systemd te brûken).

Kernel Headers en Custom Kernel Headers-searjes - moatte oerienkomme mei de ferzje fan 'e kernel dy't yn it gearstalde systeem sil wêze. Foar kernel-headers kinne jo ek it paad opjaan nei it tarball- of git-repository.

GCC COMPILER VERSIONS - selektearje de kompilerferzje dy't brûkt wurde foar it bouwen
C ++-stipe ynskeakelje - selektearje om te bouwen mei stipe foar C ++-biblioteken yn it systeem. Dit sil nuttich wêze foar ús yn 'e takomst.

Oanfoljende gcc-opsjes - jo kinne ekstra kompileropsjes ynstelle. Wy hawwe it no net nedich.

Systeemkonfiguraasje lit jo takomstige parameters fan it oanmakke systeem ynstelle:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

De measte punten binne dúdlik út de titel. Litte wy omtinken jaan oan de folgjende punten:
Paad nei de brûkerstabellen - tabel mei brûkers dy't oanmakke wurde (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Foarbyld triem. De brûker brûker sil oanmakke wurde mei it wachtwurd admin, automatysk gid / uid, / bin / sh shell, standert groep brûker, groep lid root, kommentaar Foo brûker

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

Root-bestânsysteem-overlay-mappen - map oerlein boppe op 'e gearstalde target-fs. Foeget nije bestannen ta en ferfangt besteande.

Oanpaste skripts om út te fieren foar it meitsjen fan triemsysteemôfbyldings - Skripten dy't direkt wurde útfierd foardat it bestânsysteem yn ôfbyldings falt. Lit ús it skript foarearst leech litte.

Litte wy nei de Kernel-seksje gean

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Kernel ynstellings wurde hjir ynsteld. De kernel sels is konfigureare fia make linux-menuconfig.
Jo kinne de kearnferzje op ferskate manieren ynstelle: selektearje út de oanbeane, fier de ferzje manuell yn, spesifisearje in repository of in klear makke tarball.

Kernel konfiguraasje - paad nei de kernel konfiguraasje. Jo kinne de standertkonfiguraasje selektearje foar de selekteare arsjitektuer of defocnfig fan Linux. De Linux-boarne befettet in set defconfigs foar ferskate doelsystemen. Jo kinne dejinge fine dy't jo nedich binne troch hjir direkt nei de boarnen te sjen. Bygelyks, foar in beagle bonke swarte board kinne jo selektearje konfiguraasje.

De seksje Doelpakketten lit jo selektearje hokker pakketten sille wurde ynstalleare op it systeem dat wurdt boud. Lit ús it foarearst net feroarje. Wy sille ús pakketten letter tafoegje oan dizze list.
Bestânssysteemôfbyldings - in list mei triemsysteemôfbyldings dy't sille wurde sammele. Foegje in iso-ôfbylding ta

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Bootloaders - seleksje fan bootloaders om te sammeljen. Lit ús kieze isolinix

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Systemd konfigurearje

Systemd wurdt ien fan 'e pylders fan Linux, tegearre mei kernel en glibc. Dêrom ferhuze ik syn ynstelling nei in apart item.

Konfigurearre fia meitsje menuconfig, dan Doelpakketten → Systeem ark → systemd. Hjir kinne jo opjaan hokker systemd tsjinsten wurde ynstalleare en begon as it systeem begjint.

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Bewarje systeem konfiguraasje

Wy bewarje dizze konfiguraasje fia KConfig.

Bewarje dan ús defconfig:

make savedefconfig

Linux Kernel Konfiguraasje

De Linux kernel konfiguraasje wurdt oproppen mei it folgjende kommando:

make linux-menuconfig

Litte wy stipe tafoegje foar de Virtualbox-fideokaart

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Litte wy Virtualbox Guest-yntegraasjestipe tafoegje

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Bewarje en ôfslute. WICHTich: konfiguraasje wurdt bewarre yn output/build/linux-$version/config, mar net yn board/my_x86_board/linux.config

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Dêrom moatte jo de konfiguraasje manuell kopiearje nei in opslachlokaasje:

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

Dêrnei sille wy in folsleine reassembly fan it hiele systeem útfiere. buildroot bout net wer op wat al boud is, jo moatte de pakketten manuell oantsjutte foar werbouwen. Om gjin tiid en senuwen te fergrieme, is it makliker om in lyts systeem folslein opnij op te bouwen):

make clean;make

Nei it foltôgjen fan it bouwen, starte VirtualBox (test op ferzjes 5.2 en 6.0) opstarten fan 'e CD. Systeemparameters:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

Starte fanôf de gearstalde iso:

Buildroot - diel 1. Algemiene ynformaasje, gearstalling fan in minimaal systeem, konfiguraasje fia it menu

List fan brûkte materialen

  1. Buildroot hânboek

Boarne: www.habr.com

Add a comment