问题描述
有没有办法做到这一点?
最佳思路
这可能比您从网络上的所有详细解释中获得的印象要容易得多。我刚刚在 Ubuntu 12.04 上执行了以下操作以启动 FreeDOS .iso 以进行固件更新
-
安装 grub-imageboot
-
将您的 .iso 文件复制到 /boot/images/
-
运行 update-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 映像。
次佳思路
我假设您想在 GRUB 菜单中添加一个 .iso 条目并启动它?
我在 Ubuntu 论坛上找到了 this info
第三种思路
我来到这里是因为我厌倦了刻录无数可引导的 ISO 9660 映像,因此想使用 GRUB 2 引导 FreeDOS 来更新希捷硬盘的固件/微代码。作为 mivk 答案的补充或替代(使用 syslinux 的 memdisk
),以下是我为利用 GRUB 2 的强大功能所做的工作:
-
安装 syslinux-common 包(用于在其中使用
memdisk
;grub-imageboot 是一个非必需的挂钩包) -
按 ‘c’ 键(命令助记键)激活 GRUB 2 内置 mini-shell(或者更准确地说,最小的 BASH-like 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 的系统时都费心调整和更新那些 GRUB 2 的配置现场CD。
目前,可以将这 4 行命令用作 GRUB 2 的 mini-shell 中的通用模式,即 loopback-linux-initrd-boot 序列加上一些传递给给定内核的参数,例如,引导许多流行的尽可能使用 Linux ISO 映像(在这种情况下,系统救援 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 来说不是强制性的,当您打算安装 Linux 发行版(例如 Debian 衍生版)而不浪费光盘时。