我有一堆实时 ISO 文件,如GParted、CloneZilla、Boot-Repair、Ubuntu 14.04 32 位…… 下载/opt
到我的旧 BIOS 机器上,我曾经能够将它们添加到 grub 菜单并启动它们. :-)
我现在有一台 UEFI 机器,我能找到的所有信息都是针对 BIOS 机器的。
从 grub 引导这些 ISO 文件的步骤是什么?
我只是厌倦了一直将这些“刻录”到USB记忆棒上,因为我永远找不到我需要的记忆棒,而我的电脑本身在我周围的混乱中更难松动...... ) :-(
grub 2.04 中有一个错误,因此请确保您拥有先前或更高版本。
嗯,将 ISO 文件添加到 grub 的基本原理对于 UEFI 和 BIOS 机器是相同的:编辑
/etc/grub.d/40_custom
并添加一个menuentry
项目(本示例中使用 GParted)到文件底部:现在我们要添加一个变量,其中包含我们存储 ISO 的目录(到目前为止,一切都很好:与 BIOS 机器没有区别):
我
/opt
用来存储这些,因为我不喜欢在我的机器的根目录中创建目录,并且根据Linux 文件系统层次结构,无论如何都应该驻留可选软件。在我们添加
loopback
变量之前,我们需要找出文件存储在哪个硬盘上,所以我们做了一个:df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
并且我的机器上的输出是:/dev/sdb2
。但是grub 使用 (
hdX,Y
) 表示法,这就是 UEFI 和 BIOS 机器之间的区别所在!所以现在重新启动您的机器,进入 grub 菜单并按C: 这将带您进入 grub 命令提示符,其中包含与您习惯不同的命令,但您唯一需要的是:ls
。在我的机器上,输出是:
嗯?4个驱动?我只有3个!而且它不在
(hd1,4)
BIOS 中,而是(hd1,gpt3)
在 UEFI 中,并且(hd0)
根本没有分区!好吧,显然当 NVRAM 的一部分用作存储并显示时,
(hd0)
您需要从 1 开始对驱动器进行编号! 尽管您在启动 ISO 文件时找到的所有信息都表明您必须从 0 开始编号(在 BIOS 机器上总是如此,但在某些 UEFI 机器上则不一定如此!)因此,我机器上的 ISO 文件的值
loopback
变为(第二个驱动器,第二个分区):(hd2,gpt2)$GPartedISOFile
/dev/sdb2
hd2
gpt2
另一个区别是BIOS 机器上的 and 在 UEFI 机器上被调用
linux
,这给了我们最终的结果:initrd
linuxefi
initrdefi
所以现在保存该文件,并使用以下命令更新 grub:
完成上述所有操作后,重新启动,进入 grub 菜单,选择
GParted Live ISO
,您现在可以轻松启动您的 ISO,而无需再次寻找 USB 记忆棒!:-)
CloneZilla Live 示例(针对此问题)
另一种方法是像这样向 40_custom 添加一个配置文件:
我这样做是因为当我更新 ISO 时,我总是忘记运行
sudo update-grub
. 上面的条目永远不必更改,我可以编辑 livecdimage.cfg,它与任何 40_custom 具有相同的格式但没有标题行,并且位于我的 ISO 分区的 /ISO 文件夹中。我确实将 toram 添加为另一个引导参数,并在具有 Nvidia 的系统上添加 nomodeset 引导参数。但是还是经常要卸载/isodevice。
无法卸载 isodevice 卸载 ISO https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216
这是我的 livecdimage.cfg 文件的一部分
mkusb 多启动黑客
Mkusb 为自定义启动驱动器项目奠定了良好的基础,因为它具有 BIOS 和 UEFI 的能力。
这个 hack 引导多个 ISO 文件,包括 Windows 安装程序,并有一个 grub2 菜单。
大多数操作系统的 Grub2 菜单条目都可以使用 Google 搜索获得,并且超出了此答案的范围。
创建持久 USB 驱动器时使用 mkusb 默认值。
如果有疑问,请使用 mkusb 持久性默认值,分区大小可以稍后调整,但需要时间。
安装后的 DUS 控制台。
GParted 在分区修改之前。
修改后的 Gparted - 用 FAT32 分区覆盖 sdb4、ISO9660 OS 分区和 sdb5、ext2 casper-rw 分区,并使用 FAT32 分区来存储持久性文件。
持久性分区 - 为每个操作系统创建一个唯一名称的文件夹(需要持久性)
持久性文件夹 - 将 casper-rw 文件和可选的 home-rw 文件添加到每个持久性文件夹。可以通过重命名 casper-rw 文件来制作 home-rw 文件。home-rw 文件就像完全安装时的单独主分区,可以在版本升级后重用。
在 NTFS usbdata 分区上为 ISO 文件创建一个文件夹。
将一些 ISO 添加到 ISO 文件夹。
grub.cfg 位置
编辑 grub.cfg 以循环挂载 ISO 文件。包括:
persistent persistent-path=/<persistent-folder-name>/
如果你想要持久性。将 rmmod tpm 添加到第一个菜单项上方的 grub.cfg。编辑 18.04+在 grub 中指定vmlinuz不是 vmlinuz.efi 和initrd不是 initrd 不是 initid.lz
sudo parted -ls /dev/sdb
sudo lsblk -f /dev/sdb
如果需要 Windows 安装程序,从 mkusb“提取 Windows 安装程序”功能开始可能是最简单的(我必须手动将 Windows ISO 提取到 TAR),
安装后为 ISO 创建一个文件夹,如果需要,创建持久性文件夹(类似于上述过程)。
编辑 /boot/grub/grub.cfg 以循环挂载任何 ISO 并指定任何持久性文件夹。
(还没有找到循环挂载 Windows ISO 文件的方法)。
如果将上述内容用作 USB 记忆棒,则它可用于启动存储在仅 Windows 计算机上的 ISO。内部驱动器不需要 Grub。
三个简单的步骤
将 ISO 添加到 grub 菜单并从中启动。
一、安装
grml-rescueboot
打开终端并输入:
二、将iso文件移动到
/boot/grml/
在同一终端输入:
三、更新grub
在同一终端输入:
必要时重复第二步和第三步
不要忘记从
/boot/grml
.参考:关于 Grub2 ISO 引导的 Ubuntu 帮助
笔记
grml-rescueboot
不适用于所有实时 ISO 文件。例如,gparted live ISO 不起作用。请参阅无法使用 grml-rescueboot 启动 Gparted Live希望这可以帮助
MultiBootUSB - QEMU
如果您想以最少的麻烦启动 ISO 文件并且不需要持久性,MultiBootUSB 包含一个 QEMU 选项:
启动 MultiBootUSB 并选择 Boot ISO/USB 选项卡。
将 ISO 拖放到选择图像空间上。
选择 RAM 大小并点击 Boot ISO 按钮。
您无需编辑 grub.cfg 甚至注销。
简单的 mkusb ISO 多引导程序
如果您不需要多重持久性,可以很容易地在 mkusb 闪存驱动器上多重引导操作系统 ISO。
使用 mkusb 使用您选择的默认操作系统制作永久 USB 驱动器,https: //help.ubuntu.com/community/mkusb
在 usbdata 分区 sdx1 中创建一个文件夹,命名为 ISOs。
将要启动的 ISO 添加到此文件夹。
将 menuentries 添加到 /sdx3/boot/grub/grub.cfg 以循环挂载 ISO。
样品:
这可能是您需要的多重引导解决方案。
https://www.ventoy.net/en/index.html
这个可启动的 USB 制造商在 USB 驱动器中创建两个分区。一种是 32MB FAT 32 EFI 分区。另一个是与 USB 驱动器的其余部分大小相等的 exfat 分区。您可以将任意数量的 ISO(包括 Windows)复制到根文件夹或任何子文件夹。您也可以将此分区用于正常存储。
在启动菜单中选择此 USB,它会将所有支持的 ISO 显示为可供选择的列表。根据我的经验,它适用于 Ubuntu、Kubuntu、Mint、Clonezilla 和 Windows。