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
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 filesWé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 articleDé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.txtDé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 menuconfigAm é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 articleWichteg! D'Weeër an dësem Fichier wÀerten absolut sinn!
En Extern Optiounen Element ass am MenĂŒ erschĂ©ngt:

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.txtAm Kernel Sektioun Ànnert de Wee an d'Kernelkonfiguratioun:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.configElo 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 overlayDé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:

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:

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:

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