Buildroot - 2. zatia. Zure taularen konfigurazioa sortzea; kanpoko zuhaitza, rootfs-overlay, post-build scriptak erabiliz

Atal honetan behar ditudan pertsonalizazio aukera batzuk ikusten ditut. Hau ez da buildroot-ek eskaintzen duen zerrenda osoa, baina nahiko funtzionalak dira eta ez dute esku-hartzerik behar buildroot-en beraren fitxategietan.

Pertsonalizatzeko KANPOko mekanismoa erabiliz

Aurreko artikulu batean Zure konfigurazioa gehitzeko adibide sinple bat aztertu dugu, taularen defconfig eta beharrezko fitxategiak zuzenean Buildroot direktorioa gehituz.

Baina metodo hau ez da oso erosoa, batez ere buildroot eguneratzean. Arazo hau konpontzeko mekanismo bat dago kanpoko zuhaitza. Bere funtsa da taula, konfigurazioak, paketeak eta bestelako direktorio bereizi batean gorde ditzakezula (adibidez, adabakien direktorioa erabiltzen dut paketeei adabakiak aplikatzeko, xehetasun gehiago atal batean) eta buildroot-ek berak gehituko ditu. bere direktorioa.

Oharra: kanpoko hainbat zuhaitz gainjar ditzakezu aldi berean, adibide bat dago buildroot eskuliburuan

Sortu dezagun my_tree direktorioa, buildroot direktorioaren ondoan kokatuta eta transferi dezagun gure konfigurazioa hara. Irteerak fitxategi-egitura hau izan behar du:

