当前位置: 首页>>技术教程>>正文


如何从非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
}

Edit2:如何从grub2链式加载grubsyslinux

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文件位于内部硬盘第二个分区的根目录下。

source: this page

您可以在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
}

源是janeppo’s comment


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 :(。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11826.html,未经允许,请勿转载。