如何从非Ubuntu动态ISO映像(如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
}

但它仅适用于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:如何链接grubsyslinuxgrub2

Edit3:我想在没有任何可移动设备的情况下引导其他实时图像,grub2因此需要特定于的菜单项grub2


1
这不是题外话,unix和linux堆栈交换仍然更好unix.stackexchange.com
Tachyons,

@Rinzwind怎么样?
快球

2
问题是关于fedora,centOS和opensuse。与Ubuntu无关。@abcd
Rinzwind

2
顺便说一句:Fedora无法做到这一点。CentOS基本上是Fedora。dracut有一个针对它的功能请求,为此需要对其进行修补。您可以在bugzilla.redhat.com上找到此修补程序
Rinzwind 2012年

Answers:


19

从iso引导是发行版必须支持的功能,并且该iso-scan/filename=选项在Fedora或其他版本中不起作用。它们可能具有此功能的其他内核选项,或者可能根本不支持该功能。

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

从GRUB引导Fedora 15 DVD ISO

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

来源:此页面

您可以在Google中搜索其他发行版,因为它不是发行版无关的功能。

注意1:它也与Fedora 16一起使用,我刚刚对其进行了测试。
注意2:将iso文件放在fat或ext4分区中时,该方法似乎起作用。


从GRUB2启动GRML Small ISO

Grml也可以从grub2启动。请注意,它使用findiso选项而不是iso-scan/filename选项,表示从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 =关机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” {
  load_video
  印斯莫·吉齐奥
  insmod part_msdos
  insmod ext2
  设置root ='(hd0,msdos3)'
  设置isofrom_device ='/ dev / sda3'
  设置isofrom_system ='/ home / username / openSUSE-13.1-GNOME-Live-i686.iso'
  设置loader ='/ 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
}

最后说明:我认为这个答案可以作为一个例子。不应通过示例对其进行详细说明。


我尝试了上面的fedora 15条目,但没有用。有猜到吗?
拉胡尔·维尔帕拉

我的输入内容如下:pastebin.com/1ksBVu21
Rahul Virpara 2012年

3

这是我想使用引导的iso文件grub2

我已成功启动以下ISO

  • Ubuntu Precise穿山甲12.04 ISO
  • SystemRescueCd
  • 启动硬件检测工具
  • 自由行动
  • Hiren的启动CD
  • 终极启动CD

我发现,如果您要引导其他ISO(例如Hiren's Boot 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 :(。


请注意,使用memdisk和grub加载ISO文件时initrd16,ISO文件必须小于462 MB。相关错误消息:grub:错误:找不到合适的内存目标,memdisk:MEMDISK:未指定ramdisk映像。有关更多详细信息,请参见此处此处
gregn3

2

不幸的是,这些建议都没有帮助我。所以我找到了方法,很想与您分享。例如,要启动centos,您需要:将iso image放在目录中。如果您的根目录挂载在/ 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

并启动它!


1

您要问的是这里的主题,因为它需要了解其他系统才能设置grub条目以正确引导它们。对的,这是可能的。

但是,您会发现Multi System是一款功能强大的工具,可以在一个大型USB驱动器上具有非常不同的发行版ISO。我发现它确实工作得很好,但是您必须从PPA安装它:

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

我使用它,以便可以在一个PenDrive上安装Gparted LiveUSB和其他工具以及Ubuntu工具,用于InstallFests。作为奖励,它允许菜单使用自定义启动屏幕,我已将其设置为澳大利亚LoCo团队的徽标。

克里斯

如前所述,Multisystem使用Grub2做您想要的事情。由于允许或至少允许使用此主题外的线程,因此,这是我的Multisystem Grub2中的Fedora条目:

 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引导,因为基于Debian的发行版不支持ISO。您将需要从硬盘驱动器上获得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 /目录的位置以及正在引导Fedora的分区的UUID。您可能还应该将安装模式从ro更改为rw,以及其他适当的更改,例如squashfs的权限。

您也许还可以设置一个虚拟的持久性磁盘,尽管我看不出为什么您无法挂载普通的/ home分区。同样,我只能建议您安装Multidisk并自行进行配置以了解如何进行。

克里斯


问题是如何在现有目录中创建条目,GRUB2而不是如何使可启动的Pendrive或具有不同发行版的外部硬盘。顺便说一句,它需要GRUB2比其他发行版更好的知识,因此它实际上是有关的问题GRUB(因为某些发行版仍在使用GRUB)或GRUB2
拉胡尔·维尔帕拉

1
我想说,为Fedora,Centos和Suse等发行版创建grub条目与这些发行版之间的关系要比与grub更为相关,而且与Ubuntu毫无关系。
fabricator4

1
@virpara:您还没有指定要从硬盘驱动器启动ISO-想要引导各种LiveISO的最合理的原因是拥有一切安装设备。我们不是读者,也不是其他发行版的专家。最后,如果您实际安装并使用MultiSystem以这种方式制作笔式驱动器,它将向您展示如何进行操作-它使用grub2获得所需的结果。
fabricator4

1

似乎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
}


0

尝试使用Multisystem,安装所需的liveCD,然后将文件复制到/中,然后合并grub.cfgs!(我真的很好奇它是否行得通!)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.