如何从 GRUB2 中的 .iso 文件启动?

如何从 GRUB2 中的 .iso 文件启动?

有办法吗?

答案1

这可能比你从网上所有详细解释中得到的印象要容易得多。我刚刚在 Ubuntu 12.04 上执行以下操作来启动 FreeDOS .iso 进行固件更新

  • 安装 grub-imageboot
  • 将您的 .iso 文件复制到 /boot/images/
  • 运行更新-grub2

或者复制/粘贴这些:

sudo -s
apt-get install grub-imageboot
mkdir /boot/images/
cp $YOUR_ISO_FILE.iso /boot/images/

update-grub2

就是这样。

有时,在运行 update-grub2 之前可能还需要执行 2 个步骤:

如果您以前从未这样做过,您需要编辑 /etc/default/grub,以便在启动时看到 grub 菜单:

## To show the menu, disable the hidden_timeout, and set a timeout
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

对于某些 .iso 映像,您可能需要在 /etc/default/grub-imageboot 中添加此选项:(我的 FreeDOS .iso 需要它)

ISOOPTS="iso raw"

如果您确实编辑了其中一个配置文件,则需要update-grub2再次运行。

更新:以下是“dma_k”请求的结果菜单项

menuentry "Bootable ISO Image: SV100S2_64_128_120229" {
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos6)'
    search --no-floppy --fs-uuid --set=root 6ca082d0-63d0-48c3-9e5f-2ce5d7a74fe4
    linux16 /boot/memdisk iso raw
    initrd16 /boot/images/SV100S2_64_128_120229.iso
}

这是用于带有某些固件更新或类似内容的 FreeDOS 映像。

答案2

我假设您想向 GRUB 菜单添加 .iso 条目并启动它?

我发现此信息在 Ubuntu 论坛上

答案3

我之所以来到这里,是因为我厌倦了刻录无数可启动的 ISO 9660 映像,因此想使用 GRUB 2 来引导 FreeDOS 映像,以更新 Seagate HDD 的固件/微码。作为 mivk 答案(使用memdisksyslinux)的补充或替代,以下是我为利用 GRUB 2 的强大功能所做的事情:

  1. 安装syslinux 通用包(用于memdisk其中使用;grub-imageboot 是非必需的挂钩包)
  2. 按“c”键(命令的助记符)激活 GRUB 2 内置迷你 shell 的命令提示符(或者更准确地说,是类似 BASH 的最小 shell)
  3. 在 GRUB 2 的 mini-shell 中发出 3 行命令:
   linux16 (hd0,gpt2)/usr/lib/syslinux/memdisk iso raw
   initrd16 (hd0,gpt3)/myUserAccount/download/Barracuda-ALL-GRCC4H.iso
   boot
   # where Barracuda-ALL-GRCC4H.iso is a FreeDOS-based ISO 9660 image, and 
   # the mathematical 2-tuples or ordered pairs, (hd0,gpt2) and (hd0,gpt3), 
   # are GRUB 2's respective device notations for my rootfs partition 
   # (e.g., /dev/sda2) and home partition (e.g., /dev/sda3).
   # NOTE: This procedure also applies to Seagate's SeaTools (based on 
   #       FreeDOS as well); just substitute the file SeaToolsDOS223ALL.iso 
   #       for Barracuda-ALL-GRCC4H.iso.

有关 syslinux 的信息memdisk位于http://www.syslinux.org/wiki/index.php/MEMDISK

通过直接在 mini-shell 中操作命令,这个过程比大多数上述方法更灵活、更简单,因为您不必在每次想要尝试不同的 Linux 发行版或基于 BSD 的 live CD 时费心调整和更新 GRUB 2 的配置。

目前,这 4 行命令可以用作 GRUB 2 迷你 shell 中的通用模式,即环回-linux-initrd-boot序列加上传递给给定内核的一些参数,例如,引导尽可能多的流行 Linux ISO 映像(在本例中使用 System Rescue CD 的 3 个内核命令行参数):

   loopback lb (hd0,gpt3)/myUserAccount/download/systemrescuecd-x86-3.7.0.iso
   linux (lb)/isolinux/rescue64 isoloop=systemrescuecd-x86-3.7.0.iso setkmap=us docache
   initrd (lb)/isolinux/initram.igz
   boot

注意:loopback严格来说,当您想安装 Linux 发行版(例如 Debian 衍生产品)而不浪费光盘时,通用模式的部分对于 Linux 来说并不是强制性的。

答案4

正如马克·鲁尼所说,你可以找到一个Ubuntu 论坛上的精彩指南

这将允许您从 ISO 文件启动,但前提是 ISO 支持此功能。(所有最近的 Ubuntu 版本都应如此,许多其他发行版也应如此)。

如果您计划从实时 ISO 安装,则应将文件放在与要安装到的分区不同的分区上(因为您无法写入要运行的分区)。安装程序很可能会报错。您需要做的是手动编辑/etc/mtab并删除与包含 ISO 文件的分区相对应的条目。

相关内容