โปรแกรมที่นำเสนอ
การแจกแจงทั้งหมดที่บูทโดยใช้ 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 และไดรฟ์อื่น ๆ โดยการติดตั้งระบบข้างต้นจากอิมเมจ
การดำเนินการเพิ่มเติมที่จำเป็นเพียงอย่างเดียวคือการเตรียมเคอร์เนล (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