Buildroot – osa 2. Tahvli konfiguratsiooni loomine; kasutades vĂ€list puud, rootfs-overlay, ehitusjĂ€rgseid skripte

Selles jaotises vaatlen mĂ”ningaid kohandamisvalikuid, mida vajasin. See ei ole tĂ€ielik nimekiri sellest, mida buildroot pakub, kuid need on ĂŒsna funktsionaalsed ega vaja sekkumist buildrooti enda failidesse.

Kohandamiseks kasutatakse VÄLIST mehhanismi

Ühes varasemas artiklis Vaatasime lihtsat nĂ€idet oma konfiguratsiooni lisamisest, lisades plaadi defconfigi ja vajalikud failid otse Buildrooti kataloogi.

Kuid see meetod pole eriti mugav, eriti buildrooti vÀrskendamisel. Selle probleemi lahendamiseks on olemas mehhanism vÀline puu. Selle olemus seisneb selles, et saate salvestada tahvli, seadistusi, pakette ja muid katalooge eraldi kataloogis (nÀiteks kasutan pakettide paikade paigaldamiseks paikade kataloogi, tÀpsemalt eraldi jaotises) ja buildroot ise lisab need kataloogidesse. selle kataloog.

MÀrkus: saate korraga katta mitu vÀlist puud, selle nÀide on buildrooti juhendis

Loome kataloogi my_tree, mis asub buildroot kataloogi kÔrval ja edastame oma konfiguratsiooni sinna. VÀljund peaks olema jÀrgmise failistruktuuriga:

[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

Nagu nĂ€ete, kordab struktuur ĂŒldiselt buildrooti struktuuri.

Kataloog juhatus sisaldab meie puhul iga tahvli jaoks spetsiifilisi faile:

  • bef_cr_fs_img.sh on skript, mis kĂ€ivitatakse pĂ€rast sihtfailisĂŒsteemi loomist, kuid enne selle piltidele pakkimist. Kasutame seda ka edaspidi
  • linux.config – tuuma konfiguratsioon
  • rootfs_overlay – kataloog sihtfailisĂŒsteemi peal olevasse ĂŒlekattesse
  • user.txt – fail, mis kirjeldab loodavaid kasutajaid

Kataloog configs sisaldab meie tahvlite defconfigi. Meil on ainult ĂŒks.

Pakend - kataloog meie pakettidega. Esialgu sisaldab buildroot kirjeldusi ja reegleid piiratud arvu pakettide koostamiseks. Hiljem lisame siia icewm aknahalduri ja Slim graafilise sisselogimishalduri.
Paikade — vĂ”imaldab mugavalt hoiustada oma plaastreid erinevatele pakenditele. Lisateavet leiate allpool eraldi jaotisest.
NĂŒĂŒd peame lisama oma vĂ€lise puu kirjeldusfailid. Selle eest vastutavad 3 faili: external.desc, Config.in, external.mk.

vÀline.desc sisaldab tegelikku kirjeldust:

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

Esimene rida on pealkiri. Tulevikus looge root root muutuja $(BR2_EXTERNAL_MY_TREE_PATH), mida tuleks kasutada koostu konfigureerimisel. NÀiteks kasutajafaili tee saab mÀÀrata jÀrgmiselt:

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

Teine rida on lĂŒhike, inimloetav kirjeldus.

Config.in, external.mk — failid lisatud pakettide kirjeldamiseks. Kui te oma pakette ei lisa, vĂ”ib need failid tĂŒhjaks jĂ€tta. Praegu me seda teeme.
NĂŒĂŒd on meil valmis meie vĂ€line puu, mis sisaldab meie tahvli defconfigi ja selleks vajalikke faile. LĂ€heme buildroot kataloogi ja mÀÀrame vĂ€lise puu kasutamiseks:

[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

Esimeses kĂ€sus kasutame argumenti BR2_EXTERNAL=../minu_puu/, mis nĂ€itab vĂ€lise puu kasutamist. Saate mÀÀrata mitu vĂ€list puud korraga kasutamiseks Sel juhul peate seda tegema ainult ĂŒks kord, misjĂ€rel luuakse fail vĂ€ljund/.br-external.mk, mis salvestab teavet kasutatud vĂ€lise puu kohta:

[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

TĂ€htis! Selle faili teed on absoluutsed!

MenĂŒĂŒsse ilmus ĂŒksus VĂ€lised valikud:

Buildroot – osa 2. Tahvli konfiguratsiooni loomine; kasutades vĂ€list puud, rootfs-overlay, ehitusjĂ€rgseid skripte

See alammenĂŒĂŒ sisaldab meie pakette meie vĂ€lisest puust. See jaotis on praegu tĂŒhi.

NĂŒĂŒd on meie jaoks olulisem kirjutada ĂŒmber vajalikud teed vĂ€lise puu kasutamiseks.

Pange tĂ€hele, et jaotises Ehitussuvandid → Asukoht buildrooti konfiguratsiooni salvestamiseks on salvestatud defconfigi absoluutne tee. See moodustatakse extgernal_tree kasutamise mÀÀramise hetkel.

Samuti parandame teid jaotises SĂŒsteemi konfiguratsioon. Loodud kasutajatega tabeli jaoks:

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

Muutke jaotises Kernel kerneli konfiguratsiooni teed:

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

NĂŒĂŒd kasutatakse kokkupanekul meie vĂ€lise puu faile. Teise kataloogi kolimisel vĂ”i buildrooti vĂ€rskendamisel on meil minimaalselt probleeme.

Juurfs-ĂŒlekatte lisamine:

See mehhanism vĂ”imaldab hĂ”lpsasti faile sihtfailisĂŒsteemis lisada/asendada.
Kui fail on juurfs-ĂŒlekattes, kuid mitte sihtmĂ€rgis, siis see lisatakse
Kui fail on juurfs-ĂŒlekattes ja sihtmĂ€rgis, siis see asendatakse.
Esmalt mÀÀrame juure fs overlay dir tee. Seda tehakse jaotises SĂŒsteemi konfiguratsioon → JuurfailisĂŒsteemi ĂŒlekattekataloogid:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

NĂŒĂŒd loome kaks faili.

[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

Esimene fail (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) asendab valmis sĂŒsteemis faili /etc/hosts. Teine fail (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) lisatakse.

Kogume ja kontrollime:

Buildroot – osa 2. Tahvli konfiguratsiooni loomine; kasutades vĂ€list puud, rootfs-overlay, ehitusjĂ€rgseid skripte

Kohandusskriptide tĂ€itmine sĂŒsteemi kokkupaneku erinevates etappides

Sageli peate sihtfailisĂŒsteemis enne selle piltidena pakkimist tegema tööd.

Seda saab teha jaotises SĂŒsteemi konfiguratsioon:

Buildroot – osa 2. Tahvli konfiguratsiooni loomine; kasutades vĂ€list puud, rootfs-overlay, ehitusjĂ€rgseid skripte

Esimesed kaks skripti kĂ€ivitatakse pĂ€rast sihtfailisĂŒsteemi loomist, kuid enne selle piltidele pakkimist. Erinevus seisneb selles, et fakerooti skript kĂ€ivitatakse fakerooti kontekstis, mis simuleerib tööd juurkasutajana.

Viimane skript kĂ€ivitatakse pĂ€rast sĂŒsteemipiltide loomist. Saate selles teha tĂ€iendavaid toiminguid, nĂ€iteks kopeerida vajalikud failid NFS-serverisse vĂ”i luua seadme pĂŒsivara kujutise.

NÀiteks loon skripti, mis kirjutab versiooni ja ehituskuupÀeva faili /etc/.
KÔigepealt nÀitan oma vÀlises puus selle faili tee:

Buildroot – osa 2. Tahvli konfiguratsiooni loomine; kasutades vĂ€list puud, rootfs-overlay, ehitusjĂ€rgseid skripte

Ja nĂŒĂŒd skript ise:

[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

PĂ€rast kokkupanekut nĂ€ete seda faili sĂŒsteemis.

Praktikas vÔib skript muutuda suureks. SeetÔttu valisin reaalses projektis tÀpsema marsruudi:

  1. Tegin kataloogi (my_tree/board_my_x86_board/inside_fakeroot_scripts), kus on seerianumbritega kÀivitatavad skriptid. NÀiteks 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Kirjutasin skripti (my_tree/board_my_x86_board/run_inside_fakeroot.sh), mis lÀbib selle kataloogi ja kÀivitab jÀrjestikku selles sisalduvad skriptid
  3. MÀÀras selle skripti tahvli sĂ€tetes jaotises SĂŒsteemi konfiguratsioon -> Kohandatud skriptid, mis töötavad fakerooti keskkonnas ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh)

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster