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