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
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 filesDị 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 articleAhị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.txtAhị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 menuconfigN'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 articleIhe dị mkpa! Ụzọ ndị dị na faịlụ a ga-abụ nke zuru oke!
Ihe nhọrọ Mpụga apụtala na menu:

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.txtNa ngalaba kernel, gbanwee ụzọ nhazi kernel:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.configUgbu 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 overlayFaị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:

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ụ:

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:

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-releaseMgbe 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ị:
- 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
- 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.
- 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
