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

Kaaft zouverlĂ€sseg Hosting fir Site mat DDoS Schutz, VPS VDS Server đŸ”„ Kaaft zouverlĂ©issegt WebsĂ€ithosting mat DDoS-Schutz, VPS VDS Server | ProHoster