์ ์๋ ํ๋ก๊ทธ๋จ
Booty๋ฅผ ์ฌ์ฉํ์ฌ ๋ถํ ๋ ๋ชจ๋ ๋ฐฐํฌํ์ ์ฌ์ฉ์๊ฐ ์ ํํ SHMFS(tmpfs) ๋๋ SquashFS + Overlay FS๋ฅผ ์คํํฉ๋๋ค. ๋ฐฐํฌํ์ ํ ๋ฒ ์์ฑ๋๋ฉฐ ๋ถํ ํ๋ก์ธ์ค ์ค์ ๋ฃจํธ์ ์์ tmpfs๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ tmpfs์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋กํ๋ Overlay FS + SquashFS ์กฐํฉ์ ์ฌ์ฉํ ์ ์๋๋ก ๋งค๊ฐ๋ณ์๊ฐ ์ ํ๋ฉ๋๋ค. ๋ค์ด๋ก๋ ๊ฐ๋ฅํ ๋ฐฐํฌ ํคํธ๋ฅผ RAM์ ๋ฏธ๋ฆฌ ๋ณต์ฌํ ์ ์์ผ๋ฏ๋ก ๋ฐฐํฌ ํคํธ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๋ก๋ํ๊ณ ๋ณต์ฌํ ํ USB ๋๋ผ์ด๋ธ๋ฅผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
์ฐ์ , Booty๋ ํ์ฌ ์์คํ ์ด๋ ๋น์ง๋ฐ์ค์ ๊ธฐ๋ณธ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์์ฒด initrd ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค. initramfs์ ๋๋ ํ ๋ฆฌ(chroot)์ ์ค์น๋ ์ ์ฒด ๋ฐฐํฌ ํคํธ๋ฅผ ํฌํจ(ํจํน)ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ kexec๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ ์ ์ ๊ทธ๋ ์ด๋ํด์ผ ํ ๋ ์ ์ฉํ ์ ์์ต๋๋ค. initrd ๋ด๋ถ์ ์ ์ปค๋๊ณผ ์ ์์คํ ์ ์ฌ์ฉํ์ฌ initrd๋ฅผ ๋ค์ ๋ก๋ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
Booty๋ณ initrd ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ:
mkdir initramfs/
mkinitramfs initramfs/ --output initrd
"gentoo/" ๋๋ ํ ๋ฆฌ์ ๋ฐฐํฌ๋ณธ์ ํฌํจํ๋ initrd ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ:
mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --cpio --output initrd
๊ทธ๋ฌ๋ฉด ์ด initrd ์ด๋ฏธ์ง๋ PXE๋ kexec ๋ฑ์ ํตํด ๋ก๋ํ ์ค๋น๊ฐ ์์ ํ ์๋ฃ๋ฉ๋๋ค.
๋ค์์ผ๋ก Booty๋ "์ค๋ฒ๋ ์ด"๋ก ์ง์ ๋ ์์คํ ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ณ๋์ ๋๋ ํ ๋ฆฌ์ ์กฐ๊ฑด๋ถ Gentoo๋ฅผ ์ค์น(์์นด์ด๋ธ ์์ถ ํ๊ธฐ)ํ ์ ์์ผ๋ฉฐ, ๊ทธ ํ Booty๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์คํ ์ cpio ์์นด์ด๋ธ ๋๋ SquashFS ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ณ๋์ ๋๋ ํฐ๋ฆฌ์ ๋ฐฐํฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ฐ์ธ ์ค์ ์ ๋ค๋ฅธ ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋ "๋ ์ด์ด"๋ ์์ฐจ์ ์ผ๋ก ์๋ก ๋ก๋๋์ด ๋จ์ผ ์์ ์์คํ ์ ์์ฑํฉ๋๋ค.
mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay ์ค์ / --overlay ๋ฌธ์/ --squashfs --output initrd
๊ถ๊ทน์ ์ผ๋ก Booty๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง์์ ์ ์์คํ
์ ์ค์นํ์ฌ ๋ถํ
๊ฐ๋ฅํ ISO ์ด๋ฏธ์ง์ USB, HDD, SSD ๋ฐ ๊ธฐํ ๋๋ผ์ด๋ธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
ํ์ํ ์ ์ผํ ์ถ๊ฐ ์์ ์ ๋ถํ ์ฉ ์ปค๋(vmlinuz)์ ๋ฏธ๋ฆฌ ์ค๋นํ๋ ๊ฒ์ ๋๋ค. ์์ฑ์(Spoofing)๋ "make defconfig" ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค. ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ธฐ ์ ์ vmlinuz ์ปค๋๊ณผ ์ฒซ ๋ฒ์งธ ์์์ ์์ฑ๋ ์ด์ ์ ์ค๋น๋ "๋น" initrd๋ฅผ ๋ฐฐ์นํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ์ค๋นํด์ผ ํฉ๋๋ค.
mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/๋ถํ
/initrd
์ด๊ฒ์ผ๋ก ์ค๋น๊ฐ ์๋ฃ๋์์ผ๋ฏ๋ก ์ด์ ์ด ๋๋ ํ ๋ฆฌ์์ ISO ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋ค์ ๋ช ๋ น์ ๋ถํ ๊ฐ๋ฅํ ์ด๋ฏธ์ง๊ฐ ์๋ ISO ์ด๋ฏธ์ง๋ง ์์ฑํฉ๋๋ค.
mkdir iso/
mkbootisofs iso/ --output archive.iso
๋ถํ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ค๋ฉด BIOS์ ๊ฒฝ์ฐ "--legacy-boot" ์ต์ ์, UEFI์ ๊ฒฝ์ฐ "--efi"๋ฅผ ๊ฐ๊ฐ ์ง์ ํด์ผ ํฉ๋๋ค. ์ต์ ์ grub2 ๋๋ syslinux๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํฉ๋๋ค. ํ๋์ ์ต์ ๋ง ์ง์ ํ ์๋ ์์ต๋๋ค( ์๋ฅผ ๋ค์ด UEFI ๋ถํ ์ง์์ ํ์ํ์ง ์์ผ๋ฉฐ ์ง์ ๋์ง ์์ ์๋ ์์ต๋๋ค.
mkbootisofs iso/ --legacy-boot syslinux --output boot-biosonly.iso
mkbootisofs iso/ --legacy-boot syslinux --efi grub2 --output boot-bios-uefi.iso
mkbootisofs iso/ --efi grub2 --output boot-uefionly.iso
์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์คํ ์ด๋ฏธ์ง๊ฐ initrd์ ํฌํจ๋์์ผ๋ฏ๋ก ์ด๋ฅผ ISO์ ํฌํจํ ์ ์์ต๋๋ค.
mkbootisofs iso/ --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --output gentoo.iso
์ด ๋ช ๋ น ํ์๋ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํด tmpfs๋ฅผ ์ฌ์ฉํ๊ณ ์ค๋ฒ๋ ์ด FS๋ฅผ ์ฌ์ฉํ์ฌ SquashFS ์ด๋ฏธ์ง์ ์ ํฌ๋ฅผ ๋ก๋ํ๋ ๋ถํ ๊ฐ๋ฅํ BIOS/UEFI ISO ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ฉ๋๋ค. ์ปค๋์ SquashFS๋ฅผ ํตํ ์ค๋ฒ๋ ์ด FS ์ง์์ผ๋ก ๊ตฌ์ถ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์ด์ ๋ก ์ด๊ฒ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ -squashfs ๋์ "-cpio" ์ต์ ์ ์ฌ์ฉํ์ฌ gentoo/๋ฅผ cpio ์์นด์ด๋ธ๋ก ํจํค์งํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์์นด์ด๋ธ๋ ๋ถํ ์ tmpfs์ ์ง์ ์์ถ์ด ํ๋ฆฝ๋๋ค. ์์คํ ์ ์์ถ์ ํ๊ธฐ ์ํด tmpfs์ ์ถฉ๋ถํ RAM์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
ํฅ๋ฏธ๋ก์ด ์ฌ์ค: "-efi" ์ต์ ์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ISO ์ด๋ฏธ์ง๊ฐ ๋จ์ํ ํ์ผ์ ๋ณต์ฌ(cp -r)ํ์ฌ FAT32 ํ๋์ ๋๋ผ์ด๋ธ์ ์์ถ์ด ํ๋ฆฐ ๊ฒฝ์ฐ, ํ๋์ ๋๋ผ์ด๋ธ๋ ํน์ ์ฌํญ ๋๋ถ์ ์ฌ์ ์ค๋น ์์ด UEFI ๋ชจ๋์์ ๋ถํ ๋ฉ๋๋ค. UEFI ๋ค์ด๋ก๋.
๋ถํ ๊ฐ๋ฅํ ISO ์ธ์๋ USB, HDD, SSD ๋ฑ๊ณผ ๊ฐ์ ๋์ผํ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ถํ ๊ฐ๋ฅํ ๋๋ผ์ด๋ธ๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ ์ด ๋๋ผ์ด๋ธ๋ฅผ ์๋๋ ๋ชฉ์ ์ผ๋ก ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด USB ์ฅ์น ๋ฑ์ ๋ง์ดํธํ๊ณ ํด๋น ์ฅ์น์์ mkbootisofs๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์ง์ ๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋ ๋๋ผ์ด๋ธ๊ฐ ๋ถํ ๊ฐ๋ฅํ๋๋ก ํ๋ ค๋ฉด "-bootable" ์ต์ ํ๋๋ง ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
๋ง์ดํธ /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --bootable
๊ทธ ํ USB ์ฅ์น๋ gentoo/overlay๋ก ๋ถํ ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค(/boot/vmlinuz ๋ฐ /boot/initrd ํ์ผ์ ์ฅ์น์ ๋ณต์ฌํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค).
์ด๋ค ์ด์ ๋ก ๋๋ผ์ด๋ธ๊ฐ /mnt์ ๋ง์ดํธ๋์ง ์์๊ณ /mnt๊ฐ ์ฃผ ์ฅ์น /dev/sda์ ์๋ ๊ฒ์ผ๋ก ๋ฐํ์ง๋ฉด ๋ถํธ๋ก๋๊ฐ /dev/sda์ ๋ค์ ์์ฑ๋ฉ๋๋ค. --bootable ์ต์ ์ ์ง์ ํ ๋๋ ์ฃผ์ํด์ผ ํฉ๋๋ค.
๋ถํ ํ๋ก์ธ์ค ์ค์ Booty๋ ๋ถํธ ๋ก๋ grub.cfg ๋๋ syslinux.cfg์ ์ ๋ฌํ ์ ์๋ ๋ค์ํ ์ต์ ์ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ ์ด ์์ผ๋ฉด ๋ชจ๋ ์ค๋ฒ๋ ์ด๊ฐ tmpfs์ ๋ก๋๋๊ณ ์์ถ์ด ํ๋ฆฝ๋๋ค(๊ธฐ๋ณธ ์ต์ ooty.use-shmfs). ์ค๋ฒ๋ ์ด FS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด booty.use-overlayfs ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. booty.copy-to-ram ์ต์ ์ ๋จผ์ ์ค๋ฒ๋ ์ด๋ฅผ tmpfs์ ๋ณต์ฌํ ๋ค์ ์ค๋ฒ๋ ์ด๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ก๋ํ๊ธฐ๋ง ํฉ๋๋ค. ๋ณต์ฌํ ํ์๋ USB ์ฅ์น(๋๋ ๊ธฐํ ์ ์ฅ ์ฅ์น)๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru