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
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 files
Comu 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 article
A 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.txt
A 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 menuconfig
In 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 article
Impurtante! 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.txt
In a sezione Kernel, cambia a strada à a cunfigurazione di u kernel:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Avà 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 overlay
U 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-release
Dopu à 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