如何从非 Ubuntu 实时 ISO 映像(例如 Fedora 或 CentOS)启动?

如何从非 Ubuntu 实时 ISO 映像(例如 Fedora 或 CentOS)启动?

我发现可以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
}

编辑2:如何进行链式加载grubsyslinux来自grub2

编辑3:我想在没有任何可移动设备的情况下启动其他实时图像并使用,grub2因此需要特定于的菜单项grub2

答案1

从 iso 启动是发行版必须支持的功能,该iso-scan/filename=选项在 Fedora 或其他发行版中不起作用。这些发行版可能有其他内核选项来实现此功能,或者根本不支持此功能。

我找到了一种启动 Fedora 16 DVD 的方法,如下所示。

从 grub 启动 Fedora 15 DVD iso

菜单项“Fedora 15 (DVD)”{
 insmod 回送
 修改 iso9660
 设置 isofile="/Fedora-15-x86_64-DVD.iso"
 环回循环(hd0,2)$isofile
 linux (循环)/isolinux/vmlinuz rootfstype=auto root=live:UUID=:$isofile ro quiet
 initrd(循环)/isolinux/initrd.img
}

它假定您的 iso 文件位于内部硬盘第二个分区的根目录。

来源:本页

您可以在谷歌中搜索其他发行版,因为它不是一个独立于发行版的功能。

注1:它也适用于 Fedora 16,我刚刚测试过它。
笔记2:当您将 iso 文件放在 fat 或 ext4 分区时,该方法似乎有效。


从 grub2 启动 grml 小 iso

格鲁姆也可以从 grub2 启动。注意这里用的是findisooption 而不是iso-scan/filenameoption,表示从 iso 启动在不同的发行版中是作为不同的选项实现的。

(菜单项“Grml small 2009.10”{
  环回循环 /boot/iso/grml-small_2009.10.iso
  linux (循环)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
  initrd(循环)/boot/grmlsmall/initrd.gz
}

这一页有几个其他发行版从 Grub2 启动的示例。


从 iso 启动 openSUSE 13.1 Live

这是唯一有效的解决方案(其他所有人都给了我一个无法找到 MBR 标识符并停止)。在此示例中,iso 放置在第一个磁盘的第三个分区中的目录中/home/username/

菜单项“openSUSE_13.1_GNOME_Live”{
  加载视频
  安装gzio
  修改 part_msdos
  修改 ext2
  设置根目录='(hd0,msdos3)'
  设置 isofrom_device='/dev/sda3'
  设置 isofrom_system='/home/用户名/openSUSE-13.1-GNOME-Live-i686.iso'
  设置加载程序='/boot/i386/loader'
  环回循环$isofrom_system
  linux (循环)$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(循环)$loader/initrd
}

资料来源janeppo 的评论


Fedora 17 Gnome Live Iso

这是 Fedora 17 的启动菜单 grub.cfg 条目。iso 放在第一个磁盘的第三个分区。文件名也已更改。

菜单项“Fedora Live”{
    环回循环 (hd0,3)/fedora.iso
    linux (循环)/EFI/BOOT/vmlinuz0 root=live:/fedora.iso rootfstype=auto ro liveimg quiet rhgb rd.luks=0 rd.md=0
    initrd (hd0,3)/initrd-fromiso
}

最后说明:我认为这个答案可以作为一个例子。不需要再举例子了。

答案2

以下是我找到的用于启动的 iso 文件grub2

我已经成功启动了以下 ISO

  • Ubuntu Precise Pangolin 12.04 ISO
  • 系统救援光盘
  • 启动硬件检测工具
  • 免费
  • Hiren 的启动 CD
  • 终极启动 CD

我发现如果您想启动其他 ISO(如 Hiren 的启动 CD 等),您可以使用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/OSMEMDISK安装 ubuntu 的分区上(在根目录中),并重命名为,memdisk4.05因此它的路径是/customboot/memdisk4.05

笔记 : fedora 与给出的其他答案不兼容。仍在尝试启动 fedora :(。

答案3

不幸的是,这些建议都对我没有帮助。所以我找到了方法,并愿意与你分享。例如,要启动 centos,您需要:将 iso 映像放在目录中。如果您的根目录安装在 /dev/sda1 上,则创建目录 /iso 并将 iso 放在那里。转到 grub 控制台(当出现菜单 grub 时按“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

然后启动它!

答案4

似乎 13.04 需要不同的语法来实现这一点。有人从物理磁盘成功启动了 ubuntu-13.04-desktop-amd64.iso 并愿意分享 grub 语法吗?

编辑:回答了我自己的问题。需要将 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
}

相关内容