á¤ááášááá˝ááş ááťá˝ááşáŻááşáááŻáĄááşááąáŹ á áááşááźááŻááşáá˝áąá¸ááťááşáážáŻáĄááťááŻáˇááᯠááźááˇáşáážáŻááŤáááşá áááşá¸áááş buildroot ááž ááąá¸ááąáŹááşáááˇáş áĄááŻáśá¸á áŻáśá áŹáááşá¸áááŻááşááąáŹáşáááşá¸ áááşá¸áááŻáˇáááş áĄááąáŹáşááąá¸ áĄááŻááşááŻááşáááźáŽá¸ buildroot áááŻááşáááŻááşá áááŻááşááťáŹá¸áá˝ááş áááşááąáŹááşá á˝ááşáááşáááş ááááŻáĄááşááŤá
á áááşááźááŻááşááźááşáááşáááşáĄáá˝ááş ááźááşáááášáááŹá¸ááᯠáĄááŻáśá¸ááźáŻááźááşá¸á
ááŻááşáĄáá˝á˛áˇá defconfig áážááˇáş áááŻáĄááşááąáŹáááŻááşááťáŹá¸ááᯠBuildroot áááşá¸áá˝ážááşáááŻáˇ áááŻááşáááŻááşáááˇáşáá˝ááşá¸ááźááşá¸ááźááˇáş áááˇáşáááŻááşáááŻááşáá˝á˛áˇá ááşá¸ááŻáśáááˇáşáá˝ááşá¸ááźááşá¸á áááŻá¸áážááşá¸ááąáŹáĽáááŹáá áşááŻááᯠááťá˝ááşáŻááşáááŻáˇááźááˇáşáážáŻáá˛áˇáááşá
ááŤááąáááˇáş ááŽáááşá¸áááşá¸á áĄáá°á¸áááźááˇáş buildroot ááᯠupdate ááŻááşáá˛áˇáĄá፠ááááşáĄáááşááźáąáážáŹ áááŻááşááŤáá°á¸á ááŽááźáżááŹááᯠááźáąáážááşá¸áááŻáˇ ááášáááŹá¸áážááááşá ááźááşááá áşáááş. áááşá¸ááĄáážá áşááŹááážáŹ áááşáááş boardá configsá packages ááťáŹá¸áážááˇáş áĄááźáŹá¸ááąáŹ directory ááťáŹá¸ááᯠááŽá¸ááźáŹá¸ directory áá áşááŻáá˝ááş ááááşá¸áááşá¸ááŹá¸áááŻááşáááş (áĽáááŹá packages ááťáŹá¸áááŻáˇ patches ááťáŹá¸áĄááŻáśá¸ááźáŻáááş patches áááşá¸áá˝ážááşááᯠááŤáĄááŻáśá¸ááźáŻáááşá ááŽá¸ááźáŹá¸ááášááá áşááŻáážá áĄááąá¸á áááşáĄááťááşááťáŹá¸) áážááˇáş 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 ááá˝á˛áˇá ááşá¸ááŻáśáááŻááźááşááŻááşáááşá
directory ááᯠááťááşááźáŹá¸ ááťá˝ááşáŻááşáááŻáˇáááá ášá áá˝ááş ááŻááşáá áşááŻá áŽáĄáá˝ááş ááŽá¸ááźáŹá¸áááŻááşááťáŹá¸ááŤáážááááş-
- bef_cr_fs_img.sh áááş áá áşáážááşáááŻááşá áá áşááᯠáááşááąáŹááşááźáŽá¸ááąáŹááşá áááŻáˇááąáŹáş áááşá¸ááᯠááŻáśááťáŹá¸áĄááźá áş áááŻááşáááŻá¸ááŽáá˝ááş ááŻááşááąáŹááşáááˇáş script áá áşááŻááźá áşáááşá ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸ááᯠáĄááŹáááşáá˝ááş áĄááŻáśá¸ááźáŻááŤáááşá
- linux.config - kernel áá˝á˛áˇá ááşá¸áážáŻ
- rootfs_overlay - áá áşáážááşáááŻááşá áá áşáááááşáá˝ááş áááşáááşáááş áááşá¸áá˝ážááş
- users.txt - áááşááŽá¸áááˇáş ááŻáśá¸á á˝á˛áá°ááťáŹá¸ááᯠááąáŹáşááźáááˇáş áááŻááşáá áşááŻ
directory ááᯠconfigs ááťáŹá¸ ááťá˝ááşáŻááşáááŻáˇáááŻááşáĄáá˝á˛áˇááťáŹá¸á defconfig ááŤáážááááşá ááŤáááŻáˇáážáŹ áá áşááŻáá˛áážááááşá
áĄááŻááş - ááťá˝ááşáŻááşáááŻáˇá packages ááťáŹá¸áážááˇáşáĄáá° catalog á áááŚá¸áá˝ááşá buildroot áá˝ááş áĄáááˇáşáĄáááşáážáááąáŹ áááşááąáˇááťáşááťáŹá¸ááᯠáááşááąáŹááşáááşáĄáá˝ááş ááąáŹáşááźááťááşááťáŹá¸áážááˇáş á
ááşá¸ááťááşá¸ááťáŹá¸ ááŤáážááááşá ááąáŹááşáááŻááşá¸áá˝ááş icewm window manager áážááˇáş Slim graphical login manager ááᯠá¤ááąááŹáá˝ááş áááˇáşáá˝ááşá¸ááŤáááşá
Patch ááᯠâ ááá°ááŽááąáŹ áááşááąáˇááşáťááťáŹá¸áĄáá˝ááş áááşá ááŹááąá¸áážáŻááťáŹá¸ááᯠáĄáááşááźáąá
á˝áŹ ááááşá¸áááşá¸áááŻááşá
áąááŤáááşá áĄááąá¸á
áááşáĄááťááşáĄáááşááťáŹá¸ááᯠáĄáąáŹááşá፠ááŽá¸ááźáŹá¸ááášááá˝ááş ááąáŹáşááźááŹá¸áááşá
ááᯠááťá˝ááşáŻááşáááŻáˇáááş ááťá˝ááşáŻááşáááŻáˇá ááźááşá-áá
áşáááşáĄáá˝ááş ááąáŹáşááźááťááşáááŻááşááťáŹá¸ááᯠáááˇáşáá˝ááşá¸áááş áááŻáĄááşááŤáááşá á¤áĄáá˝ááş ááŹáááşáážáááąáŹ áááŻááş á áááŻááş áážááááş- 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 áá˝ááş variable áá áşááŻáááŻáááşááŽá¸ááŤá $(BR2_EXTERNAL_MY_TREE_PATH)áááşáááşáážáŻáĄáŹá¸ ááźááşáááşáááşáážááşááŹáá˝ááş áĄááŻáśá¸ááźáŻáááˇáşáááşá áĽáááŹáĄáŹá¸ááźááˇáşá áĄááŻáśá¸ááźáŻáá°áááŻááşáááŻáˇ áááşá¸ááźáąáŹááşá¸ááᯠáĄáąáŹááşááŤáĄáááŻááşá¸ áááşáážááşáááŻááşáááşá
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txtááŻáááá áŹááźáąáŹááşá¸áááş áááŻáááŻá áá°ááŹá¸áááşáááŻááşááąáŹ ááąáŹáşááźááťááşááźá áşáááşá
Config.iná external.mk â áááşááąáŹááşá¸áááşááąáˇááťáşááťáŹá¸áááŻááąáŹáşááźáááş áááŻááşááťáŹá¸á áááˇáşáááŻááşáááŻááş áááşááąáˇááťáşááťáŹá¸ááᯠááááˇáşááŤá á¤áááŻááşááťáŹá¸ááᯠáááŹááźá
áşáá˝áŹá¸áááŻááşáááşá ááąáŹááąáŹáááşááąáŹáˇ ááŤáá˛ááŻááşáááşá
ááᯠááťá˝ááşáŻááşáááŻáˇáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááŻááşáĄáá˝á˛áˇá defconfig áážááˇáş áááŻáĄááşááąáŹáááŻááşááťáŹá¸á፠á ááşááąáŹááťá˝ááşáŻááşáááŻáˇáááźááşááá
áşáááşáĄáááşáááˇáşáážááááşá buildroot directory áááŻáˇáá˝áŹá¸á 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ááá command áážáŹ argument ááᯠááŻáśá¸ááŤáááşá 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 options â áááşááąááŹááᯠbuildroot config ááášááá˝ááşá ááááşá¸áááşá¸ááŹá¸ááąáŹ defconfig áááŻáˇ ááŻáśá¸ááááşá¸ááźáąáŹááşá¸áá áşááŻáážááááşááᯠááťáąá¸áá°á¸ááźáŻá áááááźáŻááŤá extgernal_tree áĄááŻáśá¸ááźáŻáážáŻááᯠáááşáážááşááťáááşáá˝ááş áááşá¸ááᯠáá˝á˛áˇá ááşá¸ááŹá¸áááşá
á áá áşáá˝á˛áˇá ááşá¸ááŻáśáĄáááŻááşá¸áážá áááşá¸ááźáąáŹááşá¸ááťáŹá¸áááŻáááşá¸ ááźááşááąá¸ááŤáááşá áááşááŽá¸ááŹá¸ááąáŹáĄááŻáśá¸ááźáŻáá°ááťáŹá¸ááŤááąáŹ áááŹá¸áĄáá˝ááş-
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txtKernel ááášááá˝ááşá kernel áá˝á˛áˇá ááşá¸áážáŻááŻáśá áśáááŻáˇ áááşá¸ááźáąáŹááşá¸ááźáąáŹááşá¸ááŤ-
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.configááᯠááťá˝ááşáŻááşáááŻáˇá ááźááşá-áá áşáááşááž ááťá˝ááşáŻááşáááŻáˇááááŻááşááťáŹá¸ááᯠá áŻááąá¸á ááşáĄáá˝ááşá¸ áĄááŻáśá¸ááźáŻááŤáááşá áĄááźáŹá¸ directory áááŻáˇááźáąáŹááşá¸ááźááşá¸ áááŻáˇáááŻááş buildroot ááᯠáĄááşááááşááŻááşááąáŹáĄááŤá ááťá˝ááşáŻááşáááŻáˇáá˝ááş ááźáżááŹáĄáááşá¸ááŻáśá¸áážáááŤáááşá
root fs áááşáááˇáşáááˇáşááźááşá¸-
á¤ááášáááŹá¸áááş áááˇáşáĄáŹá¸ áá
áşáážááşáááŻááşá
áá
áşáá˝ááş áááŻááşááťáŹá¸ááᯠáĄáá˝ááşááá° áááˇáşáá˝ááşá¸/áĄá
áŹá¸áááŻá¸áááŻááşá
áąááŤáááşá
áááŻááşáááş root fs áááşáááˇáşáá˝ááşáážáááąáŹáşáááşá¸ áá
áşáážááşáá˝ááşáááŻááşááŤá áááşá¸ááᯠáááşáááˇáşáááşááźá
áşáááşá
áááŻááşáááş root fs áááşáááˇáşáá˝ááşáážáááźáŽá¸ áá
áşáážááşáá˝ááşáážáááąááŤáá áááşá¸ááᯠáĄá
áŹá¸áááŻá¸áááşááźá
áşáááşá
ááááŚá¸á
á˝áŹ fs overlay dir ááᯠroot ááŻááşáááşáááşá¸ááźáąáŹááşá¸áááŻáááşáážááşááźááŤá
ááŻáˇá 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) ááᯠááąáŤááşá¸áááˇáşááŤáááşá
ááťá˝ááşáŻááşáááŻáˇá áŻááąáŹááşá¸ááźáŽá¸ á á áşááąá¸ááŤ-

