Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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.org. Hei kënnt Dir déi aktuell Versioun eroflueden an d'Handbuch liesen. Do kënnt Dir d'Gemeinschaft kontaktéieren, et gëtt e Bug Tracker, Maillëschten an en irc Kanal.

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:

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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 bauen
  • make <pkg>-graph-depends bauen eng Ofhängegkeet Bam fir e spezifesche Pak
  • BR2_GRAPH_OUT=png make graph-build Komplott Bauzäit mat PNG Output
  • make 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:

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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 - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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:

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

Schafen Är eege Verwaltungsrot Configuratioun

Dobäi Verwaltungsrot Fichieren

Loosst eis d'Lëscht vun den Konfiguratiounen kucken:

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

Mir gitt déi éischt Sektioun Target Optiounen. Hei kënnt Dir d'Zilarchitektur auswielen fir déi de Bau duerchgefouert gëtt.

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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.

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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:

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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

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

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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 andeems Dir direkt op d'Quellen hei kuckt. Zum Beispill, fir eng beagle Schanken schwaarz Verwaltungsrot Dir kënnt wielt config.

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

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

Bootloaders - Auswiel vu Bootloader fir ze sammelen. Loosst eis isolinix wielen

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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.

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

Loosst eis Virtualbox Guest Integratioun Ënnerstëtzung addéieren

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

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:

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

Lancéiere vum versammelt ISO:

Buildroot - Deel 1. Allgemeng Informatioun, Montage vun engem minimale System, Konfiguratioun duerch de Menü

Lëscht vun Material benotzt

  1. Buildroot Handbuch

Source: will.com

Setzt e Commentaire