Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΡΠ°ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ ΠΌΠ½Π΅. ΠΡΠΎ Π½Π΅ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ buildroot, Π½ΠΎ ΠΎΠ½ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π² ΡΠ°ΠΉΠ»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ buildroot.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ EXTERNAL-ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ
ΠΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ buildroot. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ external tree. Π‘ΡΡΡ Π΅Π³ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ board,configs,packages ΠΈ ΠΏΡΠΎΡΠΈΠ΅( Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ patches Π΄Π»Ρ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΡΠ΅ΠΉ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅) ΠΈ buildroot Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΡ ΠΊ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅: ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ external tree, Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ buildroot
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ my_tree, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ buildrootβΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΌ ΡΡΠ΄Π° Π½Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠ° Π²ΡΡ ΠΎΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²:
[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
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π² ΡΠ΅Π»ΠΎΠΌ ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ buildroot.
ΠΠ°ΡΠ°Π»ΠΎΠ³ board ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΉΠ»Ρ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅:
- bef_cr_fs_img.sh β ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ target-ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π΅Ρ Π² ΠΎΠ±ΡΠ°Π·Ρ. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ Π΅Π³ΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
- linux.config β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΄ΡΠ°
- rootfs_overlay β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅ΡΡ target-ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
- users.txt β ΡΠ°ΠΉΠ» Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
ΠΠ°ΡΠ°Π»ΠΎΠ³ configs ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ defconfigβΠΈ Π½Π°ΡΠΈΡ ΠΏΠ»Π°Ρ. Π£ Π½Π°Ρ ΠΎΠ½ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½.
Package β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ Π½Π°ΡΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ buildroot ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ΄Π° ΠΎΠΊΠΎΠ½Π½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ icewm ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²Ρ
ΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΡ Slim.
Patches β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ°ΡΡΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π΄Π°Π»Π΅Π΅.
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ external-tree. ΠΠ° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°ΡΡ 3 ΡΠ°ΠΉΠ»Π°: external.desc, Config.in, external.mk.
external.desc ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for article
ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° β Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ buildroot ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $(BR2_EXTERNAL_MY_TREE_PATH), ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΡΠ΅ΠΌ:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
ΠΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ° β ΠΊΡΠ°ΡΠΊΠΎΠ΅, ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
Config.in, external.mk β ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠ²ΠΎΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ, ΡΠΎ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΡΡΡΠΌΠΈ. ΠΠΎΠΊΠ° ΡΡΠΎ ΠΌΡ ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΡΡΠΏΠΈΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π³ΠΎΡΠΎΠ²ΠΎ Π½Π°ΡΠ΅ external-tree, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ defconfig Π½Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡ ΠΈ Π½ΡΠΆΠ½ΡΠ΅ Π΅ΠΌΡ ΡΠ°ΠΉΠ»Ρ. ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ buildroot, ΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ external-tree:
[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
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ BR2_EXTERNAL=../my_tree/, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ external tree.ΠΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ external-tree Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΡΠΈ ΡΡΠΎΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ» output/.br-external.mk, Ρ ΡΠ°Π½ΡΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ external-tree:
[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
ΠΠ°ΠΆΠ½ΠΎ! Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΏΡΡΠΈ Π±ΡΠ΄ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΌΠΈ!
Π ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΏΡΠ½ΠΊΡ External options:
Π ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ Π±ΡΠ΄ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ Π½Π°ΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ external-tree. Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΏΡΡΡΠΎΠΉ.
Π‘Π΅ΠΉΡΠ°Ρ Π½Π°ΠΌ Π²Π°ΠΆΠ½Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΡΡΠΈ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ external-tree.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Build options β Location to save buildroot config, Π±ΡΠ΄Π΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΠΌΡ defconfig’Ρ. Π€ΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΎΠ½ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠΌΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ extgernal_tree.
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ System configuration ΠΏΠΎΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΡΠΈ. ΠΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Π ΡΠ°Π·Π΄Π΅Π»Π΅ Kernel ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΄ΡΠ°:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ external-tree. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ buildroot Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ root fs overlay:
ΠΠ°Π½Π½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ/Π·Π°ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΉΠ»Ρ Π² target-ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π΅ΡΡΡ Π² root fs overlay, Π½ΠΎ Π½Π΅Ρ Π² target, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π΅ΡΡΡ Π² root fs overlay ΠΈ Π² target, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ½.
Π‘Π½Π°ΡΠ°Π»Π° Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΏΡΡΡ ΠΊ root fs overlay dir. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ System configuration β Root filesystem overlay directories:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π° ΡΠ°ΠΉΠ»Π°.
[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
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°ΠΉΠ» (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ» /etc/hosts Π² Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠΎΡΠΎΠΉ ΡΠ°ΠΉΠ» (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) Π΄ΠΎΠ±Π°Π²ΠΈΡΡΡ.
Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ:
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΡΠ°ΠΏΠ°Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ
Π§Π°ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π½ΡΡΡΠΈ target-ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π° Π² ΠΎΠ±ΡΠ°Π·Ρ.
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ System configuration:
ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΡΠΊΡΠΈΠΏΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ target-ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎ Π΄ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΅Ρ Π² ΠΎΠ±ΡΠ°Π·Ρ. Π Π°Π·Π½ΠΈΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ fakeroot-ΡΠΊΡΠΈΠΏΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ fakeroot, ΡΠ΅ ΠΈΠΌΠΈΡΠΈΡΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΊΡΠΈΠΏΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ. Π Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π° nfs-ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ°Π· ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ ΡΠΎΠ·Π΄Π°ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΈΡΠ°ΡΡ Π²Π΅ΡΡΠΈΡ ΠΈ Π΄Π°ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π² /etc/.
Π‘Π½Π°ΡΠ°Π»Π° ΡΠΊΠ°ΠΆΡ ΠΏΡΡΡ ΠΊ ΡΡΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ Π² ΠΌΠΎΠ΅ΠΌ external-tree:
Π ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΠΌ ΡΠΊΡΠΈΠΏΡ:
[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
ΠΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΊΡΠΈΠΏΡ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ. ΠΠΎΡΡΠΎΠΌΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Ρ ΠΏΠΎΡΠ΅Π» Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΌ ΠΏΡΡΠ΅ΠΌ:
- Π‘ΠΎΠ·Π΄Π°Π» ΠΊΠ°ΡΠ°Π»ΠΎΠ³ (my_tree/board_my_x86_board/inside_fakeroot_scripts), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π»Π΅ΠΆΠ°Ρ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΌΠΈ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- ΠΠ°ΠΏΠΈΡΠ°Π» ΡΠΊΡΠΈΠΏΡ(my_tree/board_my_x86_board/run_inside_fakeroot.sh), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΊΡΠΈΠΏΡΡ, Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π² Π½Π΅ΠΌ
- Π£ΠΊΠ°Π·Π°Π» ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΠ»Π°ΡΡ Π² ΡΠ°Π·Π΅Π»Π΅ System configuration -> Custom scripts to run inside the fakeroot environment ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh)
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com