booty - ยูทิลิตี้สำหรับสร้างอิมเมจสำหรับบูตและไดรฟ์

โปรแกรมที่นำเสนอ Bootyซึ่งช่วยให้คุณสร้างอิมเมจ initrd ที่สามารถบูตได้ ไฟล์ ISO หรือไดรฟ์ที่มีการแจกจ่าย GNU/Linux ด้วยคำสั่งเดียว รหัสถูกเขียนในเชลล์ POSIX และ จัดจำหน่ายโดย ได้รับอนุญาตภายใต้ GPLv3

การแจกแจงทั้งหมดที่บูทโดยใช้ Booty จะรัน SHMFS (tmpfs) หรือ SquashFS + Overlay FS ซึ่งเป็นตัวเลือกของผู้ใช้ การแจกจ่ายจะถูกสร้างขึ้นเพียงครั้งเดียว และในระหว่างกระบวนการบูต จะมีการเลือกพารามิเตอร์ที่อนุญาตให้คุณใช้ tmpfs ล้วนๆ สำหรับรูท หรือการผสมผสานระหว่าง Overlay FS + SquashFS พร้อมการบันทึกการเปลี่ยนแปลงเป็น tmpfs เป็นไปได้ที่จะคัดลอกชุดการแจกจ่ายที่ดาวน์โหลดได้ล่วงหน้าไปยัง RAM ซึ่งช่วยให้คุณสามารถถอดไดรฟ์ USB หลังจากดาวน์โหลดและคัดลอกชุดการแจกจ่ายไปยังหน่วยความจำ

ก่อนอื่น Booty จะสร้างอิมเมจเริ่มต้นของตัวเอง ซึ่งสามารถใช้ยูทิลิตี้ดั้งเดิมจากระบบปัจจุบันหรือ busybox ได้ เป็นไปได้ที่จะรวม (แพ็ค) ชุดการแจกจ่ายทั้งหมดที่ติดตั้งในไดเร็กทอรี (chroot) ลงใน initramfs สิ่งนี้มีประโยชน์เมื่อคุณต้องการอัพเกรดระบบโดยใช้ kexec: เพียงโหลด initrd ใหม่ด้วยเคอร์เนลใหม่ และระบบใหม่ภายใน initrd

การสร้างอิมเมจเริ่มต้นเฉพาะ Booty:

mkdir เริ่มต้น /
mkinitramfs initramfs/ --เอาต์พุต initrd

การสร้างอิมเมจ initrd รวมถึงการแจกจ่ายจากไดเร็กทอรี "gentoo/":

mkdir เริ่มต้น /
mkinitramfs initramfs/ --overlay gentoo/ --cpio --เอาท์พุท initrd

หลังจากนั้นอิมเมจเริ่มต้นนี้ก็พร้อมสำหรับการโหลดโดยสมบูรณ์ เช่น ผ่าน PXE หรือผ่าน kexec

จากนั้น Booty จะสร้างอิมเมจโดยระบบระบุว่าเป็น "โอเวอร์เลย์" ตัวอย่างเช่น คุณสามารถติดตั้ง (แตกไฟล์เก็บถาวร) Gentoo แบบมีเงื่อนไขในไดเร็กทอรีแยกต่างหาก หลังจากนั้นไฟล์เก็บถาวร cpio หรืออิมเมจ SquashFS ด้วยระบบนี้จะถูกสร้างขึ้นโดยใช้ Booty คุณยังสามารถกำหนดค่าการแจกจ่ายในไดเร็กทอรีแยกต่างหาก และคัดลอกการตั้งค่าส่วนบุคคลของคุณไปยังไดเร็กทอรีอื่นได้ “เลเยอร์” ทั้งหมดเหล่านี้จะถูกโหลดตามลำดับซ้อนกันและสร้างระบบการทำงานเดียว

mkdir เริ่มต้น /
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay เอกสาร/ --squashfs --output initrd

ท้ายที่สุด Booty ช่วยให้คุณสร้างอิมเมจ ISO ที่สามารถบู๊ตได้และ USB, HDD, SSD และไดรฟ์อื่น ๆ โดยการติดตั้งระบบข้างต้นจากอิมเมจ Booty รองรับการสร้างระบบบูต BIOS และ UEFI รองรับ bootloaders GRUB2 และ SYSLINUX สามารถรวม Bootloaders ได้ เช่น ใช้ SYSLINUX เพื่อบูตเข้าสู่ BIOS และใช้ GRUB2 สำหรับ UEFI ในการสร้างอิมเมจ ISO คุณจะต้องมีแพ็คเกจ cdrkit (genisoimage) หรือ xorriso (xorrisofs) เพิ่มเติมเพื่อเลือก

การดำเนินการเพิ่มเติมที่จำเป็นเพียงอย่างเดียวคือการเตรียมเคอร์เนล (vmlinuz) สำหรับการบูตล่วงหน้า ผู้เขียน (การปลอมแปลง) แนะนำให้ใช้ "make defconfig" ก่อนที่จะสร้างอิมเมจ คุณต้องเตรียมไดเร็กทอรีโดยวางเคอร์เนล vmlinuz และ initrd “ว่าง” ที่เตรียมไว้ก่อนหน้านี้ซึ่งสร้างขึ้นในตัวอย่างแรก

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz.cp
cp initrd iso/boot/initrd

