Buildroot - 2๋ถ€. ๋ณด๋“œ ๊ตฌ์„ฑ ๋งŒ๋“ค๊ธฐ; ์™ธ๋ถ€ ํŠธ๋ฆฌ, rootfs-overlay, ๋นŒ๋“œ ํ›„ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ

์ด ์„น์…˜์—์„œ๋Š” ๋‚˜์—๊ฒŒ ํ•„์š”ํ•œ ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ต์…˜์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ buildroot๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ „์ฒด ๋ชฉ๋ก์€ ์•„๋‹ˆ์ง€๋งŒ ๋งค์šฐ ๊ธฐ๋Šฅ์ ์ด๋ฉฐ buildroot ์ž์ฒด ํŒŒ์ผ์— ๊ฐœ์ž…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ์œ„ํ•ด EXTERNAL ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์‚ฌ์šฉ

์ด์ „ ๊ธฐ์‚ฌ์—์„œ ๋ณด๋“œ์˜ defconfig์™€ ํ•„์š”ํ•œ ํŒŒ์ผ์„ 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 - ์ƒ์„ฑ๋  ์‚ฌ์šฉ์ž๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํŒŒ์ผ

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์„ฑ ์šฐ๋ฆฌ ๋ณด๋“œ์˜ defconfig๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌถ์Œ - ํŒจํ‚ค์ง€ ์นดํƒˆ๋กœ๊ทธ. ์ฒ˜์Œ์— buildroot์—๋Š” ์ œํ•œ๋œ ์ˆ˜์˜ ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์„ค๋ช…๊ณผ ๊ทœ์น™์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์—ฌ๊ธฐ์— icewm ์ฐฝ ๊ด€๋ฆฌ์ž์™€ Slim ๊ทธ๋ž˜ํ”ฝ ๋กœ๊ทธ์ธ ๊ด€๋ฆฌ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํŒจ์น˜ โ€” ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ํŒจ์น˜๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ณ„๋„ ์„น์…˜์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ์™ธ๋ถ€ ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์„ค๋ช… ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํŒŒ์ผ์€ external.desc, Config.in, external.mk 3๊ฐœ์ž…๋‹ˆ๋‹ค.

์™ธ๋ถ€.desc ์‹ค์ œ ์„ค๋ช…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

[alexey@alexey-pc my_tree]$ cat external.desc 
name: my_tree
desc: My simple external-tree for article

์ฒซ ๋ฒˆ์งธ ์ค„์€ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค. ํ–ฅํ›„ ๋นŒ๋“œ ๋ฃจํŠธ์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. $(BR2_EXTERNAL_MY_TREE_PATH), ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‘ ๋ฒˆ์งธ ์ค„์€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์งง์€ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

Config.in, external.mk โ€” ์ถ”๊ฐ€๋œ ํŒจํ‚ค์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ž์‹ ์˜ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ๋น„์›Œ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ผ์ž…๋‹ˆ๋‹ค.
์ด์ œ ๋ณด๋“œ์˜ defconfig์™€ ํ•„์š”ํ•œ ํŒŒ์ผ์ด ํฌํ•จ๋œ ์™ธ๋ถ€ ํŠธ๋ฆฌ๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 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/, ์™ธ๋ถ€ ํŠธ๋ฆฌ์˜ ์‚ฌ์šฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋™์‹œ์— ์‚ฌ์šฉํ•  ์—ฌ๋Ÿฌ ์™ธ๋ถ€ ํŠธ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ด ์ž‘์—…์€ ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋˜๋ฉฐ ๊ทธ ํ›„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ผ ์ถœ๋ ฅ/.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

์ค‘์š”ํ•œ! ์ด ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค!

๋ฉ”๋‰ด์— ์™ธ๋ถ€ ์˜ต์…˜ ํ•ญ๋ชฉ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Buildroot - 2๋ถ€. ๋ณด๋“œ ๊ตฌ์„ฑ ๋งŒ๋“ค๊ธฐ; ์™ธ๋ถ€ ํŠธ๋ฆฌ, rootfs-overlay, ๋นŒ๋“œ ํ›„ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ

์ด ํ•˜์œ„ ๋ฉ”๋‰ด์—๋Š” ์™ธ๋ถ€ ํŠธ๋ฆฌ์˜ ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์€ ํ˜„์žฌ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์™ธ๋ถ€ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ์˜ต์…˜ โ†’ ๋นŒ๋“œ ๋ฃจํŠธ ๊ตฌ์„ฑ์„ ์ €์žฅํ•  ์œ„์น˜ ์„น์…˜์—๋Š” ์ €์žฅ๋œ 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

์ด์ œ ์–ด์…ˆ๋ธ”๋ฆฌ ์ค‘์— ์™ธ๋ถ€ ํŠธ๋ฆฌ์˜ ํŒŒ์ผ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋นŒ๋“œ ๋ฃจํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์ตœ์†Œํ•œ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํŠธ fs ์˜ค๋ฒ„๋ ˆ์ด ์ถ”๊ฐ€:

์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€/๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ์ผ์ด ๋ฃจํŠธ fs ์˜ค๋ฒ„๋ ˆ์ด์— ์žˆ์ง€๋งŒ ๋Œ€์ƒ์—๋Š” ์—†์œผ๋ฉด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ์ด ๋ฃจํŠธ fs ์˜ค๋ฒ„๋ ˆ์ด์™€ ๋Œ€์ƒ์— ์žˆ์œผ๋ฉด ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.
๋จผ์ € ๋ฃจํŠธ fs ์˜ค๋ฒ„๋ ˆ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ โ†’ ๋ฃจํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ ์˜ค๋ฒ„๋ ˆ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ ์„น์…˜์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

$(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)์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Buildroot - 2๋ถ€. ๋ณด๋“œ ๊ตฌ์„ฑ ๋งŒ๋“ค๊ธฐ; ์™ธ๋ถ€ ํŠธ๋ฆฌ, rootfs-overlay, ๋นŒ๋“œ ํ›„ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ

์‹œ์Šคํ…œ ์กฐ๋ฆฝ์˜ ๋‹ค์–‘ํ•œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰

์ด๋ฏธ์ง€๋กœ ํŒจํ‚ค์ง•๋˜๊ธฐ ์ „์— ๋Œ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ์ผ๋ถ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์€ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์„น์…˜์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Buildroot - 2๋ถ€. ๋ณด๋“œ ๊ตฌ์„ฑ ๋งŒ๋“ค๊ธฐ; ์™ธ๋ถ€ ํŠธ๋ฆฌ, rootfs-overlay, ๋นŒ๋“œ ํ›„ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ

์ฒ˜์Œ ๋‘ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋Œ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ๊ตฌ์ถ•๋œ ํ›„ ์ด๋ฏธ์ง€๋กœ ํŒจํ‚ค์ง•๋˜๊ธฐ ์ „์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ fakeroot ์Šคํฌ๋ฆฝํŠธ๊ฐ€ fakeroot์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜์–ด ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ์„œ์˜ ์ž‘์—…์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ์Šคํฌ๋ฆฝํŠธ๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•„์š”ํ•œ ํŒŒ์ผ์„ NFS ์„œ๋ฒ„์— ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์žฅ์น˜ ํŽŒ์›จ์–ด ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋“ฑ ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฒ„์ „๊ณผ ๋นŒ๋“œ ๋‚ ์งœ๋ฅผ /etc/์— ๊ธฐ๋กํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋จผ์ € ์™ธ๋ถ€ ํŠธ๋ฆฌ์— ์ด ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Buildroot - 2๋ถ€. ๋ณด๋“œ ๊ตฌ์„ฑ ๋งŒ๋“ค๊ธฐ; ์™ธ๋ถ€ ํŠธ๋ฆฌ, rootfs-overlay, ๋นŒ๋“œ ํ›„ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ

์ด์ œ ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[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) ์„น์…˜์˜ ๋ณด๋“œ ์„ค์ •์—์„œ ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€