Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์†Œ๊ฐœ

์ด ๊ธฐ์‚ฌ ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” ๋นŒ๋“œ๋ฃจํŠธ ๋ฐฐํฌ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ดํŽด๋ณด๊ณ  ์ด๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ž‘์€ OS๋ฅผ ๋งŒ๋“œ๋Š” ์‹ค์ œ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ์„ , ๋นŒ๋“œ ์‹œ์Šคํ…œ๊ณผ ๋ฐฐํฌํŒ์„ ํ˜ผ๋™ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. Buildroot๋Š” ์ œ๊ณต๋˜๋Š” ํŒจํ‚ค์ง€ ์„ธํŠธ์—์„œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Buildroot๋Š” makefile์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฏ€๋กœ ์—„์ฒญ๋‚œ ์‚ฌ์šฉ์ž ์ •์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฅผ ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•˜๊ณ , ์ž์‹ ๋งŒ์˜ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ํŒจํ‚ค์ง€ ๋นŒ๋“œ ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•œ ํ›„ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? buildroot๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Ÿฌ์‹œ์•„์—์„œ๋Š” buildroot๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ œ ์ƒ๊ฐ์—๋Š” ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๋Ÿฌ์‹œ์•„์–ด ์ •๋ณด๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž‘์—…์˜ ๋ชฉํ‘œ๋Š” ๋ผ์ด๋ธŒ ๋‹ค์šด๋กœ๋“œ, icewm ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ฐ–์ถ˜ ๋ฐฐํฌ ํ‚คํŠธ๋ฅผ ์กฐ๋ฆฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์ƒ ํ”Œ๋žซํผ์€ virtualbox์ž…๋‹ˆ๋‹ค.

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

Buildroot ์‹œ์Šคํ…œ์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์กฐ๋ฆฝ ํ”„๋กœ์„ธ์Šค๋งŒ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์ฒด ๋นŒ๋“œ ์‹œ์Šคํ…œ(yocto, ๊ฐœ๋ฐฉํ˜• ๋นŒ๋“œ ์‹œ์Šคํ…œ ๋“ฑ)์€ ๊ณ ๋ ค๋˜๊ฑฐ๋‚˜ ๋น„๊ต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋””์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ณ  ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•ด์•ผ ํ• ๊นŒ์š”?

ํ”„๋กœ์ ํŠธ ์›น์‚ฌ์ดํŠธ - buildroot.org. ์—ฌ๊ธฐ์—์„œ ํ˜„์žฌ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค๋ช…์„œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์—ฐ๋ฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฒ„๊ทธ ์ถ”์ ๊ธฐ, ๋ฉ”์ผ ๋ชฉ๋ก ๋ฐ irc ์ฑ„๋„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Buildroot๋Š” ๋นŒ๋“œ์˜ ํƒ€๊ฒŸ ๋ณด๋“œ์— ๋Œ€ํ•œ defconfig๋ฅผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Defconfig๋Š” ๊ธฐ๋ณธ๊ฐ’์ด ์—†๋Š” ์˜ต์…˜๋งŒ ์ €์žฅํ•˜๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ์ˆ˜์ง‘ํ• ์ง€, ์–ด๋–ป๊ฒŒ ์ˆ˜์ง‘ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ฐ”๋กœ ๊ทธ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ busybox, linux-kernel, uglibc, u-boot ๋ฐ barebox ๋ถ€ํŠธ๋กœ๋”์˜ ๊ตฌ์„ฑ์„ ๋ณ„๋„๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋‘ ๋Œ€์ƒ ๋ณด๋“œ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
๋‹ค์šด๋กœ๋“œํ•œ ์•„์นด์ด๋ธŒ์˜ ์••์ถ•์„ ํ’€๊ฑฐ๋‚˜ git์—์„œ ๋ณต์ œํ•œ ํ›„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋นŒ๋“œ ๋ฃจํŠธ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๋งค๋‰ด์–ผ์—์„œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŒ โ€” ๊ฐ ๋ณด๋“œ์— ํŠน์ •ํ•œ ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ. ์ด๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€(iso, sdcart, cpio ๋“ฑ), ์˜ค๋ฒ„๋ ˆ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ, ์ปค๋„ ๊ตฌ์„ฑ ๋“ฑ์„ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ตฌ์„ฑ โ€” ๋ณด๋“œ์˜ ์‹ค์ œ defconfig. Defconfig๋Š” ๋ถˆ์™„์ „ํ•œ ๋ณด๋“œ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์„ค์ •๊ณผ ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
dl โ€” ์–ด์…ˆ๋ธ”๋ฆฌ์šฉ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•œ ์†Œ์Šค ์ฝ”๋“œ/ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ
์ถœ๋ ฅ/๋ชฉํ‘œ โ€” ๊ฒฐ๊ณผ OS์˜ ์กฐ๋ฆฝ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ. ์ดํ›„ ๋‹ค์šด๋กœ๋“œ/์„ค์น˜๋ฅผ ์œ„ํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
์ถœ๋ ฅ/ํ˜ธ์ŠคํŠธ - ์–ด์…ˆ๋ธ”๋ฆฌ์šฉ ํ˜ธ์ŠคํŠธ ์œ ํ‹ธ๋ฆฌํ‹ฐ
์ถœ๋ ฅ/๋นŒ๋“œ - ์กฐ๋ฆฝ๋œ ํŒจํ‚ค์ง€

์–ด์…ˆ๋ธ”๋ฆฌ๋Š” KConfig๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์‹œ์Šคํ…œ์ด Linux ์ปค๋„์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น ๋ชฉ๋ก(buildroot ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์‹คํ–‰):

  • make menuconfig - ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค(make nconfig, make xconfig, make gconfig)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • make linux-menuconfig - ์ปค๋„ ๊ตฌ์„ฑ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • make clean - ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค(์ถœ๋ ฅ์— ์ €์žฅ๋œ ๋ชจ๋“  ๊ฒƒ).
  • make - ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋ฏธ ์กฐ๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์กฐ๋ฆฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • make defconfig_name - ๊ตฌ์„ฑ์„ ํŠน์ • defconfig๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • make list-defconfigs - defconfig ๋ชฉ๋ก์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์†Œ์Šค ๋งŒ๋“ค๊ธฐ - ๋นŒ๋“œํ•  ํ•„์š” ์—†์ด ์„ค์น˜ ํŒŒ์ผ๋งŒ ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • make help - ๊ฐ€๋Šฅํ•œ ๋ช…๋ น ๋‚˜์—ด

์ค‘์š”ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ ๋ฐ ์œ ์šฉํ•œ ํŒ

Buildroot๋Š” ์ด๋ฏธ ๋นŒ๋“œ๋œ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๋”ฐ๋ผ์„œ ์ „์ฒด ์žฌ์กฐ๋ฆฝ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด Linux ์ปค๋„์„ ๋‹ค์‹œ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

make linux-rebuild

Buildroot๋Š” ์ถœ๋ ฅ/๋นŒ๋“œ/$packagename ๋””๋ ‰ํ„ฐ๋ฆฌ์— .stamp ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

๋”ฐ๋ผ์„œ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ root-fs ๋ฐ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make

์œ ์šฉํ•œ ๋ณ€์ˆ˜

buildroot์—๋Š” ์‰ฌ์šด ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๋ณ€์ˆ˜ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • $TOPDIR - ๋นŒ๋“œ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ
  • $BASEDIR - ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR โ€” ํ˜ธ์ŠคํŠธ fs, ์Šคํ…Œ์ด์ง• fs, ๋Œ€์ƒ fs ๋นŒ๋“œ ๋””๋ ‰ํ„ฐ๋ฆฌ.
  • $BUILD_DIR - ์••์ถ•์„ ํ’€๊ณ  ๋นŒ๋“œํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ

๋ˆˆ์— ๋ณด์ด๊ฒŒ ํ•จ

buildroot์—๋Š” ์‹œ๊ฐํ™” ๊ธฐ๋Šฅ์ด ์žˆ์–ด ์ตœ์ข… ์‹œ์Šคํ…œ์—์„œ ์ข…์†์„ฑ ๋‹ค์ด์–ด๊ทธ๋žจ, ๋นŒ๋“œ ์‹œ๊ฐ„ ๊ทธ๋ž˜ํ”„, ํŒจํ‚ค์ง€ ํฌ๊ธฐ ๊ทธ๋ž˜ํ”„๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ์ถœ๋ ฅ/๊ทธ๋ž˜ํ”„ ๋””๋ ‰ํ„ฐ๋ฆฌ์— PDF ํŒŒ์ผ ํ˜•์‹(svn,png ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ)์ž…๋‹ˆ๋‹ค.

์‹œ๊ฐํ™” ๋ช…๋ น์˜ ์˜ˆ:

  • make graph-depends ์˜์กด์„ฑ ํŠธ๋ฆฌ ๊ตฌ์ถ•
  • make <pkg>-graph-depends ํŠน์ • ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ ํŠธ๋ฆฌ ๊ตฌ์ถ•
  • BR2_GRAPH_OUT=png make graph-build PNG ์ถœ๋ ฅ์œผ๋กœ ๋นŒ๋“œ ์‹œ๊ฐ„ ํ”Œ๋กฏ
  • make graph-size ํ”Œ๋กฏ ํŒจํ‚ท ํฌ๊ธฐ

์œ ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ

buildroot ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํ‹ธ๋ฆฌํ‹ฐ ์œ ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ๋กœ. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒจํ‚ค์ง€ ์„ค๋ช…์˜ ์ •ํ™•์„ฑ์„ ํ™•์ธํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž์‹ ๋งŒ์˜ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค). utils/readme.txt ํŒŒ์ผ์—๋Š” ์ด๋Ÿฌํ•œ ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์‹ ์œ ํ†ต์„ ๊ตฌ์ถ•ํ•˜์ž

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

๊ตฌ์„ฑ ๋ชฉ๋ก์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

qemu_x86_64_defconfig ๊ตฌ์„ฑ์œผ๋กœ ์ „ํ™˜

make qemu_x86_64_defconfig

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์กฐ๋ฆฝ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค

make

๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

Buildroot๋Š” Qemu์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ปดํŒŒ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

qemu-system-x86_64 -kernel output/images/bzImage -hda    output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S

๊ฒฐ๊ณผ๋Š” qemu์—์„œ ์‹คํ–‰๋˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์ž์‹ ๋งŒ์˜ ๋ณด๋“œ ๊ตฌ์„ฑ ๋งŒ๋“ค๊ธฐ

๋ณด๋“œ ํŒŒ์ผ ์ถ”๊ฐ€

๊ตฌ์„ฑ ๋ชฉ๋ก์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

๋ชฉ๋ก์— pc_x86_64_efi_defconfig๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์—์„œ ๋ณต์‚ฌํ•˜์—ฌ ์ž์ฒด ๋ณด๋“œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

์Šคํฌ๋ฆฝํŠธ, rootfs-overlay ๋ฐ ๊ธฐํƒ€ ํ•„์š”ํ•œ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋ณด๋“œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฆ‰์‹œ ์ƒ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

mkdir board/my_x86_board

์ด ์ •์˜ ๊ตฌ์„ฑ์œผ๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค.

make my_x86_board_defconfig

๋”ฐ๋ผ์„œ ์ด์ œ ๋นŒ๋“œ ๊ตฌ์„ฑ(buildroot ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ฃจํŠธ์— ์žˆ๋Š” .config์— ์ €์žฅ๋จ)์€ x86-64 ๋ ˆ๊ฑฐ์‹œ(bios) ๋ถ€ํŒ… ๋Œ€์ƒ ์‹œ์Šคํ…œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

Linux-kernel ๊ตฌ์„ฑ์„ ๋ณต์‚ฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ์œ ์šฉํ•จ).

cp board/pc/linux.config board/my_x86_board/

KConfig๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ •

์„ค์ •์„ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

make menuconfig 

KConfig ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(make nconfig, make xconfig, make gconfig):

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์ฒซ ๋ฒˆ์งธ ์„น์…˜์ธ ๋Œ€์ƒ ์˜ต์…˜์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋นŒ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋  ๋Œ€์ƒ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

๋นŒ๋“œ ์˜ต์…˜ - ์—ฌ๊ธฐ์—๋Š” ๋‹ค์–‘ํ•œ ๋นŒ๋“œ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ, ๋นŒ๋“œ ์Šค๋ ˆ๋“œ ์ˆ˜, ์†Œ์Šค ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์œ„ํ•œ ๋ฏธ๋Ÿฌ ๋ฐ ๊ธฐํƒ€ ์„ค์ •์ด ํฌํ•จ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •์€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.

๋„๊ตฌ ์ฒด์ธ โ€“ ๋นŒ๋“œ ๋„๊ตฌ ์ž์ฒด๊ฐ€ ์—ฌ๊ธฐ์—์„œ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์ฝ์–ด๋ณด์„ธ์š”.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

๋„๊ตฌ ์ฒด์ธ ์œ ํ˜• โ€“ ์‚ฌ์šฉ๋œ ๋„๊ตฌ ์ฒด์ธ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์ด๋Š” buildroot ๋˜๋Š” ์™ธ๋ถ€ ๋„๊ตฌ์— ๋‚ด์žฅ๋œ ๋„๊ตฌ ์ฒด์ธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด๋ฏธ ๋นŒ๋“œ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋˜๋Š” ๋‹ค์šด๋กœ๋“œํ•  URL์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด arm์˜ ๊ฒฝ์šฐ ์™ธ๋ถ€ ํˆด์ฒด์ธ์˜ Linaro ๋ฒ„์ „์„ ์„ ํƒํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ โ€“ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ํƒ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์ž‘๋™์€ ์ด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” glibc๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—๋Š” ๋„ˆ๋ฌด ํด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ uglibc ๋˜๋Š” musl์ด ์„ ํƒ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. glibc๋ฅผ ์„ ํƒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— systemd๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์˜ต์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค).

์ปค๋„ ํ—ค๋” ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ์ปค๋„ ํ—ค๋” ์‹œ๋ฆฌ์ฆˆ - ์กฐ๋ฆฝ๋œ ์‹œ์Šคํ…œ์— ํฌํ•จ๋  ์ปค๋„ ๋ฒ„์ „๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ ํ—ค๋”์˜ ๊ฒฝ์šฐ tarball ๋˜๋Š” git ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

GCC COMPILER VERSIONS โ€“ ๋นŒ๋“œ์— ์‚ฌ์šฉํ•  ์ปดํŒŒ์ผ๋Ÿฌ ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
C++ ์ง€์› ํ™œ์„ฑํ™” - ์‹œ์Šคํ…œ์—์„œ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์›์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๋ ค๋ฉด ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•ž์œผ๋กœ ์šฐ๋ฆฌ์—๊ฒŒ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€ gcc ์˜ต์…˜ โ€“ ์ถ”๊ฐ€ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ์„ฑ๋œ ์‹œ์Šคํ…œ์˜ ํ–ฅํ›„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

๋Œ€๋ถ€๋ถ„์˜ ์š”์ ์€ ์ œ๋ชฉ์—์„œ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์‚ฌํ•ญ์— ์ฃผ์˜ํ•ฉ์‹œ๋‹ค.
์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ” ๊ฒฝ๋กœ - ์ƒ์„ฑ๋  ์‚ฌ์šฉ์ž๊ฐ€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ”(https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

์˜ˆ์‹œ ํŒŒ์ผ. ์‚ฌ์šฉ์ž user๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ admin, ์ž๋™์œผ๋กœ gid/uid, /bin/sh shell, ๊ธฐ๋ณธ ๊ทธ๋ฃน user, ๊ทธ๋ฃน ๊ตฌ์„ฑ์› root, comment Foo user๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt 
user -1 user -1 =admin /home/user /bin/sh root Foo user

๋ฃจํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ ์˜ค๋ฒ„๋ ˆ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ - ์กฐ๋ฆฝ๋œ target-fs ์œ„์— ์˜ค๋ฒ„๋ ˆ์ด๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ธฐ์กด ํŒŒ์ผ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

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

์ปค๋„ ์„น์…˜์œผ๋กœ ๊ฐ€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์ปค๋„ ์„ค์ •์€ ์—ฌ๊ธฐ์—์„œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ปค๋„ ์ž์ฒด๋Š” make linux-menuconfig๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปค๋„ ๋ฒ„์ „์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ณต๋˜๋Š” ๋ฒ„์ „ ์ค‘์—์„œ ์„ ํƒํ•˜๊ณ , ๋ฒ„์ „์„ ์ˆ˜๋™์œผ๋กœ ์ž…๋ ฅํ•˜๊ณ , ์ €์žฅ์†Œ ๋˜๋Š” ๊ธฐ์„ฑ ํƒ€๋ฅด๋ณผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ ๊ตฌ์„ฑ โ€” ์ปค๋„ ๊ตฌ์„ฑ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์„ ํƒํ•œ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ Linux์—์„œ defocnfig๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Linux ์†Œ์Šค์—๋Š” ๋‹ค์–‘ํ•œ ๋Œ€์ƒ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ defconfig ์„ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹น์‹ ์ด ํ•„์š”๋กœํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์—ฌ๊ธฐ ์†Œ์Šค๋ฅผ ์ง์ ‘ ๋ณด๋ฉด. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„๊ธ€๋ณธ ๋ธ”๋ž™๋ณด๋“œ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์„ ํƒ.

๋Œ€์ƒ ํŒจํ‚ค์ง€ ์„น์…˜์—์„œ๋Š” ๊ตฌ์ถ• ์ค‘์ธ ์‹œ์Šคํ…œ์— ์„ค์น˜ํ•  ํŒจํ‚ค์ง€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ด ๋ชฉ๋ก์— ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ - ์ˆ˜์ง‘ํ•  ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ISO ์ด๋ฏธ์ง€ ์ถ”๊ฐ€

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

๋ถ€ํŠธ๋กœ๋” - ์ˆ˜์ง‘ํ•  ๋ถ€ํŠธ๋กœ๋”๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์•„์ด์†”๋ฆฌ๋‹‰์Šค๋ฅผ ์„ ํƒํ•˜์ž

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์‹œ์Šคํ…œ ๊ตฌ์„ฑ

Systemd๋Š” ์ปค๋„, glibc์™€ ํ•จ๊ป˜ Linux์˜ ํ•ต์‹ฌ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ์„ค์ •์„ ๋ณ„๋„์˜ ํ•ญ๋ชฉ์œผ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.

make menuconfig๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑํ•œ ๋‹ค์Œ ๋Œ€์ƒ ํŒจํ‚ค์ง€ โ†’ ์‹œ์Šคํ…œ ๋„๊ตฌ โ†’ systemd๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์‹œ์Šคํ…œ์ด ์‹œ์ž‘๋  ๋•Œ ์„ค์น˜๋˜๊ณ  ์‹œ์ž‘๋  ์‹œ์Šคํ…œ ์„œ๋น„์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์ €์žฅ

KConfig๋ฅผ ํ†ตํ•ด ์ด ๊ตฌ์„ฑ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ defconfig๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

make savedefconfig

Linux ์ปค๋„ ๊ตฌ์„ฑ

Linux ์ปค๋„ ๊ตฌ์„ฑ์€ ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

make linux-menuconfig

Virtualbox ๋น„๋””์˜ค ์นด๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

Virtualbox ๊ฒŒ์ŠคํŠธ ํ†ตํ•ฉ ์ง€์›์„ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์ €์žฅ ๋ฐ ์ข…๋ฃŒ. ์ค‘์š”: ๊ตฌ์„ฑ์€output/build/linux-$version/config์— ์ €์žฅ๋˜์ง€๋งŒ,board/my_x86_board/linux.config์—๋Š” ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

๋”ฐ๋ผ์„œ ๊ตฌ์„ฑ์„ ์Šคํ† ๋ฆฌ์ง€ ์œ„์น˜์— ์ˆ˜๋™์œผ๋กœ ๋ณต์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config

๊ทธ ํ›„์— ์šฐ๋ฆฌ๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์™„์ „ํ•œ ์žฌ์กฐ๋ฆฝ์„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. buildroot๋Š” ์ด๋ฏธ ๋นŒ๋“œ๋œ ๊ฒƒ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•  ํŒจํ‚ค์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„๊ณผ ์‹ ๊ฒฝ์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์†Œ๊ทœ๋ชจ ์‹œ์Šคํ…œ์„ ์™„์ „ํžˆ ์žฌ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.)

make clean;make

๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด CD์—์„œ VirtualBox(๋ฒ„์ „ 5.2 ๋ฐ 6.0์—์„œ ํ…Œ์ŠคํŠธ๋จ) ๋ถ€ํŒ…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๋งค๊ฐœ๋ณ€์ˆ˜:

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์กฐ๋ฆฝ๋œ ISO์—์„œ ์‹คํ–‰:

Buildroot - 1๋ถ€. ์ผ๋ฐ˜ ์ •๋ณด, ์ตœ์†Œ ์‹œ์Šคํ…œ ์กฐ๋ฆฝ, ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•œ ๊ตฌ์„ฑ

์‚ฌ์šฉ๋œ ์žฌ๋ฃŒ ๋ชฉ๋ก

  1. ๋นŒ๋“œ๋ฃจํŠธ ๋งค๋‰ด์–ผ

์ถœ์ฒ˜ : habr.com

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