有办法吗?
答案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 答案(使用memdisk
syslinux)的补充或替代,以下是我为利用 GRUB 2 的强大功能所做的事情:
- 安装syslinux 通用包(用于
memdisk
其中使用;grub-imageboot 是非必需的挂钩包) - 按“c”键(命令的助记符)激活 GRUB 2 内置迷你 shell 的命令提示符(或者更准确地说,是类似 BASH 的最小 shell)
- 在 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 文件的分区相对应的条目。