á€ááá¹áááœáẠáá»áœááºá¯ááºááá¯á¡ááºáá±á¬ á áááºááŒáá¯ááºááœá±ážáá»ááºááŸá¯á¡áá»áá¯á·ááᯠááŒáá·áºááŸá¯áá«áááºá áááºážááẠbuildroot á០áá±ážáá±á¬ááºááá·áº á¡áá¯á¶ážá á¯á¶á á¬áááºážááá¯ááºáá±á¬áºáááºáž áááºážááá¯á·ááẠá¡áá±á¬áºáá±áž á¡áá¯ááºáá¯ááºáááŒá®áž 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.txt
Kernel ááá¹áááœááºá 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