Buildroot - ื˜ื™ื™ืœ 2. ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ื™ืŸ ื‘ืจืขื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ; ื ื™ืฆืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื•ื™ื, rootfs-ืึธื•ื•ืขืจืœื™ื™, ืคึผืึธืกื˜ืŸ-ื‘ื•ื™ืขืŸ ืกืงืจื™ืคึผืก

ืื™ืŸ ื“ืขื ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื™ืš ืงื•ืง ืื™ืŸ ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืงื•ืกื˜ืึธืžื™ื–ืึทื˜ื™ืึธืŸ ืึธืคึผืฆื™ืขืก ื•ื•ืึธืก ืื™ืš ื“ืืจืฃ. ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึท ื’ืึทื ืฅ ืจืฉื™ืžื” ืคื•ืŸ ื•ื•ืึธืก Buildroot ืึธืคืคืขืจืก, ืึธื‘ืขืจ ื–ื™ื™ ื–ืขื ืขืŸ ื’ืึทื ืฅ ืคืึทื ื’ืงืฉืึทื ืึทืœ ืื•ืŸ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคืŸ ืืจื™ื™ื ืžื™ืฉื•ื ื’ ืื™ืŸ ื“ื™ ื‘ื™ืœื“ืขืจ ืคื•ืŸ Buildroot ื–ื™ืš.

ื ื™ืฆืŸ ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ืงื•ืกื˜ืึธืžื™ื–ืึทื˜ื™ืึธืŸ

ืื™ืŸ ื“ืขื ืคืจื™ืขืจื“ื™ืงืŸ ืึทืจื˜ื™ืงืœ ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขืงื•ืงื˜ ืื•ื™ืฃ ืึท ืคึผืฉื•ื˜ ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืึทื“ื™ื ื’ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ื•ืจืš ืึทื“ื™ื ื’ ื“ื™ ื“ืขืคืงืึธื ืคื™ื’ ื‘ืจืขื˜ ืื•ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ื˜ืขืงืขืก ื’ืœื™ื™ึทืš ืฆื• ื“ื™ Buildroot ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ.

ืึธื‘ืขืจ ื“ืขื ืื•ืคึฟืŸ ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื, ืกืคึผืขืฆื™ืขืœ ื•ื•ืขืŸ ืื™ืจ ืึทืคึผื“ื™ื™ื˜ื™ื ื’ Buildroot. ืขืก ืื™ื– ืึท ืžืขืงืึทื ื™ื–ืึทื ืฆื• ืกืึธืœื•ื•ืข ื“ืขื ืคึผืจืึธื‘ืœืขื ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื•ื™ื. ื“ื™ ืขืกืึทื ืก ืื™ื– ืึทื– ืื™ืจ ืงืขื ืขืŸ ืงืจืึธื ื‘ืจืขื˜, ืงืึธื ืคื™ื’ืก, ืคึผืึทืงืึทื“ื–ืฉืึทื– ืื•ืŸ ืื ื“ืขืจืข ื“ื™ืจืขืงื˜ืขืจื™ื– ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ (ืœืžืฉืœ, ืื™ืš ื ื•ืฆืŸ ื“ื™ ืคึผืึทื˜ืฉืึทื– ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืฆื• ืฆื•ืœื™ื™ื’ืŸ ืคึผืึทื˜ืฉืึทื– ืฆื• ืคึผืึทืงืึทื“ื–ืฉืึทื–, ืžืขืจ ื“ืขื˜ืึทื™ืœืก ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’) ืื•ืŸ Buildroot ื–ื™ืš ื•ื•ืขื˜ ืœื™ื™ื’ืŸ ื–ื™ื™ ืฆื• ื™ืขื ืข ืื™ืŸ ื–ื™ื™ึทืŸ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ.

ื‘ืึทืžืขืจืงื•ื ื’: ืื™ืจ ืงืขื ืขืŸ ืึธื•ื•ื•ืขืจืœื™ื™ ืขื˜ืœืขื›ืข ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื™ื™ืžืขืจ ืื™ืŸ ืึทืžืึธืœ, ืขืก ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืื™ืŸ ื“ื™ ืžืึทื ื•ืึทืœ ืคื•ืŸ ื‘ื•ื™ืœืจืึธืึธืฅ

ืœืึธืžื™ืจ ืฉืึทืคึฟืŸ ืึท ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ my_tree, ืœื™ื’ืŸ ืœืขื‘ืŸ ื“ื™ ื‘ื™ืœื“ืจืึธืึธื˜ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื•ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืื•ื ื“ื–ืขืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ืึธืจื˜. ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ื–ืึธืœ ื–ื™ื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื˜ืขืงืข ืกื˜ืจื•ืงื˜ื•ืจ:

[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.

ื“ื™ืจืขืงื˜ืืจื™ ื‘ืจืขื˜ ื›ึผื•ืœืœ ื˜ืขืงืขืก ืกืคึผืขืฆื™ืคื™ืฉ ืฆื• ื™ืขื“ืขืจ ื‘ืจืขื˜ ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ:

  • bef_cr_fs_img.sh ืื™ื– ืึท ืฉืจื™ืคื˜ ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื ืึธืš ื‘ื ื™ืŸ ื“ื™ ืฆื™ืœ ื˜ืขืงืข ืกื™ืกื˜ืขื, ืึธื‘ืขืจ ืื™ื™ื“ืขืจ ืคึผืึทืงืงืึทื’ื™ื ื’ ืขืก ืื™ืŸ ื‘ื™ืœื“ืขืจ. ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืขืก ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜
  • linux.config - ืงืขืจืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ
  • rootfs_overlay - ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืฆื• ืึธื•ื•ื•ืขืจืœื™ื™ ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ื™ ืฆื™ืœ ื˜ืขืงืข ืกื™ืกื˜ืขื
  • users.txt - ืึท ื˜ืขืงืข ื“ื™ืกืงืจื™ื™ื‘ื™ื ื’ ื“ื™ ื ื™ืฆืขืจืก ืฆื• ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ

ื“ื™ืจืขืงื˜ืืจื™ ืงืึธื ืคื™ื’ืก ื›ึผื•ืœืœ ื“ืขืคืงืึธื ืคื™ื’ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื‘ืึธืจื“ื–. ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืœื•ื™ื– ืื™ื™ืŸ.

ืคึผืขืงืœ - ืงืึทื˜ืึทืœืึธื’ ืžื™ื˜ ืื•ื ื“ื–ืขืจ ืคึผืึทืงืึทื“ื–ืฉืึทื–. ื˜ื›ื™ืœืขืก, Buildroot ื›ึผื•ืœืœ ื“ื™ืกืงืจื™ืคึผืฉืึทื ื– ืื•ืŸ ื›ึผืœืœื™ื ืคึฟืึทืจ ื‘ื ื™ืŸ ืึท ืœื™ืžื™ื˜ืขื“ ื ื•ืžืขืจ ืคื•ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื–. ืฉืคึผืขื˜ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ืœื™ื™ื’ืŸ ื“ื™ icewm ืคึฟืขื ืฆื˜ืขืจ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืื•ืŸ ื“ื™ ืฉืœืึทื ืง ื’ืจืึทืคื™ืงืึทืœ ืœืึธื’ื™ืŸ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ื“ืึธ.
ืคึผืึทื˜ื˜ืฉืขืก - ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืงืจืึธื ื“ื™ื™ืŸ ืคึผืึทื˜ืฉืึทื– ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ืคึผืึทืงืึทื“ื–ืฉืึทื–. ืžืขืจ ื“ืขื˜ืึทื™ืœืก ืื™ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื•ื ื˜ืŸ.
ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ื“ื™ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ื˜ืขืงืขืก ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง-ื‘ื•ื™ื. ืขืก ื–ืขื ืขืŸ 3 ื˜ืขืงืขืก ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื“ืขื: external.desc, Config.in, external.mk.

ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง.ื“ืขืกืง ื›ึผื•ืœืœ ื“ื™ ืคืึทืงื˜ื™ืฉ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’:

[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 - ื˜ืขืงืขืก ืฆื• ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ืฆื•ื’ืขืœื™ื™ื’ื˜ ืคึผืึทืงืึทื“ื–ืฉืึทื–. ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืœื™ื™ื’ืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึผืึทืงืึทื“ื–ืฉืึทื–, ื“ื™ ื˜ืขืงืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื ืงืก ืœื™ื™ื“ื™ืง. ืคึฟืึทืจ ืื™ืฆื˜, ื“ืึธืก ืื™ื– ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื˜ืึธืŸ.
ืื™ืฆื˜ ืžื™ืจ ื”ืึธื‘ืŸ ืื•ื ื“ื–ืขืจ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง-ื‘ื•ื™ื ื’ืจื™ื™ื˜, ืžื™ื˜ ื“ื™ ื“ืขืคืงืึธื ืคื™ื’ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื‘ืจืขื˜ ืื•ืŸ ื“ื™ ื˜ืขืงืขืก ืขืก ื“ืึทืจืฃ. ืœืึธืžื™ืจ ื’ื™ื™ืŸ ืฆื• ื“ื™ Buildroot ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื•ืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืฆื• ื ื•ืฆืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง-ื‘ื•ื™ื:

[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.mk ืื™ื– ื‘ืืฉืืคืŸ ืึทื– ืกื˜ืึธืจื– ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง-ื‘ื•ื™ื ื’ืขื ื™ืฆื˜:

[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

ื•ื•ื™ื›ื˜ื™ืง! ื“ื™ ืคึผืึทื˜ืก ืื™ืŸ ื“ืขื ื˜ืขืงืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึทื‘ืกืึธืœื•ื˜!

ืึทืŸ ืขืงืกื˜ืขืจืŸ ืึธืคึผืฆื™ืขืก ื ื•ืžืขืจ ืื™ื– ืืจื•ื™ืก ืื™ืŸ ื“ื™ ืžืขื ื™ื•:

Buildroot - ื˜ื™ื™ืœ 2. ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ื™ืŸ ื‘ืจืขื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ; ื ื™ืฆืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื•ื™ื, rootfs-ืึธื•ื•ืขืจืœื™ื™, ืคึผืึธืกื˜ืŸ-ื‘ื•ื™ืขืŸ ืกืงืจื™ืคึผืก

ื“ืขืจ ืกื•ื‘ืžืขื ื™ื• ื•ื•ืขื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ืื•ื ื“ื–ืขืจ ืคึผืึทืงืึทื“ื–ืฉืึทื– ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื•ื™ื. ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื™ื– ืื™ืฆื˜ ืœื™ื™ื“ื™ืง.

ืื™ืฆื˜ ืขืก ืื™ื– ืžืขืจ ื•ื•ื™ื›ื˜ื™ืง ืคึฟืึทืจ ืื•ื ื“ื– ืฆื• ืจื™ืจื™ื™ื˜ ื“ื™ ื ื™ื™ื˜ื™ืง ืคึผืึทื˜ืก ืฆื• ื ื•ืฆืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง-ื‘ื•ื™ื.

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืื™ืŸ ื“ื™ ื‘ื™ืœื“ ืึธืคึผืฆื™ืขืก โ†’ ืึธืจื˜ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ ื‘ื™ืœื“ืจืึธืึธื˜ ืงืึธื ืคื™ื’ ืึธืคึผื˜ื™ื™ืœื•ื ื’, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึทืŸ ืึทื‘ืกืึธืœื•ื˜ ื•ื•ืขื’ ืฆื• ื“ื™ ื’ืขืจืื˜ืขื•ื•ืขื˜ ื“ืขืคืงืึธื ืคื™ื’. ืขืก ืื™ื– ื’ืขืฉืืคืŸ ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ ืคื•ืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืขืงืกื˜ื’ืขืจื ืึทืœ_ื˜ืจื™.

ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ืจื™ื›ื˜ื™ืง ื“ื™ ืคึผืึทื˜ืก ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’. ืคึฟืึทืจ ืึท ื˜ื™ืฉ ืžื™ื˜ ื‘ืืฉืืคืŸ ื ื™ืฆืขืจืก:

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

ืื™ืŸ ื“ื™ ืงืขืจื ืขืœ ืึธืคึผื˜ื™ื™ืœื•ื ื’, ื˜ื•ื™ืฉืŸ ื“ืขื ื“ืจืš ืฆื• ื“ื™ ืงืขืจืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ:

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

ืื™ืฆื˜ ืื•ื ื“ื–ืขืจ ื˜ืขืงืขืก ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง-ื‘ื•ื™ื ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื‘ืขืฉืึทืก ืคึฟืึทืจื–ืึทืžืœื•ื ื’. ื•ื•ืขืŸ ืžื™ืจ ืžืึทืš ืฆื• ืืŸ ืื ื“ืขืจ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืึธื“ืขืจ ืึทืคึผื“ื™ื™ื˜ื™ื ื’ ื“ื™ ื‘ื™ืœื“ืจืึธืึธืฅ, ืžื™ืจ ื•ื•ืขืœืŸ ื”ืึธื‘ืŸ ืึท ืžื™ื ื™ืžื•ื ืคื•ืŸ ืคึผืจืึธื‘ืœืขืžืก.

ืึทื“ื™ื ื’ ื•ื•ืึธืจืฆืœ fs ืึธื•ื•ื•ืขืจืœื™ื™:

ื“ืขื ืžืขืงืึทื ื™ื–ืึทื ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื™ื™ื›ื˜ ืœื™ื™ื’ืŸ / ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื˜ืขืงืขืก ืื™ืŸ ื“ื™ ืฆื™ืœ ื˜ืขืงืข ืกื™ืกื˜ืขื.
ืื•ื™ื‘ ื“ื™ ื˜ืขืงืข ืื™ื– ืื™ืŸ ื•ื•ืึธืจืฆืœ fs ืึธื•ื•ื•ืขืจืœื™ื™, ืึธื‘ืขืจ ื ื™ืฉื˜ ืื™ืŸ ืฆื™ืœ, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžื•ืกื™ืฃ
ืื•ื™ื‘ ื“ื™ ื˜ืขืงืข ืื™ื– ืื™ืŸ ื•ื•ืึธืจืฆืœ fs ืึธื•ื•ื•ืขืจืœื™ื™ ืื•ืŸ ืื™ืŸ ืฆื™ืœ, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจื™ืคึผืœื™ื™ืกื˜.
ืขืจืฉื˜ืขืจ, ืœืึธืžื™ืจ ืฉื˜ืขืœืŸ ื“ืขื ื“ืจืš ืฆื• ื•ื•ืึธืจืฆืœ fs overlay dir. ื“ืึธืก ืื™ื– ื’ืขื˜ืืŸ ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ โ†’ ื•ื•ืึธืจืฆืœ ืคื™ืœืขืกื™ืกื˜ืขื ืึธื•ื•ื•ืขืจืœื™ื™ ื“ื™ืจืขืงื˜ืขืจื™ื– ืึธืคึผื˜ื™ื™ืœื•ื ื’:

$(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 ื˜ืขืงืข ืื•ื™ืฃ ื“ื™ ืคืึทืจื˜ื™ืง ืกื™ืกื˜ืขื. ื“ื™ ืจื’ืข ื˜ืขืงืข (ืงืึทืฅ my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžื•ืกื™ืฃ.

ืžื™ืจ ืงืœื™ื™ึทื‘ืŸ ืื•ืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ:

Buildroot - ื˜ื™ื™ืœ 2. ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ื™ืŸ ื‘ืจืขื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ; ื ื™ืฆืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื•ื™ื, rootfs-ืึธื•ื•ืขืจืœื™ื™, ืคึผืึธืกื˜ืŸ-ื‘ื•ื™ืขืŸ ืกืงืจื™ืคึผืก

ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ืงื•ืกื˜ืึธืžื™ื–ืึทื˜ื™ืึธืŸ ืกืงืจื™ืคึผืก ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืกื˜ืึทื’ืขืก ืคื•ืŸ ืกื™ืกื˜ืขื ืคึฟืึทืจื–ืึทืžืœื•ื ื’

ืึธืคื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืขื˜ืœืขื›ืข ืึทืจื‘ืขื˜ ืื™ืŸ ื“ื™ ืฆื™ืœ ื˜ืขืงืข ืกื™ืกื˜ืขื ืื™ื™ื“ืขืจ ืขืก ืื™ื– ืคึผืึทืงื™ื“ื–ืฉื“ ืื™ืŸ ื‘ื™ืœื“ืขืจ.

ื“ืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’:

Buildroot - ื˜ื™ื™ืœ 2. ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ื™ืŸ ื‘ืจืขื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ; ื ื™ืฆืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื•ื™ื, rootfs-ืึธื•ื•ืขืจืœื™ื™, ืคึผืึธืกื˜ืŸ-ื‘ื•ื™ืขืŸ ืกืงืจื™ืคึผืก

ื“ื™ ืขืจืฉื˜ืข ืฆื•ื•ื™ื™ ืกืงืจื™ืคึผืก ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื ืึธืš ื“ื™ ืฆื™ืœ ื˜ืขืงืข ืกื™ืกื˜ืขื ืื™ื– ื’ืขื‘ื•ื™ื˜, ืึธื‘ืขืจ ืื™ื™ื“ืขืจ ืขืก ืื™ื– ืคึผืึทืงื™ื“ื–ืฉื“ ืื™ืŸ ื‘ื™ืœื“ืขืจ. ื“ืขืจ ื—ื™ืœื•ืง ืื™ื– ืึทื– ื“ื™ fakeroot ืฉืจื™ืคื˜ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื™ืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ fakeroot, ื•ื•ืึธืก ืกื™ืžื™ืึทืœื™ื™ืฅ ืึทืจื‘ืขื˜ ื•ื•ื™ ื“ืขืจ ื•ื•ืึธืจืฆืœ ื‘ืึทื ื™ืฆืขืจ.

ื“ื™ ืœืขืฆื˜ืข ืฉืจื™ืคื˜ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื ืึธืš ื“ื™ ืกื™ืกื˜ืขื ื‘ื™ืœื“ืขืจ ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ. ืื™ืจ ืงืขื ืขืŸ ื“ื•ืจื›ืคื™ืจืŸ ื ืึธืš ืึทืงืฉืึทื ื– ืื™ืŸ ืขืก, ืœืžืฉืœ, ื ืึธื›ืžืึทื›ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ื˜ืขืงืขืก ืฆื• ืึท NFS ืกืขืจื•ื•ืขืจ ืึธื“ืขืจ ืฉืึทืคึฟืŸ ืึท ื‘ื™ืœื“ ืคื•ืŸ ื“ื™ื™ืŸ ืžื™ื˜ืœ ืคื™ืจืžื•ื•ืึทืจืข.

ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืš ื•ื•ืขื˜ ืžืึทื›ืŸ ืึท ืฉืจื™ืคื˜ ื•ื•ืึธืก ื•ื•ืขื˜ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ื•ื•ืขืจืกื™ืข ืื•ืŸ ื‘ื•ื™ืขืŸ ื“ืึทื˜ืข ืฆื• /etc/.
ืขืจืฉื˜ืขืจ ืื™ืš ื•ื•ืขืœ ืึธื ื•ื•ื™ื™ึทื–ืŸ ื“ืขื ื“ืจืš ืฆื• ื“ืขื ื˜ืขืงืข ืื™ืŸ ืžื™ื™ืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง-ื‘ื•ื™ื:

Buildroot - ื˜ื™ื™ืœ 2. ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ื™ืŸ ื‘ืจืขื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ; ื ื™ืฆืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ื•ื™ื, rootfs-ืึธื•ื•ืขืจืœื™ื™, ืคึผืึธืกื˜ืŸ-ื‘ื•ื™ืขืŸ ืกืงืจื™ืคึผืก

ืื•ืŸ ืื™ืฆื˜ ื“ืขืจ ืฉืจื™ืคื˜ ื–ื™ืš:

[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

ื ืึธืš ืคึฟืึทืจื–ืึทืžืœื•ื ื’, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ืขื ื˜ืขืงืข ืื•ื™ืฃ ื“ื™ ืกื™ืกื˜ืขื.

ืื™ืŸ ืคื™ืจ, ื“ื™ ืฉืจื™ืคื˜ ืงืขื ืขืŸ ื•ื•ืขืจืŸ ื’ืจื•ื™ืก. ื“ืขืจื™ื‘ืขืจ, ืื™ืŸ ื“ื™ ืคืึทืงื˜ื™ืฉ ืคึผืจื•ื™ืขืงื˜ ืื™ืš ื’ืขื ื•ืžืขืŸ ืึท ืžืขืจ ืึทื•ื•ืึทื ืกื™ืจื˜ืข ืžืึทืจืฉืจื•ื˜:

  1. ืื™ืš ื‘ืืฉืืคืŸ ืึท ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ (my_tree/board_my_x86_board/inside_fakeroot_scripts) ืื™ืŸ ื•ื•ืึธืก ืขืก ื–ืขื ืขืŸ ืกืงืจื™ืคึผืก ืฆื• ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“, ืžื™ื˜ ืกื™ืจื™ืึทืœ ื ื•ืžืขืจืŸ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. ืื™ืš ื’ืขืฉืจื™ื‘ืŸ ืึท ืฉืจื™ืคื˜ (my_tree/board_my_x86_board/run_inside_fakeroot.sh) ื•ื•ืึธืก ื’ื™ื™ื˜ ื“ื•ืจืš ื“ืขื ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืื•ืŸ ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™ ืขืงืกืึทืงื™ื•ืฅ ื“ื™ ืกืงืจื™ืคึผืก ืงืึทื ื˜ื™ื™ื ื“ ืื™ืŸ ืขืก
  3. ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ืขื ืฉืจื™ืคื˜ ืื™ืŸ ื“ื™ ื‘ืจืขื˜ ืกืขื˜ื˜ื™ื ื’ืก ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ -> ืžื ื”ื’ ืกืงืจื™ืคึผืก ืฆื• ืœื•ื™ืคืŸ ืื™ืŸ ื“ื™ fakeroot ืกื•ื•ื™ื•ื•ืข ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) ืึธืคึผื˜ื™ื™ืœื•ื ื’

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’