ฉันจะบูทไฟล์ ISO ในด้วงได้อย่างไร ไฟล์ ISO อยู่ในพาร์ติชัน reiserfs และ GRUB สามารถเข้าถึงได้ (ทดสอบแล้ว)
ฉันจะบูทไฟล์ ISO ในด้วงได้อย่างไร ไฟล์ ISO อยู่ในพาร์ติชัน reiserfs และ GRUB สามารถเข้าถึงได้ (ทดสอบแล้ว)
คำตอบ:
ปัญหาที่ใหญ่ที่สุดกับบูต ISO ไฟล์คือว่า ISOs ที่ถูกออกแบบมาให้เด้งเกือบจะออกแบบมาเสมอที่จะได้รับการบูตจากซีดี ตามที่อธิบายไว้ในบล็อกของ Marcoเกี่ยวกับ Grub 2 (เน้นที่เหมือง):
GRUB สามารถอ่านภาพ ISO9660 (” iso”) ตัวอย่างเช่นสามารถโหลดภาคส่วนแรกและบูต แต่คนส่วนใหญ่ไม่ทราบว่าเป็น "อะไรแล้ว" ระบบปฏิบัติการที่โหลดจะทำอะไร? มันมักจะมองหาซีดีรอมซึ่งจะไม่พบและล้มเหลว
ดังนั้นวิธีที่ง่ายในการบูตจากไฟล์ ISO สุ่มบางอย่างคือการโหลดลงในเครื่องเสมือน (VirtualBox, VMware หรือ Virtual PC) เป็นซีดีเสมือนและบูตที่นั่น นั่นควรจะใช้ได้เกือบทุกครั้งเพราะสำหรับ VM ไม่ใช่ไฟล์ ISO - เป็นซีดีจริงบนฮาร์ดแวร์ซีดีจริง
การบูตจากไฟล์ ISO บนโลหะเปลือยนั้นยากกว่ามาก วิธีการทำเช่นนี้ขึ้นอยู่กับรุ่นของ Grub ที่คุณใช้และผลลัพธ์อาจแตกต่างกันไปขึ้นอยู่กับ ISO ที่คุณใช้และวิธีกำหนดค่าให้บู๊ต นี่คือเหตุผลว่าทำไมเครื่องมือ boot-ISO-from-USB ส่วนใหญ่ (Unetbootin, WinToFlash ฯลฯ ) มักจะแยกเนื้อหา ISO ไปยังไดรฟ์ - เพราะวิธีการที่พวกเขาสามารถเข้าถึงได้โดยตรงโดยไม่ทำให้ระบบปฏิบัติการสับสน
... ไม่แน่ใจ. ถ้าเป็นไปได้รายการเมนูอาจดูเหมือน Grub4DOS มาก แต่ฉันคิดว่าคำสั่ง"map --hook"คือการปรับปรุง Grub4DOS ในด้านบวก Grub มีการรองรับระบบไฟล์ที่กว้างกว่า Grub4DOS
หมายเหตุเกี่ยวกับGrub ที่มี reiserfs (ไม่ยืนยัน) แสดงว่าคุณ "ต้องติดตั้งพาร์ติชันของคุณnotail
เพื่อให้สามารถใช้งานได้"
Memdisk เป็นตัวเลือก ดูด้านล่าง
Grub4DOS เสนอ "ซีดีอีมูเลชัน"ที่ใช้งานได้กับ ISO บางตัว น่าเสียดายที่ Grub4DOS อ่านระบบไฟล์ FAT32 / NTFS เท่านั้น ดาวน์โหลด Grub4DOS
นี่คือรายการตัวอย่าง ( แหล่งที่มา ):
title fdfullcd.iso (0xFF)
find --set-root /fdfullcd.iso
map /fdfullcd.iso (0xFF)
map --hook
root (0xFF)
kernel /isolinux/data/memdisk
initrd /isolinux/data/fdboot.img
สมมุติว่า Win7 ISO สามารถบู๊ตได้ด้วยรายการนี้ :
title Windows 7
map (hd0,0)/win7.iso (hd32)
map --hook
chainloader (hd32)
ISO อื่น ๆ สามารถบู๊ตได้ด้วย Memdisk :
title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
kernel /memdisk iso
initrd /hdt.iso
นอกจากนี้คุณยังสามารถใช้ปรับแต่งเมนูเช่นMultiBootISOs.exe จาก PenDriveLinux วาง ISOs บนแฟลชไดรฟ์และเรียกใช้ยูทิลิตีเพื่อติดตั้ง bootloader และกำหนดค่าเมนูบู๊ต
นี่คือตอน Hak5ในการติดตั้ง Grub4DOS
นี่คือตัวอย่าง Grub2 สองตัวอย่าง chainloaderไม่สามารถบูต ISO ได้ในปัจจุบันดังนั้นรายการเหล่านี้จะต้อง (1) ใช้loopbackเพื่อ "mount" ISO และ (2) เพิ่มบางอย่างเช่นiso-scanหรือfindisoไปยังบรรทัดlinuxที่ระบุไฟล์ ISO
น่าเสียดายที่ไม่มีวิธีทั่วไปในการทำเช่นนี้ แต่ละรายการบูตที่แตกต่างกันจะต้องได้รับการปรับแต่งให้สอดคล้องกับเนื้อหาของ ISO เป้าหมาย Linux LiveCD ส่วนใหญ่ใช้ ISOLINUX เป็น bootloader ค้นหาisolinux.cfgและตรวจสอบรายการบูตเพื่อดูว่ามันจะบูทอะไร
ตัวอย่างรายการ ( แหล่งที่มา ):
menuentry "Ubuntu Live 9.10 32bit" {
loopback loop /boot/iso/ubuntu-9.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-9.10-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
menuentry "Grml small 2009.10" {
loopback loop /boot/iso/grml-small_2009.10.iso
linux (loop)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
initrd (loop)/boot/grmlsmall/initrd.gz
}
หากคุณพยายามบูตไม่ใช่ LiveCD ของ Linux คุณอาจโชคไม่ดี อีกครั้งMemdisk อาจช่วย :
menuentry "Boot Hardware Detection Tool from iso" {
linux16 /memdisk iso
initrd16 /hdt.iso
}
คุณสามารถใช้ dd จากเทอร์มินัลเพื่อเขียนไฟล์ iso ไปยังพาร์ติชัน แค่ระวังถ้าคุณใช้ผิดคุณสามารถเช็ดทุกอย่างได้ มันควรมีลักษณะดังนี้: dd if = Desktop / LinuxCDFile.iso of = / Path / To / Partition