๋ถ€ํŠธ์ŠคํŠธ๋žฉ v1.0 ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ


๋ถ€ํŠธ์ŠคํŠธ๋žฉ v1.0 ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ

๋‚˜๋Š” GNU/Linux ๋ฐฐํฌํŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํŒ… ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด POSIX ์…ธ๋กœ ์ž‘์„ฑ๋œ breasttrap์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด chroot์— ์‹œ์Šคํ…œ ๋ฐฐํฌ, chroot๋œ ์‹œ์Šคํ…œ์„ ํฌํ•จํ•˜๋Š” initramfs ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ๊ถ๊ทน์ ์œผ๋กœ ๋ถ€ํŒ… ๊ฐ€๋Šฅํ•œ ISO ์ด๋ฏธ์ง€ ์ƒ์„ฑ์ด๋ผ๋Š” ๊ฐ„๋‹จํ•œ ์„ธ ๋‹จ๊ณ„๋งŒ์œผ๋กœ ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์Šด ์ŠคํŠธ๋žฉ์—๋Š” ๊ฐ๊ฐ mkbootstrap, mkinitramfs ๋ฐ mkbootisofs ์„ธ ๊ฐ€์ง€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

mkbootstrap์€ ์‹œ์Šคํ…œ์„ ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•˜๊ณ  CRUX์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์ด ์žˆ์œผ๋ฉฐ Arch Linux/Manjaro ๋ฐ Debian ๊ธฐ๋ฐ˜ ๋ฐฐํฌํŒ์˜ ๊ฒฝ์šฐ ํƒ€์‚ฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ pacstrap, basestrap ๋ฐ debootstrap์„ ๊ฐ๊ฐ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

mkinitramfs๋Š” initramfs ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜๋œ ์‹œ์Šคํ…œ์„ "์˜ค๋ฒ„๋ ˆ์ด"๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ SquashFS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•ํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์œผ๋กœ ๋ถ€ํŒ…ํ•œ ํ›„ tmpfs์—์„œ ์ง์ ‘ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd ๋ช…๋ น์€ "arch- chroot/" ์‹œ์Šคํ…œ ๋ฐ "/home"์„ SquashFS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•ํ•œ ๋‹ค์Œ PXE๋ฅผ ํ†ตํ•ด tmpfs๋กœ ๋ถ€ํŒ…ํ•˜๊ฑฐ๋‚˜ ์ด initrd๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํŒ… ๊ฐ€๋Šฅํ•œ ISO ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mkbootisofs๋Š” ์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ BIOS/UEFI ๋ถ€ํŒ… ๊ฐ€๋Šฅ ISO ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ์— /boot/vmlinuz ๋ฐ /boot/initrd๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

๊ฐ€์Šด ์ŠคํŠธ๋žฉ์€ busybox๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ž‘๋™ํ•˜๋Š” initramfs ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ ๋ถ€ํŒ… ๋ฐ ์ „ํ™˜์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ํ”„๋กœ๊ทธ๋žจ ์„ธํŠธ๊ฐ€ ldd๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณต์‚ฌํ•  ํ”„๋กœ๊ทธ๋žจ ๋ชฉ๋ก์€ /etc/boobstrap/boobstrap.conf ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ†ตํ•ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณ„๋„์˜ chroot/์— ์ตœ์†Œํ•œ์˜ ๋ฐฐํฌํŒ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์„œ ๋ณธ๊ฒฉ์ ์ธ initramfs ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ๋™์‹œ์— ์™„์ „ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด xz ์ดํ›„์—๋Š” 37MB์˜ ์ ˆ์ถฉ์•ˆ์„ ์ฐจ์ง€ํ•˜๋Š” "crux_gnulinux-embedded" ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. busybox๋Š” ์ „์ฒด ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ GNU/Linux ํ™˜๊ฒฝ์˜ 3~5MB์— ๋น„ํ•ด 30~50MB๋ผ๋Š” ํฌ๊ธฐ ์™ธ์—๋Š” ๋” ์ด์ƒ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ์—์„œ busybox๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๊ณ  ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

# ์ž์‹ ํด๋ก  https://github.com/sp00f1ng/boobstrap.git
# CD ๊ฐ€์Šด๋ˆ
# make install# breasttrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

๋˜ํ•œ cpio, grub, grub-efi, dosfstools, xorriso์™€ ๊ฐ™์€ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. squashfs-tools๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์œผ๋ฉฐ ์ ์ ˆํ•œ ์–‘์˜ RAM์„ ์‚ฌ์šฉํ•˜์—ฌ tmpfs์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— ๋ญ”๊ฐ€ ๋น ์ง„ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ๊ฐ€์Šด์ŠคํŠธ๋žฉ์€ ์‹œ์ž‘ ์‹œ ์ด๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์ƒ์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์Šด์ŠคํŠธ๋žฉ์€ "ํ…œํ”Œ๋ฆฟ"๊ณผ "์‹œ์Šคํ…œ"์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ•ต์‹ฌ์€ "ํ…œํ”Œ๋ฆฟ"(bootstrap-templates/)์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์—์„œ ์‹œ์Šคํ…œ์„ ๋น ๋ฅด๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ์ง์ ‘ "์‹œ์Šคํ…œ"(๋ถ€ํŠธ์ŠคํŠธ๋žฉ- system/)์€ ์ตœ์ข… ๊ตฌ์„ฑ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด chesttrap/bootstrap-templates/crux_gnulinux-embedded.bbuild ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด CRUX GNU/Linux ์‹œ์Šคํ…œ์˜ ์ตœ์†Œ ๊ตฌ์„ฑ์ด ์„ค์น˜๋˜๊ณ  ์ด๋ฅผ crux_gnulinux-embedded.rootfs ํŒŒ์ผ์— ์ €์žฅํ•œ ๋‹ค์Œ breasttrap/bootstrap-systems๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์–ธ๊ธ‰๋œ ํŒŒ์ผ์—์„œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ๋กœ๋“œํ•  /default/crux_gnulinux.bbuild, ํ•„์š”ํ•œ ๋ชจ๋“  ๊ตฌ์„ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ถ€ํŒ… ๊ฐ€๋Šฅํ•œ ISO๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋Š” ๋งŽ์€ ์‹œ์Šคํ…œ์ด ๋™์ผํ•œ ์œ ํ˜•์˜ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋งค๋ฒˆ ๋™์ผํ•œ ํŒจํ‚ค์ง€ ์„ธํŠธ๋ฅผ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ตœ์ข… ๊ตฌ์„ฑ์œผ๋กœ ์‹œ์Šคํ…œ์˜ ๋ถ€ํŒ… ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋‚˜์˜ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์„ ์–ด๋””์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

ํŒŒ์ผ์—์„œ ์‹œ์Šคํ…œ์„ ํ•œ ๋ฒˆ ๊ตฌ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ• ๋ฐ/๋˜๋Š” ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ tmpfs์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋ณธ์งˆ์ ์œผ๋กœ ์ผํšŒ์šฉ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์žฌ์„ค์ • ๋ฒ„ํŠผ์„ ํ•œ ๋ฒˆ ํด๋ฆญํ•˜์—ฌ ์›๋ž˜ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. rm -rf /๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์‹œ์Šคํ…œ์˜ ๊ตฌ์„ฑ์„ ๋กœ์ปฌ์—์„œ ๊ตฌ์„ฑํ•˜๊ณ , ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ€์ƒ ๋จธ์‹ ์ด๋‚˜ ๋ณ„๋„์˜ ํ•˜๋“œ์›จ์–ด์—์„œ ํ…Œ์ŠคํŠธํ•œ ๋‹ค์Œ ์›๊ฒฉ ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•˜๊ณ  kexec -l /vmlinuz โ€”initrd=/initrd && kexec -e ๋ช…๋ น ๋‘ ๊ฐœ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์‹œ์Šคํ…œ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  tmpfs๋กœ ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ VDS ๋“ฑ์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ์„ ์ „์†กํ•˜์—ฌ tmpfs์—์„œ ์ž‘์—…ํ•˜๊ณ  /dev/vda ๋””์Šคํฌ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์šด์˜ ์ฒด์ œ๋ฅผ ์œ ์ง€ํ•  ํ•„์š” ์—†์ด ๋ฐ์ดํ„ฐ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์œ ์ผํ•œ "์ •๋ณด ์œ ์ถœ ์ง€์ "์€ ๊ฐ€์ƒ ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ์˜ "์ฝœ๋“œ ๋คํ”„"๋ฟ์ด๋ฉฐ ์‹œ์Šคํ…œ์ด ์†์ƒ๋˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: SSH ๋น„๋ฐ€๋ฒˆํ˜ธ ๋˜๋Š” ๋‹ค์Œ์˜ ์ทจ์•ฝ์ ์„ ์ถ”์ธกํ•˜์—ฌ) Exim) ๋ชจ๋“  ์ทจ์•ฝ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ์•Š๊ณ  ๊ณต๊ธ‰์ž์˜ "์ œ์–ดํŒ"์„ ํ†ตํ•ด ์ƒˆ ISO๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ VDS๋ฅผ ๋‹ค์‹œ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ISO๊ฐ€ ๋ฐฑ์—…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์žฌ์„ค์น˜, ํ›„์† ๊ตฌ์„ฑ ๋ฐ/๋˜๋Š” ๋ฐฑ์—…์—์„œ ๋ณต์›ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฆ…๋‹ˆ๋‹ค. "์ผ๊ณฑ ๊ฐ€์ง€ ๋ฌธ์ œ - ํ•œ ๋ฒˆ์˜ ์žฌ์„ค์ •."

๊ฒฐ๊ตญ์—๋Š” ํ•„์š”์— ๋”ฐ๋ผ ๋ฐฐํฌํŒ์„ ๋งŒ๋“ค๊ณ  USB ๋“œ๋ผ์ด๋ธŒ์— ์“ฐ๊ณ  ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•„์š”์— ๋”ฐ๋ผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  USB ๋“œ๋ผ์ด๋ธŒ์— ๋‹ค์‹œ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ํด๋ผ์šฐ๋“œ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์‹œ์Šคํ…œ์˜ ์•ˆ์ „์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์‹œ์Šคํ…œ์ด ๋ณธ์งˆ์ ์œผ๋กœ "์ผํšŒ์šฉ"์ด ๋˜์—ˆ์„ ๋•Œ ๋ฐฑ์—…์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์†Œ๋ง, ์ œ์•ˆ ๋ฐ ์˜๊ฒฌ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๋งํฌ์˜ ์ €์žฅ์†Œ์—๋Š” ๊ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์‚ฌ์šฉ ์˜ˆ๊ฐ€ ํฌํ•จ๋œ ์ž์„ธํ•œ README ํŒŒ์ผ(์˜์–ด)์ด ์žˆ์œผ๋ฉฐ, ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋œ ์ž์„ธํ•œ ๋ฌธ์„œ์™€ ๋งํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ๋‚ด์—ญ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Boobstrap ๋ถ€ํŒ… ์Šคํฌ๋ฆฝํŠธ ๋ณตํ•ฉ์ฒด.

์ถœ์ฒ˜ : linux.org.ru

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