Buildroot - part 2. Ƙirƙirar tsarin tsarin ku; ta yin amfani da bishiyar waje, tushen tushen-overlay, rubutun bayan-gini

A cikin wannan sashe na kalli wasu zaɓuɓɓukan gyare-gyaren da nake buƙata. Wannan ba cikakken jerin abubuwan da buildroot ke bayarwa ba ne, amma suna aiki sosai kuma basa buƙatar sa baki a cikin fayilolin buildroot kanta.

Amfani da tsarin WAJE don keɓancewa

A cikin labarin da ya gabata Mun kalli misali mai sauƙi na ƙara tsarin ku ta ƙara defconfig na hukumar da fayilolin da suka wajaba kai tsaye zuwa ga Buildroot directory.

Amma wannan hanyar ba ta dace sosai ba, musamman lokacin sabunta ginin ginin. Akwai hanyar magance wannan matsala waje itace. Mahimmancinsa shine zaku iya adana allo, daidaitawa, fakiti da sauran kundayen adireshi a cikin wani kundin adireshi daban (alal misali, Ina amfani da directory ɗin faci don amfani da faci zuwa fakiti, ƙarin cikakkun bayanai a cikin wani sashe daban) kuma ginin da kansa zai ƙara su ga waɗanda ke ciki. littafinsa.

Lura: zaku iya rufe bishiyoyin waje da yawa lokaci guda, akwai misali a cikin jagorar ginin tushe

Bari mu ƙirƙiri wani directory my_tree, wanda yake kusa da ginin tushen ginin kuma mu canza tsarin mu a can. Fitowar ya kamata ta zama tsarin fayil mai zuwa:

[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

Kamar yadda kake gani, gaba ɗaya tsarin yana maimaita tsarin ginin ginin.

Directory hukumar ya ƙunshi fayiloli na musamman ga kowane allo a cikin yanayin mu:

  • bef_cr_fs_img.sh rubutun ne da za a aiwatar da shi bayan gina tsarin fayil ɗin da aka yi niyya, amma kafin tattara shi cikin hotuna. Za mu yi amfani da shi a nan gaba
  • linux.config - kernel sanyi
  • rootfs_overlay - directory don rufewa a saman tsarin fayil ɗin manufa
  • users.txt - fayil da ke kwatanta masu amfani da za a ƙirƙira

Directory kwantattun bayanai ya ƙunshi defconfig na allunanmu. Mu daya kawai.

Package - kasida tare da fakitinmu. Da farko, buildroot yana ƙunshe da kwatanci da dokoki don gina ƙayyadaddun adadin fakiti. Daga baya za mu ƙara manajan taga na icewm da Slim mai sarrafa login hoto anan.
faci - yana ba ku damar adana facin ku cikin dacewa don fakiti daban-daban. Ƙarin cikakkun bayanai a cikin wani sashe na daban a ƙasa.
Yanzu muna buƙatar ƙara fayilolin bayanin don bishiyar mu ta waje. Akwai fayiloli 3 da ke da alhakin wannan: external.desc, Config.in, external.mk.

waje.desc ya ƙunshi ainihin bayanin:

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

Layin farko shine take. A nan gaba buildroot ƙirƙirar m $(BR2_EXTERNAL_MY_TREE_PATH), wanda ya kamata a yi amfani dashi lokacin da ake saita taron. Misali, ana iya saita hanyar zuwa fayil ɗin mai amfani kamar haka:

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

Layi na biyu gajeru ne, bayanin da mutum zai iya karantawa.

Config.in, waje.mk - fayiloli don bayyana ƙarin fakiti. Idan ba ku ƙara fakitinku ba, to waɗannan fayilolin za a iya barin su fanko. A yanzu, abin da za mu yi ke nan.
Yanzu muna da bishiyar mu ta waje, tana ɗauke da defconfig na allon mu da fayilolin da yake buƙata. Bari mu je kan ginin tushen ginin kuma mu saka don amfani da itacen waje:

[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

A cikin umarni na farko muna amfani da hujja BR2_EXTERNAL=../my_itace/, yana nuna amfani da itacen waje.Zaka iya ƙayyade itatuwan waje da yawa don amfani a lokaci guda. tana adana bayanai game da itacen waje da aka yi amfani da su:

[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

Muhimmanci! Hanyoyin da ke cikin wannan fayil ɗin za su kasance cikakke!

Wani zaɓi na waje ya bayyana a cikin menu:

Buildroot - part 2. Ƙirƙirar tsarin tsarin ku; ta yin amfani da bishiyar waje, tushen tushen-overlay, rubutun bayan-gini

Wannan ƙaramin menu zai ƙunshi fakitinmu daga itacen mu na waje. Wannan sashe a halin yanzu babu kowa.

Yanzu yana da mahimmanci a gare mu mu sake rubuta hanyoyin da suka dace don amfani da itacen waje.

Lura cewa a cikin Zaɓuɓɓukan Gina → Wuri don adana sashin saitin ginin ginin, za a sami cikakkiyar hanya zuwa defconfig da aka ajiye. An kafa shi a lokacin ƙayyadaddun amfani da itacen extgernal.

Za mu kuma gyara hanyoyin a cikin sashin tsarin tsarin. Don tebur tare da masu amfani da aka ƙirƙira:

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

A cikin sashin Kernel, canza hanyar zuwa tsarin kwaya:

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

Yanzu za a yi amfani da fayilolin mu daga itacen waje yayin taro. Lokacin matsawa zuwa wani kundin adireshi ko sabunta tushen ginin, za mu sami ƙananan matsaloli.

Ƙara tushen fs mai rufi:

Wannan tsarin yana ba ku damar ƙara / musanya fayiloli cikin sauƙi a cikin tsarin fayil ɗin manufa.
Idan fayil ɗin yana cikin tushen fs overlay, amma ba a cikin manufa ba, to za a ƙara shi
Idan fayil ɗin yana cikin tushen fs mai rufi kuma a cikin manufa, to za a maye gurbinsa.
Da farko, bari mu saita hanyar root fs overlay dir. Ana yin wannan a cikin Tsarin Tsarin → Tushen tsarin fayil mai rufin kundayen adireshi:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Yanzu bari mu ƙirƙiri fayiloli biyu.

[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

Fayil na farko (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) zai maye gurbin fayil ɗin /etc/hosts akan tsarin da aka gama. Za a ƙara fayil na biyu (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt).

Muna tattara kuma mu duba:

Buildroot - part 2. Ƙirƙirar tsarin tsarin ku; ta yin amfani da bishiyar waje, tushen tushen-overlay, rubutun bayan-gini

Ƙaddamar da rubutun gyare-gyare a matakai daban-daban na tsarin tsarin

Yawancin lokaci kuna buƙatar yin wasu ayyuka a cikin tsarin fayil ɗin manufa kafin a haɗa shi cikin hotuna.

Ana iya yin wannan a cikin sashin daidaitawar tsarin:

Buildroot - part 2. Ƙirƙirar tsarin tsarin ku; ta yin amfani da bishiyar waje, tushen tushen-overlay, rubutun bayan-gini

Ana aiwatar da rubutun biyu na farko bayan an gina tsarin fayil ɗin manufa, amma kafin a haɗa shi cikin hotuna. Bambancin shi ne cewa rubutun karya ana aiwatar da shi a cikin mahallin fakeroot, wanda ke kwatanta aiki azaman tushen mai amfani.

Ana aiwatar da rubutun ƙarshe bayan an ƙirƙiri hotunan tsarin. Kuna iya yin ƙarin ayyuka a cikinsa, misali, kwafi mahimman fayiloli zuwa uwar garken NFS ko ƙirƙirar hoton firmware na na'urarku.

A matsayin misali, zan ƙirƙiri rubutun da zai rubuta sigar ya gina kwanan wata zuwa /etc/.
Da farko zan nuna hanyar zuwa wannan fayil ɗin a cikin itacen waje na:

Buildroot - part 2. Ƙirƙirar tsarin tsarin ku; ta yin amfani da bishiyar waje, tushen tushen-overlay, rubutun bayan-gini

Yanzu kuma rubutun kansa:

[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

Bayan taro, zaku iya ganin wannan fayil akan tsarin.

A aikace, rubutun zai iya zama babba. Saboda haka, a cikin ainihin aikin na ɗauki hanya mafi ci gaba:

  1. Na ƙirƙiri littafin adireshi (my_tree/board_my_x86_board/inside_fakeroot_scripts) wanda a ciki akwai rubutun da za a aiwatar, tare da jerin lambobi. Misali, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Na rubuta rubutun (my_tree/board_my_x86_board/run_inside_fakeroot.sh) wanda ke shiga cikin wannan kundin adireshin kuma yana aiwatar da rubutun da ke cikinsa a jere.
  3. Ƙayyade wannan rubutun a cikin saitunan allo a cikin tsarin tsarin -> Rubutun al'ada don aiki a cikin mahallin fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakroot.sh) sashe

source: www.habr.com

Add a comment