á áá áşá áŻááąá¸áážáŻ áĄáááˇáşááťáŹá¸áá˝ááş á áááşááźááŻááşááźááşáááşááźááşá¸ scripts ááťáŹá¸ááᯠááŻááşááąáŹááşááźááşá¸á
ááŻáśááťáŹá¸áá˛áááŻáˇááááˇáşáᎠáá áşáážááşáááŻááşá áá áşáĄáá˝ááşá¸ áĄááŻááşáĄááťááŻáˇááŻááşááąáŹááşáááş áááŻáĄááşáááşá
áááşá¸ááᯠá áá áşáá˝á˛áˇá ááşá¸áážáŻááášááá˝ááş ááŻááşááąáŹááşáááŻááşáááş-

áá áşáážááşáááŻááşá áá áşáááşááąáŹááşááźáŽá¸ááąáŹááş áááááŻáśá¸ script áážá áşááŻááᯠááŻááşááąáŹááşááźáŽá¸ááźá áşááąáŹáşáááşá¸ áááşá¸ááᯠááŻáśááťáŹá¸áĄááźá áş áááŻááşáááŻá¸ááŽáá˝ááş ááŻááşááąáŹááşáááşá áá˝áŹááźáŹá¸ááťááşáážáŹ fakeroot script ááᯠroot áĄááŻáśá¸ááźáŻáá°áĄááźá áş áĄááŻáá°ááŻááşááąáŹááşáááˇáş fakeroot ááĄááźáąáĄááąáá˝ááş ááŻááşááąáŹááşááźááşá¸ááźá áşáááşá
á áá áşááŻáśááťáŹá¸áááŻáááşááŽá¸ááźáŽá¸ááąáŹááşááąáŹááşááŻáśá¸ script áááŻááŻááşááąáŹááşáááşá áááşá¸áá˝ááş ááąáŹááşáááşááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáááşááŻááşááąáŹááşáááŻááşáááşá áĽáááŹá áááŻáĄááşááąáŹáááŻááşááťáŹá¸ááᯠNFS ááŹááŹáá áşááŻáááŻáˇ áá°á¸áá°á፠áááŻáˇáááŻááş áááˇáşá ááşá firmware ááŻáśáá áşááŻáááşááŽá¸ááŤá
áĽáááŹáĄááąáá˛áˇá ááŹá¸áážááşá¸áá˛áˇ áááşááąáŹááşáááˇáşáááşá
á˝á˛ááᯠ/etc/ áážáŹááąá¸áááˇáş script áá
áşááŻááᯠáááşááŽá¸ááŤáááşá
áŚá¸á
á˝áŹ ááťá˝ááşáŻááşáááş ááťá˝ááşáŻááşá ááźááşá-áá
áşáááşáážá á¤áááŻááşáááŻáˇ áááşá¸ááźáąáŹááşá¸ááᯠáá˝ážááşááźááŤáááş-

