ืืืืง ืื ืื ื ืืกืชืื ืขื ืืื ืืืคืฉืจืืืืช ืืืชืืื ืืืืฉืืช ืฉืืืืชื ืฆืจืื. ืื ืื ืจืฉืืื ืืืื ืฉื ืื ืฉ-buildroot ืืฆืืข, ืืื ืื ืื ืคืื ืงืฆืืื ืืืื ืืืื ื ืืืจืฉืื ืืชืขืจืืืช ืืงืืฆืื ืฉื buildroot ืขืฆืื.
ืฉืืืืฉ ืืื ืื ืื EXTERNAL ืืืชืืื ืืืฉืืช
ืืื ืฉืืื ืื ืืื ื ื ืืื ืืืืืื, ืืืืืื ืืืฉืจ ืืขืืื ืื ืืช ื-buildroot. ืืฉ ืื ืื ืื ืืคืชืืจ ืืช ืืืขืื ืืื ืขืฅ ืืืฆืื ื. ืืืืืช ืฉืื ืืื ืฉืืชื ืืืื ืืืืกื ืืื, ืืืืจืืช, ืืืืืืช ืืกืคืจืืืช ืืืจืืช ืืกืคืจืืื ื ืคืจืืช (ืืืืืื, ืื ื ืืฉืชืืฉ ืืกืคืจืืืช ืืชืืงืื ืื ืืื ืืืืื ืชืืงืื ืื ืขื ืืืืืืช, ืคืจืืื ื ืืกืคืื ืืกืขืืฃ ื ืคืจื) ื-buildroot ืขืฆืื ืืืกืืฃ ืืืชื ืืืื ืฉื ืืกืคืจืืื ืฉืื.
ืืขืจื: ืืชื ืืืื ืืืกืืช ืืื ืขืฆืื ืืืฆืื ืืื ืืืช ืืืช, ืืฉ ืืืืื ืืืืจืื ื-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.
ืืืจืื ืืึผืึท ืืืื ืงืืฆืื ืกืคืฆืืคืืื ืืื ืืื ืืืงืจื ืฉืื ื:
- bef_cr_fs_img.sh ืืื ืกืงืจืืคื ืฉืืืืฆืข ืืืืจ ืื ืืืช ืืขืจืืช ืงืืฆื ืืืขื, ืื ืืคื ื ืืจืืืชื ืืชืืื ืืช. ื ืฉืชืืฉ ืื ืืขืชืื
- linux.config - ืชืฆืืจืช ืืืื
- rootfs_overlay - ืกืคืจืืื ืืืืกืื ืขื ืืื ืืขืจืืช ืงืืฆื ืืืขื
- users.txt - ืงืืืฅ ืืืชืืจ ืืช ืืืฉืชืืฉืื ืฉืืืืืฆืจื
ืืืจืื configs ืืืื defconfig ืฉื ืืืืืืช ืฉืื ื. ืืฉ ืื ื ืจืง ืืื.
ืึฒืึดืืึธื - ืงืืืื ืขื ืืืืืืืช ืฉืื ื. ืืชืืืื, buildroot ืืืื ืชืืืืจืื ืืืืืื ืืื ืืืช ืืกืคืจ ืืืืื ืฉื ืืืืืืช. ืืืืฉื ื ืืกืืฃ ืืื ืืช ืื ืื ืืืืื ืืช icewm ืืืช ืื ืื ืืืชืืืจืืช ืืืจืคื ืฉื Slim.
ืืืืื - ืืืคืฉืจ ืื ืืืืกื ืื ืืืืช ืืช ืืชืืงืื ืื ืฉืื ืขืืืจ ืืืืืืช ืฉืื ืืช. ืคืจืืื ื ืืกืคืื ืืกืขืืฃ ื ืคืจื ืืืื.
ืืขืช ืขืืื ื ืืืืกืืฃ ืืช ืงืืฆื ืืชืืืืจ ืขืืืจ ืืขืฅ ืืืืฆืื ื ืฉืื ื. ืืฉื ื 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 - ืงืืฆืื ืืชืืืืจ ืืืืืืช ืฉื ืืกืคื. ืื ืืื ื ืืืกืืฃ ืืืืืืช ืืฉืื, ื ืืชื ืืืฉืืืจ ืงืืฆืื ืืื ืจืืงืื. ืืขืช ืขืชื, ืื ืื ืฉื ืขืฉื.
ืืขืช ืืฉ ืื ื ืืช ืืขืฅ ืืืืฆืื ื ืฉืื ื ืืืื, ืืืืื ืืช ื-defconfig ืฉื ืืืื ืฉืื ื ืืืช ืืงืืฆืื ืืืจืืฉืื ืื. ืืื ื ืื ืืกืคืจืืืช buildroot ืื ืฆืืื ืืืฉืชืืฉ ื-extern-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/, ืืืฆืืื ืืช ืืฉืืืืฉ ืืขืฅ ืืืฆืื ื. ื ืืชื ืืฆืืื ืืกืคืจ ืขืฆืื ืืืฆืื ืืื ืืฉืืืืฉ ืื-ืืื ืืช. ืืืงืจื ืื, ืขืืื ืืขืฉืืช ืืืช ืคืขื ืืืช ืืืื, ืืืืืจ ืืื ื ืืฆืจ ืคืื ืงืืืฅ/.br-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
ืึธืฉืืึผื! ืื ืชืืืื ืืงืืืฅ ืื ืืืื ืืืืืืื!
ืคืจืื ืืคืฉืจืืืืช ืืืฆืื ืืืช ืืืคืืข ืืชืคืจืื:
ืชืคืจืื ืืฉื ื ืื ืืืื ืืช ืืืืืืืช ืฉืื ื ืืืขืฅ ืืืืฆืื ื ืฉืื ื. ืืืง ืื ืจืืง ืืจืืข.
ืืขืช ืืฉืื ืื ื ืืืชืจ ืืฉืืชื ืืช ืื ืชืืืื ืืืจืืฉืื ืืฉืืืืฉ ืืขืฅ ืืืฆืื ื.
ืฉืืื ืื ืฉืืงืืข Build ืืคืฉืจืืืืช โ ืืืงืื ืืฉืืืจืช ืชืฆืืจืช buildroot, ืืืื ื ืชืื ืืืืื ื-defconfig ืืฉืืืจื. ืืื ื ืืฆืจ ืืจืืข ืฉื ืฆืืื ืืฉืืืืฉ ื-extgernal_tree.
ืื ื ืื ื ืชืงื ืืช ืื ืชืืืื ืืกืขืืฃ ืชืฆืืจืช ืืืขืจืืช. ืืืืื ืขื ืืฉืชืืฉืื ืฉื ืืฆืจื:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
ืืงืืข ืืืืื, ืฉื ื ืืช ืื ืชืื ืืชืฆืืจืช ืืืืื:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
ืืขืช ืืงืืฆืื ืฉืื ื ืืืขืฅ ืืืืฆืื ื ืฉืื ื ืืฉืืฉื ืืืืื ืืืจืืื. ืืขืช ืืขืืจ ืืกืคืจืืื ืืืจืช ืื ืขืืืื ื-buildroot, ืืืื ืื ื ืืื ืืืื ืืขืืืช.
ืืืกืคืช ืฉืืืช ืืกืืก fs:
ืื ืื ืื ืื ืืืคืฉืจ ืื ืืืืกืืฃ/ืืืืืืฃ ืืงืืืช ืงืืฆืื ืืืขืจืืช ืงืืฆื ืืืขื.
ืื ืืงืืืฅ ื ืืฆื ืืฉืืืช ืืกืืก fs, ืืื ืื ื-target, ืื ืืื ืืชืืืกืฃ
ืื ืืงืืืฅ ื ืืฆื ืืฉืืืช-ืขื root fs ืื-target, ืื ืืื ืืืืืฃ.
ืจืืฉืืช, ืืืื ื ืืืืจ ืืช ืื ืชืื ื-fs overlay ืฉืืจืฉ. ืื ื ืขืฉื ืืกืขืืฃ ืชืฆืืจืช ืืขืจืืช โ ืกืคืจืืืช ืฉืืืช ืขื ืฉื ืืขืจืืช ืงืืฆืื ืฉืืจืฉ:
$(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) ืืชืืืกืฃ.
ืื ื ืืืกืคืื ืืืืืงืื:
ืืืฆืืข ืกืงืจืืคืืื ืืืชืืื ืืืฉืืช ืืฉืืืื ืฉืื ืื ืฉื ืืจืืืช ืืืขืจืืช
ืืขืชืื ืงืจืืืืช ืืชื ืฆืจืื ืืืฆืข ืงืฆืช ืขืืืื ืืชืื ืืขืจืืช ืงืืฆื ืืืขื ืืคื ื ืฉืืื ื ืืจื ืืชืืื ืืช.
ื ืืชื ืืขืฉืืช ืืืช ืืกืขืืฃ ืชืฆืืจืช ืืืขืจืืช:
ืฉื ื ืืกืงืจืืคืืื ืืจืืฉืื ืื ืืืืฆืขืื ืืืืจ ืื ืืืช ืืขืจืืช ืงืืฆื ืืืขื, ืื ืืคื ื ืฉืืื ื ืืจืืช ืืชืืื ืืช. ืืืืื ืืื ืฉืกืงืจืืคื 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