Buildroot - akụkụ 2. Ịmepụta nhazi osisi gị; na-eji osisi mpụga, rootfs-overlay, post-ewu scripts

Na ngalaba a, m na-ele ụfọdụ nhọrọ nhazi nke m chọrọ. Nke a abụghị ndepụta zuru ezu nke ihe buildroot na-enye, mana ha na-arụ ọrụ nke ọma na ha anaghị achọ itinye aka na faịlụ nke buildroot n'onwe ya.

Iji usoro EXTERNAL maka ịhazi ya

N'isiokwu gara aga Anyị lere anya n'ihe atụ dị mfe nke ịgbakwunye nhazi nke gị site na ịgbakwunye defconfig nke bọọdụ yana faịlụ ndị dị mkpa ozugbo na ndekọ Buildroot.

Mana usoro a adịghị adaba, ọkachasị mgbe ị na-emelite buildroot. Enwere usoro iji dozie nsogbu a mpụta osisi. Ihe kachasị mkpa bụ na ị nwere ike ịchekwa bọọdụ, nhazi, ngwugwu na akwụkwọ ndekọ aha ndị ọzọ na akwụkwọ ndekọ aha dị iche (dịka ọmụmaatụ, m na-eji akwụkwọ ndekọ patches tinye patches na ngwugwu, nkọwa ndị ọzọ na ngalaba dị iche) na buildroot n'onwe ya ga-agbakwunye ha na ndị nọ na ya. akwụkwọ ndekọ aha ya.

Mara: ị nwere ike machie ọtụtụ osisi dịpụrụ adịpụ n'otu oge, enwere ọmụmaatụ na akwụkwọ ntuziaka buildroot

Ka anyị mepụta ndekọ aha my_tree, nke dị n'akụkụ akwụkwọ ndekọ aha buildroot wee bufee nhazi anyị ebe ahụ. Nsonaazụ kwesịrị ịbụ nhazi faịlụ ndị a:

