วิธีบูตจากอิมเมจ ISO ที่ไม่ใช่ Ubuntu สดเช่น Fedora หรือ CentOS


26

ฉันพบว่ามันสามารถทำได้ด้วยloopbackดังต่อไปนี้

menuentry "Lucid ISO" {
loopback loop (hd0,1)/boot/iso/ubuntu-10.04-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-10.04-desktop-i386.iso noprompt noeject
initrd (loop)/casper/initrd.lz
}

แต่ใช้ได้กับอูบุนตูหรืออนุพันธ์เท่านั้น ควรเขียนอย่างไรถ้าฉันต้องการบูตภาพสดอื่น ๆ เช่น fedora, cent, opensuse ฯลฯ ?

แก้ไข: ฉันพบรายการอื่น ๆ แต่ทั้งหมดอาจเป็นแบบเดเบียน

menuentry "Linux Mint 10 Gnome ISO" {
 loopback loop /linuxmint10.iso
 linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.lz iso-scan/filename=/linuxmint10.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}

menuentry "DBAN ISO" {
 loopback loop /dban.iso
 linux (loop)/DBAN.BZI nuke="dwipe" iso-scan/filename=/dban.iso silent --
}


menuentry "Tinycore ISO" {
 loopback loop /tinycore.iso
 linux (loop)/boot/bzImage --
 initrd (loop)/boot/tinycore.gz
}


menuentry "SystemRescueCd" {
 loopback loop /systemrescuecd.iso
 linux (loop)/isolinux/rescuecd isoloop=/systemrescuecd.iso setkmap=us docache dostartx
 initrd (loop)/isolinux/initram.igz
}

Edit2: วิธีการ chainload grubและsyslinuxจากgrub2?

Edit3: ฉันต้องการที่จะบูตภาพสดอื่น ๆ โดยอุปกรณ์ที่ถอดออกใด ๆ และการใช้งานเพื่อให้เมนูความต้องการที่เฉพาะเจาะจงกับรายการgrub2grub2


1
นี่ไม่ใช่หัวข้อปิด, ยังคง unix และ linux stack exchange ได้ดีกว่าunix.stackexchange.com
Tachyons

@ Rinzwind อย่างไร
Tachyons

2
คำถามเกี่ยวกับ fedora, centOS และ opensuse ไม่เกี่ยวกับ Ubuntu @abcd
Rinzwind

2
โดยวิธีการ: Fedora ไม่สามารถทำสิ่งนี้ได้ CentOS นั้นเป็น Fedora dracutมีคำขอคุณสมบัติกับมันและจะต้องได้รับการแก้ไขสำหรับสิ่งนี้ คุณสามารถค้นหาแพทช์นี้ได้ที่ bugzilla.redhat.com
Rinzwind

2
เป็นไปได้ซ้ำไหม askubuntu.com/questions/121212/…
fossfreedom

คำตอบ:


19

การบูตจาก iso เป็นคุณสมบัติที่ต้องได้รับการสนับสนุนจาก distro และiso-scan/filename=ตัวเลือกจะไม่ทำงานใน Fedora หรืออื่น ๆ สิ่งเหล่านั้นอาจมีตัวเลือกเคอร์เนลอื่น ๆ สำหรับคุณสมบัตินี้หรืออาจไม่รองรับคุณสมบัติทั้งหมด

ฉันได้พบวิธีในการบู๊ต Fedora 16 DVD ด้านล่าง

การบูต iso DVD iso จากด้วง

เมนูอาหาร "Fedora 15 (DVD)" {
 insmod loopback
 insmod iso9660
 set isofile = "/ Fedora-15-x86_64-DVD.iso"
 loopback loop (hd0,2) $ isofile
 linux (loop) / isolinux / vmlinuz rootfstype = auto root = live: UUID =: $ isofile ro เงียบ
 initrd (loop) /isolinux/initrd.img
}

ถือว่าไฟล์ iso ของคุณอยู่ที่รูทของพาร์ติชั่นที่สองของฮาร์ดดิสก์ภายใน

