Buildroot - Deel 2. Schafen Är Verwaltungsrot Configuratioun; benotzt externe Bam, rootfs-Iwwerlagerung, Post-Build Scripten

An dëser Sektioun kucken ech e puer vun de Personnalisatiounsoptiounen déi ech gebraucht hunn. Dëst ass net eng komplett Lëscht vu wat Buildroot bitt, awer si sinn zimlech funktionell a erfuerderen keng Interventioun an de Dateien vum Buildroot selwer.

Benotzt den EXTERNE Mechanismus fir Personnalisatioun

Am fréieren Artikel Mir hunn en einfacht Beispill gekuckt fir Är eege Konfiguratioun ze addéieren andeems Dir den Defconfig vum Board an déi néideg Dateien direkt an de Buildroot Verzeichnis bäidréit.

Awer dës Method ass net ganz bequem, besonnesch wann Dir Buildroot aktualiséiert. Et gëtt e Mechanismus fir dëse Problem ze léisen externen Bam. Seng Essenz ass datt Dir Board, Configuratiounen, Packagen an aner Verzeichnisser an engem getrennten Verzeichnis späichere kënnt (zum Beispill, ech benotzen de Patches Verzeichnis fir Patches op Packagen z'applizéieren, méi Detailer an enger separater Sektioun) a buildroot selwer wäert se derbäisetzen an déi an seng Verzeechnes.

Notiz: Dir kënnt e puer extern Beem gläichzäiteg iwwerlageren, et gëtt e Beispill am Buildroot Handbuch

Loosst eis e Verzeechnes my_tree erstellen, nieft dem Buildroot Verzeichnis an eis Konfiguratioun dohinner transferéieren. D'Ausgab soll déi folgend Dateistruktur sinn:

[alexey@alexey-pc my_tree]$ tree
.
├── board
│   └── my_x86_board
│       ├── bef_cr_fs_img.sh
│       ├── linux.config
│       ├── rootfs_overlay
│       └── users.txt
├── Config.in
├── configs
│   └── my_x86_board_defconfig
├── external.desc
├── external.mk
├── package
└── patches

6 directories, 7 files

Wéi Dir kënnt gesinn, am Allgemengen widderhëlt d'Struktur d'Struktur vum Buildroot.

directory Verwaltungsrot enthält Dateien spezifesch fir all Board an eisem Fall:

  • bef_cr_fs_img.sh ass e Skript deen ausgefouert gëtt nodeems de Zildateisystem gebaut gëtt, awer ier et a Biller verpackt gëtt. Mir wäerten et an Zukunft benotzen
  • linux.config - Kernel Konfiguratioun
  • rootfs_overlay - Verzeechnes fir iwwer den Zil Dateiesystem ze iwwerlageren
  • users.txt - e Fichier deen d'Benotzer beschreift déi erstallt ginn

directory configs enthält defconfig vun eise Brieder. Mir hunn nëmmen een.

Pak - Katalog mat eise Packagen. Am Ufank enthält buildroot Beschreiwungen a Reegele fir eng limitéiert Zuel vu Packagen ze bauen. Méi spéit wäerte mir den icewm Fënstermanager an de Slim grapheschen Login Manager hei addéieren.
Patches - erlaabt Iech Är Patches bequem fir verschidde Packagen ze späicheren. Méi Detailer an enger separater Rubrik hei drënner.
Elo musse mir d'Beschreiwungsdateien fir eisen externen Bam addéieren. Et ginn 3 Dateien déi dofir verantwortlech sinn: external.desc, Config.in, external.mk.

extern.desc enthält déi aktuell Beschreiwung:

[alexey@alexey-pc my_tree]$ cat external.desc 
name: my_tree
desc: My simple external-tree for article

Déi éischt Zeil ass den Titel. An der Zukunft Buildroot eng Variabel erstellen $(BR2_EXTERNAL_MY_TREE_PATH), déi sollt benotzt ginn wann Dir d'Versammlung konfiguréieren. Zum Beispill kann de Wee op d'Benotzerdatei wéi follegt gesat ginn:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

Déi zweet Zeil ass eng kuerz, mënschlech liesbar Beschreiwung.

Config.in, extern.mk - Dateien fir dobäi Packagen ze beschreiwen. Wann Dir Är eege Packagen net bäidréit, da kënnen dës Dateien eidel gelooss ginn. Fir de Moment wäerte mir dat maachen.
Elo hu mir eisen externen Bam prett, mat der Defconfig vun eisem Board an d'Dateien déi et brauch. Loosst eis an de Buildroot Verzeechnes goen a spezifizéieren fir extern Bam ze benotzen:

[alexey@alexey-pc buildroot]$ make BR2_EXTERNAL=../my_tree/ my_x86_board_defconfig
#
# configuration written to /home/alexey/dev/article/ramdisk/buildroot/.config
#
[alexey@alexey-pc buildroot]$ make menuconfig

Am éischte Kommando benotze mir d'Argument BR2_EXTERNAL=../my_tree/, wat d'Benotzung vun engem externen Bam ugeet.Dir kënnt e puer extern Beem fir gläichzäiteg uginn.An dësem Fall brauchs de dat nëmmen eng Kéier ze maachen, duerno gëtt e Fichieroutput/.br-external.mk erstallt, deen späichert Informatioun iwwer den externen Bam benotzt:

[alexey@alexey-pc buildroot]$ cat output/.br-external.mk 
#
# Automatically generated file; DO NOT EDIT.
#

BR2_EXTERNAL ?= /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_NAMES = 
BR2_EXTERNAL_DIRS = 
BR2_EXTERNAL_MKS = 

BR2_EXTERNAL_NAMES += my_tree
BR2_EXTERNAL_DIRS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_MKS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree/external.mk
export BR2_EXTERNAL_my_tree_PATH = /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
export BR2_EXTERNAL_my_tree_DESC = My simple external-tree for article

Wichteg! D'Weeër an dësem Fichier wäerten absolut sinn!

En Extern Optiounen Element ass am Menü erschéngt:

Buildroot - Deel 2. Schafen Är Verwaltungsrot Configuratioun; benotzt externe Bam, rootfs-Iwwerlagerung, Post-Build Scripten

Dësen Ënnermenü enthält eis Packagen aus eisem externe Bam. Dës Sektioun ass am Moment eidel.

Elo ass et méi wichteg fir eis déi néideg Weeër ze schreiwen fir extern Bam ze benotzen.

Notéiert w.e.g. datt an de Build Optiounen → Location fir Buildroot Config Sektioun ze späicheren, gëtt et en absolute Wee fir de gespäichert Defconfig. Et gëtt am Moment geformt fir d'Benotzung vum extgernal_tree ze spezifizéieren.

Mir korrigéieren och d'Weeër an der Systemkonfiguratiounssektioun. Fir en Dësch mat erstallte Benotzer:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

Am Kernel Sektioun ännert de Wee an d'Kernelkonfiguratioun:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config

Elo ginn eis Dateie vun eisem externe Bam wärend der Montage benotzt. Wann Dir an en anert Verzeechnes plënnert oder de Buildroot aktualiséieren, hu mir e Minimum vu Probleemer.

Root fs Overlay addéieren:

Dëse Mechanismus erlaabt Iech einfach Dateien am Zildateisystem ze addéieren / ersetzen.
Wann d'Datei am Root fs Overlay ass, awer net am Zil, da gëtt se derbäigesat
Wann d'Datei am Root fs Overlay an am Zil ass, da gëtt se ersat.
Als éischt, loosst eis de Wee op root fs Overlay Dir setzen. Dëst gëtt an der Systemkonfiguratioun → Root Dateisystem Overlay Verzeichnungen Sektioun gemaach:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Loosst eis elo zwee Dateien erstellen.

[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/etc/hosts 
127.0.0.1   localhost
127.0.1.1   my_small_linux
8.8.8.8     google-public-dns-a.google.com.
[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt 
This is new file from overlay

Déi éischt Datei (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) ersetzt d'/etc/hosts Datei am fäerdege System. Déi zweet Datei (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) gëtt dobäigesat.

Mir sammelen a kontrolléieren:

Buildroot - Deel 2. Schafen Är Verwaltungsrot Configuratioun; benotzt externe Bam, rootfs-Iwwerlagerung, Post-Build Scripten

Ausféierung vun Personnalisatioun Scripten op verschidden Etappe vun System Assemblée

Dacks musst Dir eng Aarbecht am Zildateisystem ausféieren ier et a Biller verpackt gëtt.

Dëst kann an der Systemkonfiguratioun Sektioun gemaach ginn:

Buildroot - Deel 2. Schafen Är Verwaltungsrot Configuratioun; benotzt externe Bam, rootfs-Iwwerlagerung, Post-Build Scripten

Déi éischt zwee Skripte ginn ausgefouert nodeems de Zildateisystem gebaut ass, awer ier et a Biller verpackt gëtt. Den Ënnerscheed ass datt de fakeroot Skript am Kontext vu fakeroot ausgefouert gëtt, wat d'Aarbecht als de Root Benotzer simuléiert.

De leschte Skript gëtt ausgefouert nodeems d'Systembilder erstallt sinn. Dir kënnt zousätzlech Aktiounen an et ausféieren, zum Beispill, kopéieren déi néideg Dateien op en NFS Server oder e Bild vun Ärem Apparat Firmware erstellen.

Als Beispill erstellen ech e Skript deen d'Versioun schreift an den Datum op /etc/ baut.
Als éischt wäert ech de Wee zu dëser Datei a mengem externe Bam uginn:

Buildroot - Deel 2. Schafen Är Verwaltungsrot Configuratioun; benotzt externe Bam, rootfs-Iwwerlagerung, Post-Build Scripten

An elo de Skript selwer:

[alexey@alexey-pc buildroot]$ cat ../my_tree/board/my_x86_board/bef_cr_fs_img.sh 
#!/bin/sh
echo "my small linux 1.0 pre alpha" > output/target/etc/mysmalllinux-release
date >> output/target/etc/mysmalllinux-release

No der Assemblée kënnt Dir dës Datei um System gesinn.

An der Praxis kann de Skript grouss ginn. Dofir hunn ech am richtege Projet e méi fortgeschratt Wee gemaach:

  1. Ech hunn e Verzeechnes erstallt (my_tree/board_my_x86_board/inside_fakeroot_scripts) an deem et Scripte gëtt fir auszeféieren, mat Seriennummeren. Zum Beispill, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Ech hunn e Skript geschriwwen (my_tree/board_my_x86_board/run_inside_fakeroot.sh) deen duerch dëse Verzeechnes geet a sequentiell d'Skripten ausféiert, déi dra enthale sinn
  3. Spezifizéiert dëst Skript an de Board Astellungen an der Systemkonfiguratioun -> Benotzerdefinéiert Skripte fir am fakeroot Ëmfeld ze lafen ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) Sektioun

Source: will.com

Setzt e Commentaire