问题描述
我发现可以使用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
}
但它仅适用于ubuntu或其衍生版本。如果我要引导其他实时映像(例如fedora,cent,opensuse等),应该如何编写?
编辑:我发现了其他条目,但所有这些条目可能都是基于debian的。
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:如何从grub2
链式加载grub
和syslinux
?
Edit3:我想在没有任何可移动设备的情况下启动其他实时图像,并使用grub2
,因此需要特定于grub2
的菜单项。
最佳思路
从iso引导是发行版必须支持的功能,并且iso-scan/filename=
选项在Fedora或其他版本中不起作用。它们可能具有此功能的其他内核选项,或者可能根本不支持该功能。
我找到了一种启动Fedora 16 DVD的方法,如下所示。
从GRUB引导Fedora 15 DVD ISO
menuentry "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 quiet
initrd (loop)/isolinux/initrd.img
}
假定您的iso文件位于内部硬盘第二个分区的根目录下。
您可以在Google中搜索其他发行版,因为它不是distro-independent功能。
注意1:它也与Fedora 16一起使用,我刚刚对其进行了测试。注意2:将iso文件放在fat或ext4分区中时,该方法似乎起作用。
从GRUB2引导GRML Small ISO
Grml也可以从grub2引导。请注意,它使用findiso
选项而不是iso-scan/filename
选项,这表明从iso引导在不同的发行版中作为不同的选项实现。
(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
}
This page具有从Grub2引导其他发行版的几个示例。
从iso引导openSUSE 13.1 Live
这是唯一有效的解决方案(所有其他解决方案都给我提供了无法找到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/username/openSUSE-13.1-GNOME-Live-i686.iso'
set loader='/boot/i386/loader'
loopback loop $isofrom_system
linux (loop)$loader/linux isofrom_device=$isofrom_device isofrom_system=$isofrom_system ramdisk_size=512000 ramdisk_blocksize=4096 ro quiet splash $vt_handoff preloadlog=/dev/null showopts
initrd (loop)$loader/initrd
}
Fedora 17 Gnome Live Iso
这是Fedora 17的引导菜单grub.cfg条目。iso被放置在第一个磁盘的第三个分区中。文件名也被更改。
menuentry "Fedora Live" {
loopback loop (hd0,3)/fedora.iso
linux (loop)/EFI/BOOT/vmlinuz0 root=live:/fedora.iso rootfstype=auto ro liveimg quiet rhgb rd.luks=0 rd.md=0
initrd (hd0,3)/initrd-fromiso
}
最后说明:我认为这个答案可以作为一个例子。不应通过示例对其进行详细说明。
次佳思路
这是我确定要使用grub2
引导的iso文件。
我已成功启动以下ISO
-
Ubuntu Precise穿山甲12.04 ISO
-
SystemRescueCd
-
启动硬件检测工具
-
自由行动
-
Hiren的启动CD
-
终极启动CD
我发现,如果要引导其他ISO(例如Hiren’s Boot CD等),则可以使用MEMDISK
实用程序作为内核。
在哪里获取MEMDISK?
从here下载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
保留在安装了ubuntu的分区上(在根目录中)并重命名为memdisk4.05
,因此其路径为/customboot/memdisk4.05
注意:fedora无法与给出的其他答案一起使用。仍在尝试启动fedora :(。