In questa sezione fighjulà alcune di l'opzioni di persunalizazione chÏ avia bisognu. Questa Ún hè micca una lista cumpleta di ciò chÏ buildroot prupone, ma sò abbastanza funziunali è Ún necessitanu micca intervenzione in i schedarii di buildroot stessu.
UtilizĂ u mecanismu EXTERNAL per a persunalizazione
Avemu vistu un esempiu simplice di aghjunghje a vostra propria cunfigurazione aghjunghjendu a defconfig di u bordu è i schedarii necessarii direttamente à u cartulare Buildroot.
Ma stu metudu Ún hè micca assai còmuda, soprattuttu quandu aghjurnà buildroot. Ci hè un mecanismu per risolve stu prublema arbre esternu. A so essenza hè chÏ pudete almacenà bordu, cunfigurazioni, pacchetti è altri cartulari in un repertoriu separatu (per esempiu, aghju utilizatu u repertoriu di patch per applicà patch à i pacchetti, piÚ dettagli in una sezione separata) è buildroot stessu li aghjunghje à quelli in u so repertoriu.
Nota: pudete sovrappone parechji arburi esterni à una volta, ci hè un esempiu in u manual buildroot
Creemu un repertoriu my_tree, situatu vicinu à u repertoriu buildroot è trasfiriu a nostra cunfigurazione quÏ. L'output deve esse a seguente struttura di file:
[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 filesComu pudete vede, in generale a struttura ripete a struttura di buildroot.
catalogo bordu cuntene i schedari specifichi per ogni bordu in u nostru casu:
- bef_cr_fs_img.sh hè un script chÏ serà eseguitu dopu à custruisce u sistema di schedariu di destinazione, ma prima di imballà in imagine. Avemu aduprà in u futuru
- linux.config - cunfigurazione di u kernel
- rootfs_overlay - repertoriu per sovrappone nantu Ă u sistema di fugliale di destinazione
- users.txt - un schedariu chĂŹ descrive l'utilizatori per esse creatu
catalogo cunfrunti cuntene defconfig di i nostri bordi. Avemu solu unu.
pacchettu - catalogu cÚ i nostri pacchetti. Inizialmente, buildroot cuntene descrizzioni è regule per custruisce un numeru limitatu di pacchetti. In seguitu aghjunghjemu u gestore di finestra icewm è u gestore di login graficu Slim quÏ.
Patches - vi permette di almacenĂ convenientemente i vostri patch per diversi pacchetti. PiĂš dettagli in una sezione separata sottu.
Avà avemu bisognu di aghjunghje i schedarii di descrizzione per u nostru arbre esternu. Ci sò 3 schedarii rispunsevuli di questu: external.desc, Config.in, external.mk.
esterni.desc cuntene a descrizzione attuale:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for articleA prima linea hè u titulu. In u futuru buildroot crea una variabile $(BR2_EXTERNAL_MY_TREE_PATH), chÏ deve esse usatu quandu cunfigurà l'assemblea. Per esempiu, u percorsu à u schedariu d'utilizatore pò esse stabilitu cum'è seguitu:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txtA seconda linea hè una breve descrizzione leggibile da l'omu.
Config.in, external.mk - fugliali per descriverà i pacchetti aghjuntu. Se Ún aghjunghje micca i vostri pacchetti, allora questi schedari ponu esse vioti. Per avà , hè ciò chÏ faremu.
Avà avemu u nostru arbulu esternu prontu, chÏ cuntene a defconfig di u nostru bordu è i schedari chÏ hà bisognu. Andemu à u cartulare buildroot è specifichi per utilizà l'arburu esternu:
[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 menuconfigIn u primu cumandamentu usemu l'argumentu BR2_EXTERNAL=../my_tree/, chÏ indica l'usu di un arburu esternu. Pudete specificà parechji arburi esterni per l'usu à u stessu tempu. In questu casu, avete bisognu di fà questu una volta, dopu chÏ un schedariu output/.br-external.mk hè creatu chÏ almacena infurmazione nantu à l'arburu esternu utilizatu:
[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 articleImpurtante! I camini in stu schedariu seranu assoluti!
Una voce Opzioni esterni hè apparsu in u menu:

Stu submenu cuntene i nostri pacchetti da u nostru arbre esternu. Questa sezione hè attualmente viota.
Avà hè piÚ impurtante per noi di riscrive i camini necessarii per utilizà l'arbulu esternu.
Per piacè nutate chĂŹ in l'opzioni di custruzzione â Locu per salvĂ a sezione di cunfigurazione di buildroot, ci sarĂ una strada assoluta Ă a defconfig salvata. Hè furmatu Ă u mumentu di specificĂ l'usu di extgernal_tree.
Correggeremu ancu i percorsi in a sezione di cunfigurazione di u Sistema. Per una tavula cĂš utilizatori creati:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txtIn a sezione Kernel, cambia a strada Ă a cunfigurazione di u kernel:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.configAvĂ i nostri schedari da u nostru arbre esternu seranu utilizati durante l'assemblea. Quandu si move in un altru repertoriu o aghjurnĂ u buildroot, averemu un minimu di prublemi.
Aghjunghjendu a superposizione di root fs:
Stu mekanismu permette di facilmente aghjunghje / rimpiazzĂ i schedari in u sistema di schedariu di destinazione.
Se u schedariu hè in overlay root fs, ma micca in destinazione, allora serà aghjuntu
Se u schedariu hè in overlay root fs è in target, allora serà rimpiazzatu.
Prima, stabiliscemu a strada per root fs overlay dir. Questu hè fattu in a Configurazione di u Sistema â Sezione di cartulari di sovrapposizione di filesystem root:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/AvĂ avemu criĂ dui schedari.
[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 overlayU primu schedariu (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) rimpiazzĂ u schedariu /etc/hosts in u sistema finitu. U secondu schedariu (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) serĂ aghjuntu.
Raccogliemu è verificate:

Esecuzione di script di persunalizazione in diverse tappe di l'assemblea di u sistema
Spessu avete bisognu di fĂ qualchĂŹ travagliu in u sistema di fugliali di destinazione prima chĂŹ sia imballatu in imagine.
Questu pò esse fattu in a sezione di cunfigurazione di u Sistema:

I primi dui scripts sò eseguiti dopu chÏ u sistema di u schedariu di destinazione hè custruitu, ma prima chÏ hè imballatu in imagine. A diferenza hè chÏ l'script fakeroot hè eseguitu in u cuntestu di fakeroot, chÏ simula u travagliu cum'è l'utilizatore root.
L'ultimu script hè eseguitu dopu chÏ l'imaghjini di u sistema sò creati. Pudete realizà azzioni supplementari in questu, per esempiu, copià i schedarii necessarii à un servitore NFS o crea una maghjina di u firmware di u vostru dispositivu.
Per esempiu, crearaghju un script chÏ scriverà a versione è a data di custruzzione in /etc/.
Prima indicĂ a strada di stu schedariu in u mo arbre esternu:

Ă avĂ u script stessu:
[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-releaseDopu Ă l'assemblea, pudete vede stu schedariu nantu Ă u sistema.
In pratica, u script pò diventà grande. Dunque, in u veru prughjettu aghju pigliatu una strada piÚ avanzata:
- Aghju creatu un repertoriu (my_tree/board_my_x86_board/inside_fakeroot_scripts) in quale ci sò scripts per esse eseguiti, cÚ numeri di serie. Per esempiu, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- Aghju scrittu un script (my_tree/board_my_x86_board/run_inside_fakeroot.sh) chÏ passa per questu repertoriu è eseguisce in sequenza i scripts cuntenuti in questu.
- Specificatu stu script in i parĂ metri di u bordu in a Configurazione di u Sistema -> Scripts persunalizati per eseguisce in l'ambiente fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) sezione
Source: www.habr.com