[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

Ikus dezakezunez, orokorrean egiturak buildroot-en egitura errepikatzen du.

Каталог taula gure kasuan taula bakoitzaren espezifikoak diren fitxategiak ditu:

  • bef_cr_fs_img.sh xede-fitxategi-sistema eraiki ondoren exekutatzen den script bat da, baina irudietan bildu aurretik. Etorkizunean erabiliko dugu
  • linux.config - nukleoaren konfigurazioa
  • rootfs_overlay - xede fitxategi-sistemaren gainean gainjartzeko direktorioa
  • users.txt - sortu beharreko erabiltzaileak deskribatzen dituen fitxategia

Каталог konfigurazioak gure taulen defconfig dauka. Guk bakarra daukagu.

Package - katalogoa gure paketeekin. Hasieran, buildroot-ek pakete kopuru mugatu bat eraikitzeko deskribapenak eta arauak ditu. Geroago icewm leiho-kudeatzailea eta Slim saio-hasierako kudeatzaile grafikoa gehituko ditugu hemen.
Adabakiak — pakete desberdinetarako zure adabakiak eroso gordetzeko aukera ematen dizu. Xehetasun gehiago beheko aparteko atal batean.
Orain gure kanpoko zuhaitzaren deskribapen fitxategiak gehitu behar ditugu. Honen arduradunak 3 fitxategi daude: external.desc, Config.in, external.mk.

kanpoko.desc benetako deskribapena dauka:

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

Lehenengo lerroa izenburua da. Etorkizunean buildroot aldagai bat sortu $(BR2_EXTERNAL_MY_TREE_PATH), muntaia konfiguratzerakoan erabili behar dena. Adibidez, erabiltzailearen fitxategirako bidea honela ezar daiteke:

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

Bigarren lerroa deskribapen laburra da, gizakiek irakur daitekeena.

Config.in, kanpoko.mk — gehitutako paketeak deskribatzeko fitxategiak. Zure paketeak gehitzen ez badituzu, fitxategi hauek hutsik utz daitezke. Oraingoz, horixe egingo dugu.
Orain gure kanpoko zuhaitza prest daukagu, gure taularen defconfig eta behar dituen fitxategiak dituena. Goazen buildroot direktoriora eta zehaztu kanpoko zuhaitza erabiltzeko:

[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

Lehenengo komandoan argumentua erabiltzen dugu BR2_KANPO=../nire_zuhaitza/, kanpoko zuhaitz baten erabilera adieraziz. Kanpoko hainbat zuhaitz zehaztu ditzakezu aldi berean erabiltzeko. Kasu honetan, behin bakarrik egin beharko duzu, eta ondoren output/.br-external.mk fitxategi bat sortzen da. Erabilitako kanpoko zuhaitzari buruzko informazioa gordetzen du:

[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

Garrantzitsua! Fitxategi honetako bideak absolutuak izango dira!

Kanpoko aukeren elementu bat agertu da menuan:

Buildroot - 2. zatia. Zure taularen konfigurazioa sortzea; kanpoko zuhaitza, rootfs-overlay, post-build scriptak erabiliz

Azpimenu honek gure kanpoko zuhaitzeko paketeak edukiko ditu. Atal hau hutsik dago une honetan.

Orain garrantzitsuagoa da kanpoko zuhaitza erabiltzeko beharrezko bideak berridaztea.

Kontuan izan Eraikitzeko aukerak → Buildroot konfigurazioa gordetzeko kokapena atalean, gordetako defconfig-erako bide absolutu bat egongo dela. extgernal_tree-ren erabilera zehazteko unean eratzen da.

Sistemaren konfigurazioa atalean ere bideak zuzenduko ditugu. Sortutako erabiltzaileekin taula baterako:

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

Kernel atalean, aldatu nukleoaren konfiguraziorako bidea:

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

Orain gure kanpoko zuhaitzeko fitxategiak muntaian zehar erabiliko dira. Beste direktorio batera mugitzean edo buildroot eguneratzean, gutxieneko arazo bat izango dugu.

Erro fs gainjartzea gehitzea:

Mekanismo honek helburuko fitxategi sisteman fitxategiak erraz gehitzeko/ordezkatzeko aukera ematen du.
Fitxategia root fs gainjartzean badago, baina ez xedean, orduan gehituko da
Fitxategia root fs gainjartzean eta xedean badago, ordezkatu egingo da.
Lehenik eta behin, ezarri dezagun bidea root fs overlay dir. Sistemaren konfigurazioa → Erro fitxategi-sistema gainjartzeko direktorioen atalean egiten da:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Orain sor ditzagun bi fitxategi.

[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

Lehenengo fitxategiak (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) /etc/hosts fitxategia ordezkatuko du amaitutako sisteman. Bigarren fitxategia (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) gehituko da.

Bildu eta egiaztatzen ditugu:

Buildroot - 2. zatia. Zure taularen konfigurazioa sortzea; kanpoko zuhaitza, rootfs-overlay, post-build scriptak erabiliz

Pertsonalizazio scripten exekuzioa sistemaren muntaketaren fase desberdinetan

Askotan helburuko fitxategi-sistemaren barruan lan batzuk egin behar dituzu irudietan bildu aurretik.

Hau Sistemaren konfigurazioa atalean egin daiteke:

Buildroot - 2. zatia. Zure taularen konfigurazioa sortzea; kanpoko zuhaitza, rootfs-overlay, post-build scriptak erabiliz

Lehenengo bi script-ak xede-fitxategi-sistema eraiki ondoren exekutatzen dira, baina irudietan paketatu aurretik. Aldea da fakeroot script-a fakeroot-en testuinguruan exekutatzen dela, erroko erabiltzaile gisa lana simulatzen duena.

Azken scripta sistemaren irudiak sortu ondoren exekutatzen da. Ekintza gehigarriak egin ditzakezu bertan, adibidez, beharrezko fitxategiak NFS zerbitzari batera kopiatu edo zure gailuaren firmwarearen irudia sortu.

Adibide gisa, bertsioa eta eraikitze data /etc/-n idatziko dituen script bat sortuko dut.
Lehenik eta behin fitxategi honen bidea adieraziko dut nire kanpoko zuhaitzean:

Buildroot - 2. zatia. Zure taularen konfigurazioa sortzea; kanpoko zuhaitza, rootfs-overlay, post-build scriptak erabiliz

Eta orain gidoia bera:

[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

Muntatu ondoren, fitxategi hau sisteman ikus dezakezu.

Praktikan, gidoia handi bihur daiteke. Horregatik, benetako proiektuan bide aurreratuago bat hartu nuen:

  1. Direktorio bat sortu nuen (my_tree/board_my_x86_board/inside_fakeroot_scripts) bertan exekutatu beharreko script-ak dauden, serie-zenbakiekin. Adibidez, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Script bat idatzi nuen (my_tree/board_my_x86_board/run_inside_fakeroot.sh) direktorio honetatik igarotzen dena eta bertan dauden scriptak sekuentzialki exekutatzen dituena
  3. Zehaztu script hau Sistemaren konfigurazioan -> Script pertsonalizatuak fakeroot ingurunean exekutatzeko taularen ezarpenetan ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) atalean

Iturria: www.habr.com

Gehitu iruzkin berria