booty - ๋ถ€ํŒ… ์ด๋ฏธ์ง€์™€ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ

์ œ์‹œ๋œ ํ”„๋กœ๊ทธ๋žจ ์ „๋ฆฌํ’ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€ํŒ… ๊ฐ€๋Šฅํ•œ initrd ์ด๋ฏธ์ง€, ISO ํŒŒ์ผ ๋˜๋Š” GNU/Linux ๋ฐฐํฌํŒ์ด ํฌํ•จ๋œ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” POSIX ์‰˜๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฐฐํฌ์ž GPLv3์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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 ๋ฐ ๊ธฐํƒ€ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ฆฌํ’ˆ BIOS ๋ฐ UEFI ๋ถ€ํŒ… ์‹œ์Šคํ…œ ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. GRUB2 ๋ฐ SYSLINUX ๋ถ€ํŠธ๋กœ๋”๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ถ€ํŠธ๋กœ๋”๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SYSLINUX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ BIOS๋กœ ๋ถ€ํŒ…ํ•˜๊ณ  GRUB2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UEFI๋กœ ๋ถ€ํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ISO ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” cdrkit(genisoimage) ๋˜๋Š” xorriso(xorrisofs) ํŒจํ‚ค์ง€๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์œ ์ผํ•œ ์ถ”๊ฐ€ ์ž‘์—…์€ ๋ถ€ํŒ…์šฉ ์ปค๋„(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

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