แหล่งที่มา: หน้านี้

คุณสามารถค้นหาการกระจายอื่น ๆ ใน google ได้เนื่องจากไม่ใช่คุณสมบัติที่เป็นอิสระ

หมายเหตุ 1:มันยังทำงานร่วมกับ Fedora 16 ฉันเพิ่งทดสอบ
หมายเหตุ 2:ดูเหมือนว่าวิธีการทำงานเมื่อคุณวางไฟล์ iso ลงในพาร์ติชั่น fat หรือ ext4


กำลังบูต grml iso ขนาดเล็กจาก grub2

Grmlสามารถบู๊ตได้จาก grub2 โปรดทราบว่ามันใช้findisoตัวเลือกแทนiso-scan/filenameตัวเลือกที่บ่งชี้ว่าการบูตจาก iso ถูกนำไปใช้เป็นตัวเลือกที่แตกต่างกันในการกระจายที่แตกต่าง

(เมนูผู้เข้าร่วม "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 = ปิดการใช้งาน lang = us vga = 791 boot = การตั้งค่าสดแบบไม่ระบุชื่อ noprompt -
  initrd (loop) /boot/grmlsmall/initrd.gz
}

หน้านี้มีตัวอย่างของการบูท distros อื่น ๆ จาก Grub2


การบูต openSUSE 13.1 สดจาก iso

นี่เป็นทางออกเดียวที่ทำงานได้ (คนอื่น ๆ ทั้งหมดให้ฉันล้มเหลวในการค้นหาตัวระบุ MBRและหยุดทำงาน) ในตัวอย่างนี้มาตรฐาน ISO /home/username/จะอยู่ที่พาร์ทิชันที่สามดิสก์แรกในไดเรกทอรี

menuentry "openSUSE_13.1_GNOME_Live" {
  load_video
  insmod gzio
  insmod part_msdos
  insmod ext2
  set root = '(hd0, msdos3)'
  set isofrom_device = '/ dev / sda3'
  set isofrom_system = '/ home / ชื่อผู้ใช้ / openSUSE-13.1-GNOME-Live-i686.iso'
  set loader = '/ boot / i386 / ตัวโหลด'
  loopback loop $ isofrom_system
  linux (loop) $ loader / linux isofrom_device = $ isofrom_device isofrom_system = $ isofrom_system ramdisk_size = 512000 ramdisk_blocksize = 4096 ro สาดเงียบ $ vt_handoff preloadlog = / dev / null showopts
  เริ่มต้น (วน) $ loader / initrd
}

มาเป็นความคิดเห็นของ janeppo


Fedora 17 Gnome Live Iso

นี่คือรายการบูตเมนู grub.cfg สำหรับ Fedora 17. iso จะอยู่ที่พาร์ติชันที่สามของดิสก์แรก ชื่อไฟล์ก็เปลี่ยนไปเช่นกัน

เมนูผู้เข้าร่วม "Fedora Live" {
    loopback loop (hd0,3) /fedora.iso
    linux (loop) / EFI / BOOT / vmlinuz0 root = live: /fedora.iso rootfstype = auto ro liveimg เงียบ rgb rd.luks = 0 rd.md = 0
    initrd (hd0,3) / initrd-fromiso
}

Last Note:ฉันคิดว่าคำตอบนี้เป็นตัวอย่าง ไม่ควรทำอย่างละเอียดมากขึ้นด้วยตัวอย่าง


ฉันลองใช้รายการเหนือสำหรับ fedora 15 แต่มันไม่ทำงาน มีเดาไหม
ราหุล Virpara

รายการของฉันดูเหมือนpastebin.com/1ksBVu21
Rahul Virpara

3

นี่คือไฟล์ ISO grub2ฉันคิดออกบูตใช้