ááᯠááŹááşáá˝ážááşá¸áááŻááşáááŻááş
[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áááşáááşááźáŽá¸ááąáŹááşá á¤áááŻááşááᯠsystem áá˝ááşáá˝áąáˇáááŻááşáááşá
áááşáá˝áąáˇáážáŹ ááŹááşáá˝ážááşá¸ááźáŽá¸áá˝áą ááźá áşááŹáááŻááşáááşá áááŻáˇááźáąáŹááˇáşá áĄáážááşááááş áááąáŹááťááşáá˝ááş ááťá˝ááşáŻááşáááş áááŻáááŻáĄáááˇáşááźááˇáşááąáŹ áááşá¸ááźáąáŹááşá¸ááᯠááťážáąáŹááşáážááşá¸áá˛áˇáááşá
- ááśááŤááşá ááşááťáŹá¸ááźááˇáş ááŻááşááąáŹááşááááˇáş scripts ááťáŹá¸ááŤáážáááąáŹ áááşá¸áá˝ážááşáá áşáᯠ(my_tree/board_my_x86_board/inside_fakeroot_scripts) ááᯠáááşááŽá¸ááŹá¸ááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáşá 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- ááťá˝ááşáŻááşáááş á¤áááşá¸áá˝ážááşáááŻááźááşáááşá¸ááźáŽá¸ áááşá¸áá˝ááşááŤáážáááąáŹ Script ááťáŹá¸ááᯠáááşáááŻááşááŻááşááąáŹááşááąá¸ááąáŹ script (my_tree/board_my_x86_board/run_inside_fakeroot.sh)
- Fakeroot áááşáááşá¸ááťááşáĄáá˝ááşá¸ ááŻááşááąáŹááşáááş ááŻááşáááşáááşááťáŹá¸áá˝ááş á¤ááŹááşáá˝ážááşá¸ááᯠáááşáážááşááąá¸áááş ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) ááášá
source: www.habr.com
