๋๋ 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
๋ํ 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