[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

Dị ka ị pụrụ ịhụ, n'ozuzu ihe owuwu na-emeghachi ihe owuwu nke buildroot.

Directory osisi nwere faịlụ kpọmkwem maka bọọdụ ọ bụla n'ọnọdụ anyị:

  • bef_cr_fs_img.sh bụ edemede nke a ga-egbu mgbe emechara sistemụ faịlụ ebumnuche, mana tupu ịkwakọba ya na onyonyo. Anyị ga-eji ya n'ọdịnihu
  • linux.config - nhazi kernel
  • rootfs_overlay - ndekọ iji kpuchie n'elu sistemụ faịlụ ebumnuche
  • Users.txt - faịlụ na-akọwa ndị ọrụ a ga-emepụta

Directory nhazi nwere defconfig nke bọọdụ anyị. Anyị nwere naanị otu.

ngwugwu - katalọgụ na ngwugwu anyị. Na mbụ, buildroot nwere nkọwa na iwu maka iwulite ọnụọgụ ngwugwu. E mesịa, anyị ga-agbakwunye njikwa windo icewm na onye njikwa nbanye Slim eserese ebe a.
Ntuchi - na-enye gị ohere ịchekwa patches gị nke ọma maka ngwugwu dị iche iche. Nkọwa ndị ọzọ na ngalaba dị iche n'okpuru.
Ugbu a, anyị kwesịrị ịgbakwunye nkọwa faịlụ maka mpụga-osisi anyị. Enwere faịlụ 3 maka nke a: external.desc, Config.in, external.mk.

mpụga.desc nwere nkọwapụta n'ezie:

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

Ahịrị nke mbụ bụ aha. N'ọdịnihu buildroot mepụta mgbanwe $(BR2_EXTERNAL_MY_TREE_PATH), nke a ga-eji mee ihe mgbe ị na-ahazi mgbakọ ahụ. Dịka ọmụmaatụ, enwere ike ịtọ ụzọ na faịlụ onye ọrụ dị ka ndị a:

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

Ahịrị nke abụọ bụ nkọwa dị nkenke, nke mmadụ nwere ike ịgụ.

Config.in, external.mk - faịlụ iji kọwaa ngwugwu agbakwunyere. Ọ bụrụ na itinyeghị ngwugwu nke gị, enwere ike ịhapụ faịlụ ndị a efu. Maka ugbu a, nke ahụ bụ ihe anyị ga-eme.
Ugbu a, anyị nwere mpụta-osisi dị njikere, nwere defconfig nke bọọdụ anyị na faịlụ ọ chọrọ. Ka anyị gaa na ndekọ aha buildroot wee kọwapụta iji mpụta-osisi:

[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

N'iwu nke mbụ anyị na-eji arụmụka ahụ BR2_EXTERNAL=../my_osisi/, na-egosi iji osisi dị n'èzí, ị nwere ike ịkọwa ọtụtụ osisi ndị dị n'èzí maka iji mee ihe n'otu oge ahụ, na nke a, naanị ị ga-eme nke a otu ugboro, mgbe nke ahụ gasịrị, a na-emepụta faịlụ / .br-external.mk nke ahụ. na-echekwa ozi gbasara mpụta-osisi eji:

[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

Ihe dị mkpa! Ụzọ ndị dị na faịlụ a ga-abụ nke zuru oke!

Ihe nhọrọ Mpụga apụtala na menu:

Buildroot - akụkụ 2. Ịmepụta nhazi osisi gị; na-eji osisi mpụga, rootfs-overlay, post-ewu scripts

Nke a submenu ga-ebu ngwugwu anyị site na mpụta-osisi anyị. Akụkụ a bụ ihe efu ugbu a.

Ugbu a ọ dị mkpa ka anyị degharịa ụzọ ndị dị mkpa iji jiri mpụta-osisi.

Biko mara na n'ime nhọrọ Mee → Ebe ịchekwa ngalaba configroot, a ga-enwe ụzọ zuru oke na defconfig echekwara. Emebere ya n'oge ịkọwapụta ojiji nke extgernal_tree.

Anyị ga-edozikwa ụzọ ndị dị na ngalaba nhazi Sistemu. Maka tebụl nwere ndị ọrụ emepụtara:

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

Na ngalaba kernel, gbanwee ụzọ nhazi kernel:

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

Ugbu a faịlụ anyị sitere na mpụta-osisi ga-eji n'oge mgbakọ. Mgbe ị na-akwaga na ndekọ ọzọ ma ọ bụ na-emelite buildroot, anyị ga-enwe obere nsogbu.

Na-agbakwunye mgbọrọgwụ fs machie:

Usoro a na-enye gị ohere itinye / dochie faịlụ n'ụzọ dị mfe na sistemụ faịlụ ebumnuche.
Ọ bụrụ na faịlụ ahụ dị na mgbọrọgwụ fs overlay, mana ọ bụghị na ebumnuche, mgbe ahụ, a ga-agbakwunye ya
Ọ bụrụ na faịlụ ahụ dị na mgbọrọgwụ fs overlay na na ebumnuche, mgbe ahụ, a ga-edochi ya.
Mbụ, ka anyị dobe ụzọ mgbọrọgwụ fs overlay dir. Emere nke a na nhazi sistemu → Mgbọrọgwụ filesystem overlay directories:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Ugbu a, ka anyị mepụta faịlụ abụọ.

[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

Faịlụ mbụ (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) ga-edochi faịlụ /etc/hosts na sistemu emechara. A ga-agbakwunye faịlụ nke abụọ (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt).

Anyị na-anakọta wee lelee:

Buildroot - akụkụ 2. Ịmepụta nhazi osisi gị; na-eji osisi mpụga, rootfs-overlay, post-ewu scripts

Mmezu nke ederede nhazi na ọkwa dị iche iche nke mgbakọ usoro

Ọtụtụ mgbe, ị ga-achọ ịrụ ụfọdụ ọrụ n'ime sistemụ faịlụ echere tupu etinye ya na onyonyo.

Enwere ike ime nke a na ngalaba nhazi sistemụ:

Buildroot - akụkụ 2. Ịmepụta nhazi osisi gị; na-eji osisi mpụga, rootfs-overlay, post-ewu scripts

A na-eme ihe odide abụọ mbụ mgbe emechara sistemụ faịlụ ebumnuche, mana tupu etinye ya n'ime onyonyo. Ihe dị iche bụ na a na-eme ihe odide fakeroot n'ụdị fakeroot, nke na-eme ka ọrụ dị ka onye ọrụ mgbọrọgwụ.

A na-eme ihe odide ikpeazụ mgbe emechara onyonyo sistemụ. Ị nwere ike ịrụ ọrụ ndị ọzọ na ya, dịka ọmụmaatụ, detuo faịlụ ndị dị mkpa na sava NFS ma ọ bụ mepụta onyonyo nke ngwa ngwa ngwaọrụ gị.

Dịka ọmụmaatụ, m ga-emepụta edemede nke ga-ede ụdị ma wuo ụbọchị na /etc/.
Nke mbụ, m ga-egosi ụzọ nke faịlụ a n'osisi mpụga m:

Buildroot - akụkụ 2. Ịmepụta nhazi osisi gị; na-eji osisi mpụga, rootfs-overlay, post-ewu scripts

Ma ugbu a, edemede ahụ n'onwe ya:

[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

Mgbe mgbakọ ahụ gasịrị, ị nwere ike ịhụ faịlụ a na sistemụ.

Na omume, edemede ahụ nwere ike ibu ibu. Ya mere, n'ezi oru ngo, m weere ụzọ dị elu karị:

  1. M mepụtara ndekọ (my_tree/board_my_x86_board/inside_fakeroot_scripts) nke enwere scripts a ga-egbu, yana ọnụọgụ nọmba. Dịka ọmụmaatụ, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Edere m edemede (my_tree/board_my_x86_board/run_inside_fakeroot.sh) nke na-aga na ndekọ a wee mebie scripts dị na ya n'usoro.
  3. Kpọpụtara edemede a na ntọala bọọdụ na nhazi Sistemu -> Ederede omenala iji na-agba ọsọ n'ime ebe fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakroot.sh) ngalaba

isi: www.habr.com

Tinye a comment