เมื่อการเตรียมการเสร็จสิ้นแล้ว ตอนนี้เราสามารถสร้างอิมเมจ ISO จากไดเร็กทอรีนี้ได้

คำสั่งต่อไปนี้จะสร้างอิมเมจ ISO ไม่ใช่อิมเมจที่สามารถบู๊ตได้ แต่เป็นเพียง ISO:

mkdir iso/
mkbootisofs iso/ --output archive.iso

ในการสร้างอิมเมจสำหรับบูตคุณต้องระบุตัวเลือก "--legacy-boot" สำหรับ BIOS และ "--efi" สำหรับ UEFI ตามลำดับ ตัวเลือกจะใช้ grub2 หรือ syslinux เป็นพารามิเตอร์ คุณสามารถระบุได้เพียงตัวเลือกเดียว ( ตัวอย่างเช่น ไม่จำเป็นต้องรองรับการบูต UEFI แต่ก็อาจไม่ได้ระบุ)

mkbootisofs iso / --legacy-boot syslinux -- เอาท์พุท boot-biosonly.iso

mkbootisofs iso/ --legacy-boot syslinux --efi grub2 -- เอาต์พุต 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

หลังจากคำสั่งนี้ อิมเมจ ISO ของ BIOS/UEFI ที่สามารถบูตได้จะถูกสร้างขึ้นซึ่งจะโหลด Gentoo ลงในอิมเมจ SquashFS โดยใช้ Overlay FS โดยใช้ tmpfs สำหรับการจัดเก็บข้อมูล เคอร์เนลจะต้องสร้างด้วยการสนับสนุน Overlay FS พร้อม SquashFS อย่างไรก็ตาม หากไม่จำเป็นด้วยเหตุผลบางประการ คุณสามารถใช้ตัวเลือก “—cpio” แทน —squashfs เพื่อจัดทำแพ็กเกจ gentoo/ เป็นไฟล์เก็บถาวร cpio ได้ ซึ่งในกรณีนี้ ไฟล์เก็บถาวรจะถูกคลายแพ็กลงใน tmpfs โดยตรงเมื่อบู๊ตเครื่อง สิ่งสำคัญคือ คือการแกะระบบ tmpfs มี RAM เพียงพอ

ข้อเท็จจริงที่น่าสนใจ: หากอิมเมจ ISO ที่สร้างโดยใช้ตัวเลือก "—efi" ถูกคลายแพ็กลงในแฟลชไดรฟ์ FAT32 เพียงคัดลอกไฟล์ (cp -r) แฟลชไดรฟ์จะบูตในโหมด UEFI โดยไม่ต้องเตรียมการเบื้องต้นใด ๆ เนื่องจากข้อมูลเฉพาะ ของ UEFI- ตัวดาวน์โหลด

นอกเหนือจาก ISO ที่สามารถบู๊ตได้ ไดรฟ์ที่สามารถบู๊ตได้ยังสามารถสร้างด้วยพารามิเตอร์เดียวกัน: USB, HDD, SSD และอื่น ๆ และไดรฟ์นี้ยังสามารถใช้งานได้ตามวัตถุประสงค์ที่ต้องการ ในการดำเนินการนี้ คุณจะต้องต่อเชื่อมอุปกรณ์ USB เช่น และรัน mkbootisofs กับอุปกรณ์ดังกล่าว เพียงเพิ่มหนึ่งตัวเลือก “—บูตได้” เพื่อให้ไดรฟ์ที่มีไดเร็กทอรีที่ระบุอยู่นั้นสามารถบู๊ตได้

เมานต์ /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 -- บูตได้

หลังจากนั้นอุปกรณ์ USB จะสามารถบูตได้ด้วย gentoo/ โอเวอร์เลย์ (อย่าลืมคัดลอกไฟล์ /boot/vmlinuz และ /boot/initrd ไปยังอุปกรณ์)

หากไม่ได้เมานต์ไดรฟ์ใน /mnt ด้วยเหตุผลบางประการ และปรากฎว่า /mnt อยู่ในอุปกรณ์หลัก /dev/sda ดังนั้น bootloader จะถูกเขียนใหม่เป็น /dev/sda คุณควรระมัดระวังเมื่อระบุตัวเลือก --bootable

ในระหว่างกระบวนการบู๊ต Booty รองรับตัวเลือกมากมายที่สามารถส่งผ่านไปยังบูตโหลดเดอร์, grub.cfg หรือ syslinux.cfg ตามค่าเริ่มต้น โดยไม่มีตัวเลือกใดๆ โอเวอร์เลย์ทั้งหมดจะถูกโหลดและแตกไฟล์ลงใน tmpfs (ตัวเลือกเริ่มต้น ooty.use-shmfs) หากต้องการใช้ Overlay FS ต้องใช้ตัวเลือก booty.use-overlayfs ตัวเลือก booty.copy-to-ram จะคัดลอกโอเวอร์เลย์ไปที่ tmpfs ก่อน หลังจากนั้นจะเชื่อมต่อและโหลดเท่านั้น เมื่อคัดลอกแล้ว อุปกรณ์ USB (หรืออุปกรณ์จัดเก็บข้อมูลอื่นๆ) จะสามารถถอดออกได้

ที่มา: opennet.ru

เพิ่มความคิดเห็น