Aféierung
An dëser Serie vun Artikelen wëll ech de Buildroot Verdeelung Build System kucken an meng Erfahrung deelen an et ze personaliséieren. Et gëtt praktesch Erfahrung fir e klengen OS mat enger grafescher Interface a minimaler Funktionalitéit ze kreéieren.
Als éischt sollt Dir de Bausystem an d'Verdeelung net duercherneen bréngen. Buildroot kann e System aus enger Rei vu Packagen bauen, déi him ugebuede ginn. Buildroot ass op Makefile gebaut an huet dofir enorm Personnalisatiounsfäegkeeten. E Package mat enger anerer Versioun ersetzen, Ären eegene Package derbäi, d'Regele fir e Package ze bauen änneren, de Dateiesystem personaliséieren nodeems Dir all Packagen installéiert hutt? buildroot kann dat alles maachen.
A Russland gëtt Buildroot benotzt, awer menger Meenung no gëtt et wéineg russeschsproocheg Informatioun fir Ufänger.
D'Zil vun der Aarbecht ass e Verdeelungskit mat Live-Download, icewm Interface a Browser ze sammelen. D'Zilplattform ass virtualbox.
Firwat bauen Är eege Verdeelung? Oft ass limitéiert Funktionalitéit gebraucht mat limitéierten Ressourcen. Och méi dacks an der Automatioun musst Dir Firmware erstellen. Eng allgemeng Zweck Verdeelung unzepassen andeems se onnéideg Packagen botzen an et an Firmware ëmgewandelt ass méi Aarbechtsintensiv wéi eng nei Verdeelung ze bauen. Gentoo benotzen huet och seng Aschränkungen.
De Buildroot System ass ganz mächteg, awer et wäert näischt fir Iech maachen. Et kann nëmmen de Montageprozess aktivéieren an automatiséieren.
Alternativ Build Systemer (Yocto, Open Build System an anerer) ginn net berücksichtegt oder verglach.
Wou et ze kréien a wéi ufänken
Projet Websäit -
Buildroot bedreift Defconfigs fir d'Zilplat vum Build. Defconfig ass eng Konfiguratiounsdatei déi nëmmen Optiounen späichert déi keng Standardwäerter hunn. Et ass hien dee bestëmmt wat gesammelt gëtt a wéi. An dësem Fall kënnt Dir d'Konfiguratioun vu busybox, linux-kernel, uglibc, u-boot a barebox Bootloader separat konfiguréieren, awer all vun hinnen ginn un d'Zilplat gebonnen.
Nodeems mir den erofgelueden Archiv ausgepackt hunn oder aus Git klonen, kréie mir e prett-ze-benotzen Buildroot. Dir kënnt méi iwwer d'Verzeichnisstruktur am Handbuch liesen; Ech soen Iech iwwer déi wichtegst:
Verwaltungsrot - e Verzeechnes mat Dateie spezifesch fir all Board. Dëst kënne Skripte sinn fir Systembilder ze bilden (iso, sdcart, cpio an anerer), en Overlay Verzeechnes, Kernel Config, etc.
configs - déi tatsächlech Defconfig vum Board. Defconfig ass eng onkomplett Boardkonfiguratioun. Et späichert nëmmen Parameteren déi sech vun de Standardastellungen ënnerscheeden
dl - Verzeechnes mat erofgeluede Quellcodes / Dateien fir Assemblée
Ausgang / Zil - de versammelt Dateiesystem vum resultéierende OS. Duerno gi Biller dovun erstallt fir erofzelueden / Installatioun
Ausgang / Host - Host Utilities fir Assemblée
Ausgang / bauen - zesummegesat Packagen
D'Versammlung gëtt iwwer KConfig konfiguréiert. Dee selwechte System gëtt benotzt fir de Linux Kernel ze bauen. Lëscht vun de meescht benotzt Kommandoen (ausféieren am Buildroot Verzeichnis):
- maachen menuconfig - rufft d'Build Configuratioun. Dir kënnt och d'grafesch Interface benotzen (maache nconfig, maachen xconfig, maachen gconfig)
- maachen linux-menuconfig - rufft d'Kernelkonfiguratioun un.
- propper maachen - d'Bauresultater botzen (alles am Output gespäichert)
- maachen - e System bauen. Dëst reassembléiert net scho versammelt Prozesser.
- maachen defconfig_name - schalt d'Konfiguratioun op eng spezifesch defconfig
- maachen list-defconfigs - eng Lëscht vun defconfigs weisen
- Quell maachen - just d'Installatiounsdateien eroflueden, ouni ze bauen.
- maachen Hëllef - Lëscht méiglech Kommandoen
Wichteg Notizen an hëllefräich Tipps
Buildroot baut keng Packagen op déi scho gebaut goufen! Dofir kann eng Situatioun entstoen, wou eng komplett Neiversammlung erfuerderlech ass.
Dir kënnt e separaten Package mam Kommando opbauen packenname-rebuild maachen. Zum Beispill kënnt Dir de Linux Kernel nei opbauen:
make linux-rebuild
Buildroot späichert den Zoustand vun all Package andeems Dir .stamp Dateien am Output/build/$packagename Verzeichnis erstellt:
Dofir kënnt Dir root-fs a Biller nei opbauen ouni Pakete nei opzebauen:
rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
Nëtzlech Variablen
buildroot huet eng Rei Variabelen fir einfach Konfiguratioun
- $TOPDIR - buildroot directory
- $BASEDIR - OUTPUT Verzeechnes
- $HOST_DIR, $STAGING_DIR, $TARGET_DIR — host fs, staging fs, target fs build directories.
- $BUILD_DIR - Verzeechnes mat ausgepackten a gebaute Packagen
Visualiséierung
buildroot huet eng Visualiséierungsfunktioun. Dir kënnt en Ofhängegkeetsdiagramm, eng Bauzäitgrafik an eng Grafik vu Packagegréissten am Finale System bauen. D'Resultater sinn a Form vu PDF Dateien (Dir kënnt aus svn,png wielen) am Output / Graf Verzeechnes.
Beispiller vu Visualiséierungsbefehle:
make graph-depends
Ofhängegkeet Bam bauenmake <pkg>-graph-depends
bauen eng Ofhängegkeet Bam fir e spezifesche PakBR2_GRAPH_OUT=png make graph-build
Komplott Bauzäit mat PNG Outputmake graph-size
Komplott Pak Gréisst
Nëtzlech Scripten
Et gëtt en Ënnerverzeechnes am Buildroot Verzeichnis Geschir mat nëtzlech Scripten. Zum Beispill gëtt et e Skript deen d'Korrektheet vu Packagebeschreiwunge kontrolléiert. Dëst kann nëtzlech sinn wann Dir Är eege Pakete bäidréit (ech maachen dat méi spéit). De Fichier utils/readme.txt enthält eng Beschreiwung vun dëse Skripte.
Loosst eis eng Aktieverdeelung bauen
Et ass wichteg ze erënneren datt all Operatiounen am Numm vun engem normale Benotzer duerchgefouert ginn, net root.
All Kommandoe ginn am Buildroot ausgefouert. De Buildroot Package enthält schonn eng Rei vu Konfiguratiounen fir vill gemeinsame Boards a Virtualiséierung.
Loosst eis d'Lëscht vun den Konfiguratiounen kucken:
Wiesselt op d'qemu_x86_64_defconfig Config
make qemu_x86_64_defconfig
A mir fänken d'Versammlung un
make
De Bau ass erfollegräich ofgeschloss, kuckt d'Resultater:
Buildroot huet Biller zesummegesat déi Dir am Qemu lafen kann a verifizéieren datt se funktionnéieren.
qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
D'Resultat ass e System deen am qemu leeft:
Schafen Är eege Verwaltungsrot Configuratioun
Dobäi Verwaltungsrot Fichieren
Loosst eis d'Lëscht vun den Konfiguratiounen kucken:
An der Lëscht gesi mir pc_x86_64_efi_defconfig. Mir erstellen eisen eegene Board andeems Dir et aus der Konfiguratioun kopéiert:
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
Loosst eis direkt e Board Verzeechnes erstellen fir eis Scripten, rootfs-Iwwerlagerung an aner noutwendeg Dateien ze späicheren:
mkdir board/my_x86_board
Wiesselt op dës Defconfig:
make my_x86_board_defconfig
Also elo d'Build Config (gespäichert an .config an der Wuerzel vum Buildroot Verzeichnis) entsprécht der x86-64 Legacy (Bios) Boot Zilmaschinn.
Loosst eis d'Linux-Kernel Konfiguratioun kopéieren (nëtzlech méi spéit):
cp board/pc/linux.config board/my_x86_board/
Astellung Build Parameteren iwwer KConfig
Loosst eis de Setup starten:
make menuconfig
D'KConfig Fënster gëtt op. Et ass méiglech mat engem grafeschen Interface ze konfiguréieren (maache nconfig, maachen xconfig, maachen gconfig):
Mir gitt déi éischt Sektioun Target Optiounen. Hei kënnt Dir d'Zilarchitektur auswielen fir déi de Bau duerchgefouert gëtt.
Bauoptiounen - et gi verschidde Bauastellungen hei. Dir kënnt Verzeichnisser mat Quellcoden spezifizéieren, d'Zuel vun de Build thread, Spigelen fir d'Quellcoden erofzelueden an aner Astellungen. Loosst eis d'Astellungen op Default loossen.
Toolchain - d'Build Tools selwer sinn hei konfiguréiert. Liest méi iwwer hien.
Toolchain Typ - Typ vun Toolchain benotzt. Dëst kann eng Toolchain sinn, déi a Buildroot gebaut ass oder en externen (Dir kënnt de Verzeechnes mat der scho gebauter oder d'URL fir den Download spezifizéieren). Et ginn zousätzlech Optiounen fir verschidden Architekturen. Zum Beispill, fir Aarm kënnt Dir einfach d'Linaro Versioun vun der externer toolchain auswielen.
C-Bibliothéik – Auswiel vun der C-Bibliothéik De Fonctionnement vum ganze System hänkt dovun of. Normalerweis gëtt glibc benotzt, wat all méiglech Funktionalitéit ënnerstëtzt. Awer et kann ze grouss sinn fir en embedded System, sou datt uglibc oder musl dacks gewielt ginn. Mir wäerte glibc auswielen (dëst wäert spéider erfuerderlech sinn fir Systemd ze benotzen).
Kernel Headers a Custom Kernel Headers Serie - musse mat der Versioun vum Kernel passen, deen am montéierte System wäert sinn. Fir Kernel Header kënnt Dir och de Wee zum Tarball oder Git Repository spezifizéieren.
GCC COMPILER VERSIONS - wielt d'Compiler Versioun fir ze bauen
Aktivéiert C ++ Ënnerstëtzung - wielt fir mat Ënnerstëtzung fir C ++ Bibliothéiken am System ze bauen. Dëst wäert eis an Zukunft nëtzlech sinn.
Zousätzlech gcc Optiounen - Dir kënnt zousätzlech Compileroptiounen astellen. Mir brauchen et fir de Moment net.
Systemkonfiguratioun erlaabt Iech zukünfteg Parameteren vum erstallte System ze setzen:
Déi meescht Punkte sinn kloer aus dem Titel. Loosst eis op déi folgend Punkten oppassen:
Wee fir d'Benotzer Dëscher - Dësch mat Benotzer ze erstellen (
Beispill Fichier. De Benotzer Benotzer gëtt mat dem Passwuert Admin erstallt, automatesch gid / uid, / bin / sh Shell, Standard Grupp Benotzer, Grupp Member root, Kommentar Foo Benotzer
[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt
user -1 user -1 =admin /home/user /bin/sh root Foo user
Root Dateisystem Overlay Verzeechnes - Verzeechnes iwwerlagert uewen op de versammelten Zil-fs. Füügt nei Dateien an ersetzt déi existent.
Benotzerdefinéiert Scripte fir ze lafen ier Dir Dateiesystem Biller erstellt - Scripten déi direkt ausgefouert ginn ier de Dateiesystem a Biller ausklappt. Loosst eis de Skript fir de Moment eidel loossen.
Loosst eis an d'Kernel Sektioun goen
Kernel Astellunge ginn hei agestallt. De Kernel selwer gëtt iwwer Make linux-menuconfig konfiguréiert.
Dir kënnt d'Kernel Versioun op verschidde Manéieren astellen: wielt aus deenen ugebueden, gitt d'Versioun manuell, spezifizéiert e Repository oder e fäerdege Tarball.
Kernel Konfiguratioun - Wee zu der Kernel Configuratioun. Dir kënnt d'Standardkonfiguratioun fir déi gewielte Architektur oder defocnfig vu Linux auswielen. D'Linux Quell enthält eng Rei vun Defconfigs fir verschidden Zilsystemer. Dir kënnt deen fannen deen Dir braucht
D'Sektioun Target Packages erlaabt Iech ze wielen wéi eng Packagen op de System installéiert ginn, deen gebaut gëtt. Loosst eis et fir de Moment onverännert loossen. Mir wäerten eis Packagen méi spéit op dës Lëscht derbäi.
Dateisystem Biller - eng Lëscht vun Dateiesystem Biller déi gesammelt ginn. Füügt en ISO-Bild dobäi
Bootloaders - Auswiel vu Bootloader fir ze sammelen. Loosst eis isolinix wielen
Systemd konfiguréieren
Systemd gëtt ee vun de Piliere vu Linux, zesumme mam Kernel a Glibc. Dofir hunn ech seng Astellung op en separaten Element geplënnert.
Konfiguréiert iwwer Make menuconfig, dann Target Packages → System Tools → systemd. Hei kënnt Dir spezifizéieren wéi eng Systemd Servicer installéiert a gestart ginn wann de System ufänkt.
Spueren System Configuratioun
Mir späicheren dës Configuratioun iwwer KConfig.
Da späichert eis Defconfig:
make savedefconfig
Linux Kernel Konfiguratioun
D'Linux Kernel Konfiguratioun gëtt mat dem folgenden Kommando opgeruff:
make linux-menuconfig
Loosst eis Ënnerstëtzung fir d'Virtualbox Videokaart addéieren
Loosst eis Virtualbox Guest Integratioun Ënnerstëtzung addéieren
Späicheren an erausgoen. WICHTEG: Konfiguratioun gëtt am Output/build/linux-$version/config gespäichert, awer net am Board/my_x86_board/linux.config
Dofir musst Dir d'Konfiguratioun manuell op eng Späicherplaz kopéieren:
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
Duerno wäerte mir eng komplett Remontage vum ganze System maachen. buildroot baut net op wat scho gebaut gouf, Dir musst manuell Pakete spezifizéieren fir nei opzebauen. Fir net Zäit an Nerven ze verschwenden, ass et méi einfach e klenge System komplett opzebauen):
make clean;make
Nodeems d'Assemblée fäerdeg ass, starten VirtualBox (getest op Versiounen 5.2 a 6.0) booten vun der CD. Systemparameter:
Lancéiere vum versammelt ISO:
Lëscht vun Material benotzt
- Buildroot Handbuch
Source: will.com