ฉันบูทระบบ ISO ได้สำเร็จแล้ว

  • อูบุนตูที่แม่นยำ Pangolin ISO 12.04
  • SystemRescueCd
  • เครื่องมือตรวจสอบฮาร์ดแวร์บูต
  • ฟรี Dos
  • แผ่นซีดีบูตของ Hiren
  • Ultimate Boot CD

ฉันพบว่าหากคุณต้องการบูต ISO อื่น ๆ เช่น Boot CD ของ Hiren คุณสามารถใช้MEMDISKยูทิลิตี้เป็นเคอร์เนลได้

จะรับ MEMDISK ได้ที่ไหน

ดาวน์โหลด syslinux จากที่นี่ ย้ายไปยังเดสก์ท็อป

จะทำให้มันทำงานอย่างไร

cd ~/Desktop/
tar xvif syslinux-4.05.tar.xz 
cd syslinux-4.05/memdisk/
sudo mkdir /customboot
sudo mv memdisk /customboot/
cd /customboot/
sudo mv memdisk memdisk4.05
gksudo gedit /etc/grub.d/40_custom 

จากนั้นวางรายการด้านล่างใน gedit set isofile="/path/to/iso-file.iso"คุณจะต้องเปลี่ยน

update-grubปัญหาแล้ว รีบูตและตรวจสอบ

รายการของฉันใน40_customไฟล์

menuentry "Ubuntu Natty Narwhal 11.04 ISO" {
    set isofile="/OS/ubuntu-11.04-desktop-i386.iso"
    loopback loop (hd0,6)$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject --
    initrd (loop)/casper/initrd.lz
}
menuentry "Ubuntu Precise Pangolin 12.04 ISO" {
    set isofile="/OS/ubuntu-12.04-desktop-i386.iso"
    loopback loop (hd0,6)$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject --
    initrd (loop)/casper/initrd.lz
}
menuentry "SystemRescueCd" {
    set isofile="/OS/systemrescuecd-x86-2.7.0.iso"
    loopback loop (hd0,6)$isofile
    linux (loop)/isolinux/rescuecd isoloop=$isofile setkmap=us docache dostartx
    initrd (loop)/isolinux/initram.igz
}
menuentry "Boot Hardware Detection Tool from iso using memdisk 4.05" {
    linux16 /customboot/memdisk4.05 iso
    initrd16 /customboot/hdt.iso
}
menuentry "Free Dos from iso using memdisk 4.05" {
    set isofile="/OS/fdbasecd.iso"
    linux16 /customboot/memdisk4.05 iso
    initrd16 (hd0,6)$isofile
}
menuentry "Hiren's boot CD using memdisk 4.05" {
    set isofile="/OS/Hiren's.BootCD.10.1.iso"
    linux16 /customboot/memdisk4.05 iso
    initrd16 (hd0,6)$isofile
}
menuentry "Ultimate Boot CD iso using memdisk 4.05" {
    set isofile="/OS/ubcd511.iso"
    linux16 /customboot/memdisk4.05 iso
    initrd16 (hd0,6)$isofile
}

ISO ทั้งหมดจะถูกเก็บไว้ในsda6/OSและMEMDISKถูกเก็บไว้ในพาร์ติชันที่ติดตั้งอูบุนตู (ในรูท) และเปลี่ยนชื่อเป็นmemdisk4.05พา ธ ดังนั้น/customboot/memdisk4.05

