ืืื ืืขื ืึธืคึผืืืืืื ื ืืื ืงืืง ืืื ืขืืืขืืข ืคืื โโืื ืงืืกืืึธืืืืึทืืืึธื ืึธืคึผืฆืืขืก ืืืึธืก ืืื ืืืจืฃ. ืืึธืก ืืื ื ืืฉื ืึท ืืึทื ืฅ ืจืฉืืื ืคืื ืืืึธืก 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
ืืืืืืืง! ืื ืคึผืึทืืก ืืื ืืขื ืืขืงืข ืืืขื ืืืื ืึทืืกืึธืืื!
ืึทื ืขืงืกืืขืจื ืึธืคึผืฆืืขืก ื ืืืขืจ ืืื ืืจืืืก ืืื ืื ืืขื ืื:
ืืขืจ ืกืืืืขื ืื ืืืขื ืึทื ืืืึทืืื ืืื ืืืขืจ ืคึผืึทืงืึทืืืฉืึทื ืคืื ืืื ืืืขืจ ืคืื ืืจืืืกื ืืืง ืืืื. ืืขืจ ืึธืคึผืืืืืื ื ืืื ืืืฆื ืืืืืืง.
ืืืฆื ืขืก ืืื ืืขืจ ืืืืืืืง ืคึฟืึทืจ ืืื ืื ืฆื ืจืืจืืื ืื ื ืืืืืง ืคึผืึทืืก ืฆื ื ืืฆื ืคืื ืืจืืืกื ืืืง-ืืืื.
ืืืืข ืืึธื ืึทื ืืื ืื ืืืื ืึธืคึผืฆืืขืก โ ืึธืจื ืฆื ืจืึทืืขืืืขื ืืืืืจืึธืึธื ืงืึธื ืคืื ืึธืคึผืืืืืื ื, ืขืก ืืืขื ืืืื ืึทื ืึทืืกืึธืืื ืืืขื ืฆื ืื ืืขืจืืืขืืืขื ืืขืคืงืึธื ืคืื. ืขืก ืืื ืืขืฉืืคื ืืื ืืขื ืืึธืืขื ื ืคืื ืกืคึผืขืฆืืคืืฆืืจื ืื ื ืืฆื ืคืื ืขืงืกืืืขืจื ืึทื_ืืจื.
ืืืจ ืืืขืื ืืืื ืจืืืืืง ืื ืคึผืึทืืก ืืื ืื ืกืืกืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ืึธืคึผืืืืืื ื. ืคึฟืึทืจ ืึท ืืืฉ ืืื ืืืฉืืคื ื ืืฆืขืจืก:
$(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) ืืืขื ืืืื ืืืกืืฃ.
ืืืจ ืงืืืึทืื ืืื ืงืึธื ืืจืึธืืืจื:
ืืืจืืคืืจืื ื ืคืื ืงืืกืืึธืืืืึทืืืึธื ืกืงืจืืคึผืก ืืื ืคืึทืจืฉืืืขื ืข ืกืืึทืืขืก ืคืื ืกืืกืืขื ืคึฟืึทืจืืึทืืืื ื
ืึธืคื ืืืจ ืืึทืจืคึฟื ืฆื ืืืจืืคืืจื ืขืืืขืืข ืึทืจืืขื ืืื ืื ืฆืื ืืขืงืข ืกืืกืืขื ืืืืืขืจ ืขืก ืืื ืคึผืึทืงืืืืฉื ืืื ืืืืืขืจ.
ืืขื ืงืขื ืขื ืืืื ืืขืืื ืืื ืื ืกืืกืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ืึธืคึผืืืืืื ื:
ืื ืขืจืฉืืข ืฆืืืื ืกืงืจืืคึผืก ืืขื ืขื ืขืงืกืึทืงืืืืึทื ื ืึธื ืื ืฆืื ืืขืงืข ืกืืกืืขื ืืื ืืขืืืื, ืึธืืขืจ ืืืืืขืจ ืขืก ืืื ืคึผืึทืงืืืืฉื ืืื ืืืืืขืจ. ืืขืจ ืืืืืง ืืื ืึทื ืื fakeroot ืฉืจืืคื ืืื ืขืงืกืึทืงืืืืึทื ืืื ืืขื ืงืึธื ืืขืงืกื ืคืื fakeroot, ืืืึธืก ืกืืืืึทืืืืฅ ืึทืจืืขื ืืื ืืขืจ ืืืึธืจืฆื ืืึทื ืืฆืขืจ.
ืื ืืขืฆืืข ืฉืจืืคื ืืื ืขืงืกืึทืงืืืืึทื ื ืึธื ืื ืกืืกืืขื ืืืืืขืจ ืืขื ืขื ืืืฉืืคื. ืืืจ ืงืขื ืขื ืืืจืืคืืจื ื ืึธื ืึทืงืฉืึทื ื ืืื ืขืก, ืืืฉื, ื ืึธืืืึทืื ืื ื ืืืืืง ืืขืงืขืก ืฆื ืึท NFS ืกืขืจืืืขืจ ืึธืืขืจ ืฉืึทืคึฟื ืึท ืืืื ืคืื ืืืื ืืืื ืคืืจืืืืึทืจืข.
ืืื ืึท ืืืึทืฉืคึผืื, ืืื ืืืขื ืืึทืื ืึท ืฉืจืืคื ืืืึธืก ืืืขื ืฉืจืืึทืื ืื ืืืขืจืกืืข ืืื ืืืืขื ืืึทืืข ืฆื /etc/.
ืขืจืฉืืขืจ ืืื ืืืขื ืึธื ืืืืึทืื ืืขื ืืจื ืฆื ืืขื ืืขืงืข ืืื ืืืื ืคืื ืืจืืืกื ืืืง-ืืืื:
ืืื ืืืฆื ืืขืจ ืฉืจืืคื ืืื:
[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) ืืืึธืก ืืืื ืืืจื ืืขื ืืืขืืืืืึทืืขืจ ืืื ืกืึทืงืืืขื ืืฉืึทืื ืขืงืกืึทืงืืืฅ ืื ืกืงืจืืคึผืก ืงืึทื ืืืื ื ืืื ืขืก
- ืกืคึผืขืฆืืคืืฆืืจื ืืขื ืฉืจืืคื ืืื ืื ืืจืขื ืกืขืืืื ืืก ืืื ืื ืกืืกืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื -> ืื ืื ืกืงืจืืคึผืก ืฆื ืืืืคื ืืื ืื fakeroot ืกืืืืืืข ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) ืึธืคึผืืืืืื ื
ืืงืืจ: www.habr.com