หมายเหตุ: fedora ไม่ทำงานกับคำตอบอื่น ๆ ที่ได้รับ ยังคงพยายามบูต fedora :(


หมายเหตุเมื่อโหลดไฟล์ ISO ด้วย memdisk และด้วงinitrd16ไฟล์ ISO จะต้องมีขนาดเล็กกว่า 462 MB ข้อความผิดพลาดที่เกี่ยวข้อง: ด้วง: ข้อผิดพลาด: ไม่สามารถหาเป้าหมายของหน่วยความจำที่เหมาะสม , memdisk: MEMDISK: ไม่มีภาพ ramdisk ระบุ ดูรายละเอียดเพิ่มเติมที่นี่และที่นี่
gregn3

2

โชคไม่ดีที่คำแนะนำเหล่านี้ไม่ได้ช่วยฉัน ดังนั้นฉันได้พบวิธีและชอบที่จะแบ่งปันกับคุณ ในการบู๊ต centos เช่นคุณต้องการให้ใส่อิมเมจ iso ลงในสารบบ หาก root dir ของคุณติดตั้งบน / dev / sda1 ให้สร้าง dir / iso และใส่ iso ไว้ที่นั่น ไปที่ด้วงคอนโซล (เมื่อเมนูด้วงปรากฏขึ้นให้กด 'c')

เลือกอุปกรณ์ที่เหมาะสม - hd0 หมายถึง sda คุณต้องเลือกหนึ่งที่คุณตั้งอยู่ iso

loopback loop (hd0,msdos1)/iso/Redhat.iso 
linux (loop)/isolinux/vmlinuz inst.repo=hd:sda1:/iso/Redhat.iso 
initrd (loop)/isolinux/initrd.img 
boot

และบูตมัน!


1

สิ่งที่คุณถามอยู่นอกหัวข้อที่นี่เนื่องจากต้องมีความรู้เกี่ยวกับระบบอื่น ๆ เพื่อให้สามารถตั้งค่ารายการด้วงเพื่อบู๊ตได้อย่างถูกต้อง ใช่มันเป็นไปได้

อย่างไรก็ตาม ... คุณจะพบว่า Multi System เป็นเครื่องมือที่เหมาะสมสำหรับการมี ISO distro ที่แตกต่างกันมากมายในไดรฟ์ USB ขนาดใหญ่ ฉันคิดว่ามันใช้งานได้ดีมาก แต่คุณจะต้องติดตั้งจาก PPA:

http://www.pendrivelinux.com/multiboot-create-a-multiboot-usb-from-linux/

ฉันใช้มันเพื่อให้สามารถมี GUSED LiveUSB และเครื่องมืออื่น ๆ รวมถึง Ubuntu บนเพนไดรฟ์เดียวสำหรับ InstallFests เป็นโบนัสที่อนุญาตให้ใช้หน้าจอสแปลชที่กำหนดเองสำหรับเมนูซึ่งฉันได้ตั้งโลโก้สำหรับทีม LoCo ของออสเตรเลีย

คริส

Multisystem ใช้ Grub2 เพื่อทำสิ่งที่คุณต้องการ เนื่องจากกระทู้นอกหัวข้อนี้ได้รับอนุญาตหรืออย่างน้อยก็ยอมรับว่านี่คือรายการ Fedora จาก Multisystem Grub2 ของฉัน:

 menuentry "Fedora-15-i686-Live-Desktop.iso" {
 linux /fedora1/isolinux/vmlinuz0 live_locale=en_AU.UTF-8 live_keytable=us live_dir=/fedora1 root=UUID=493A-D2EF rootfstype=auto ro liveimg quiet rhgb rd_NO_LUKS rd_NO_MD noiswmd
 initrd /fedora1/isolinux/initrd0.img
 }

โปรดทราบว่าคุณไม่สามารถบูตได้โดยตรงจาก ISO เนื่องจากไม่รองรับเช่นเดียวกับ Distros ที่ใช้ Debian คุณจะต้องมีไฟล์ที่แตกจาก ISO ที่มีอยู่ในฮาร์ดไดรฟ์ดังต่อไปนี้:

chris@chris-office:/media/RED8/fedora1$ ls -l
total 563972
drwx------ 2 chris chris      4096 Feb 11  2011 isolinux
-rw-r--r-- 1 chris chris     43503 May 14  2011 livecd-iso-to-disk
-r--r--r-- 1 chris chris      8192 May 14  2011 osmin.img
-r--r--r-- 1 chris chris 577449984 May 14  2011 squashfs.img

แน่นอนคุณจะต้องเปลี่ยนตำแหน่งของไดเรกทอรี / fedora / และ UUID ของพาร์ติชั่นที่คุณกำลังบูท Fedora อยู่ คุณควรเปลี่ยนโหมดเมานต์จาก ro เป็น rw เช่นเดียวกับสิ่งอื่นที่เหมาะสมเช่นการอนุญาตใน squashfs

คุณยังสามารถตั้งค่าดิสก์การคงอยู่เสมือนจริงได้แม้ว่าฉันจะเห็นเหตุผลว่าทำไมคุณไม่สามารถเมาต์พาร์ติชันปกติ / โฮม อีกครั้งฉันสามารถแนะนำให้คุณติดตั้ง Multidisk และกำหนดค่าด้วยตัวคุณเองเพื่อเรียนรู้วิธีการทำ

คริส


คำถามคือวิธีการสร้างรายการในที่มีอยู่GRUB2ไม่ใช่วิธีการทำ pendrive ที่บู๊ตได้หรือฮาร์ดดิสก์ภายนอกที่มี distros ต่างกัน BTW มันต้องมีความรู้ที่ดีขึ้นของGRUB2กว่า distros อื่น ๆ เพื่อให้มันเป็นจริงคำถามที่เกี่ยวข้องกับGRUB(เพราะ distro บางส่วนยังคงใช้ด้วง) GRUB2หรือ
ราหุล Virpara

1
ฉันจะบอกว่าการทำรายการด้วงสำหรับ distros เช่น Fedora, Centos และ Suse นั้นเกี่ยวข้องกับ distros เหล่านั้นมากกว่าที่จะด้วงและแน่นอนไม่มีอะไรเกี่ยวข้องกับ Ubuntu
fabricator4

1
@virpara: คุณไม่ได้ระบุว่าคุณกำลังบูท ISO ออกจากฮาร์ดไดรฟ์ - เหตุผลที่เหมาะสมที่สุดในการที่จะบู๊ต LiveISOs ต่าง ๆ ก็คือมีอุปกรณ์ติดตั้งที่ต้องทำทุกอย่าง เราไม่รังเกียจผู้อ่านหรือผู้เชี่ยวชาญเกี่ยวกับสิ่งรบกวนอื่น ๆ สุดท้ายถ้าคุณติดตั้งและใช้ MultiSystem เพื่อสร้าง pendrive ด้วยวิธีนี้มันจะแสดงให้คุณเห็นว่าต้องทำอย่างไร - ใช้ grub2 เพื่อให้ได้ผลลัพธ์ที่คุณต้องการ
fabricator4

1

ดูเหมือนว่า 13.04 ต้องการไวยากรณ์ที่แตกต่างเพื่อให้บรรลุนี้ มีใครประสบความสำเร็จในการบูท ubuntu-13.04-desktop-amd64.iso จากฟิสิคัลดิสก์และอยากจะแชร์ไวยากรณ์ด้วงหรือไม่?

แก้ไข: ตอบคำถามของฉันเอง จำเป็นต้องเปลี่ยนชื่อ vmlinuz เป็น mvlinuz.efi และใช้งานได้

menuentry "Ubuntu-13.04-desktop-amd64.iso" --class ubuntu {
set isofile="/archives/ubuntu-13.04-desktop-amd64.iso"
loopback loop (hd1,6)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noeject noprompt --
initrd (loop)/casper/initrd.lz
}

1

ฉันพบว่าการใช้ลูปแบ็คของ grub2 ที่ประเมินค่าไม่ได้สำหรับการทดสอบไอโซใหม่โดยไม่ต้องใช้ก้าน usb หรือเขียนลงบนแผ่นซีดี มีข้อบกพร่องที่ยื่นต่อ Fedora เพื่อทำสิ่งที่คล้ายกัน การติดตามสถานะปัจจุบันจะใช้เวลานาน


0

ลองใช้ Multisystem ติดตั้ง liveCD ที่คุณต้องการแล้วคัดลอกไฟล์ไปยัง / และรวม grub.cfgs! (ฉันอยากรู้ว่าจริง ๆ แล้วมันจะทำงาน!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.