是否可以完全从 Linux 中创建适用于 Linux 发行版的多重引导 USB,无需第三方软件?
注意:这是一个自我回答的问题。我想与 Linux 社区分享我的方法。
答案1
使用 Linux Mint 19 64 位作为主机操作系统。可以相当肯定地假设类似的发行版和发行版(例如 Ubuntu)将具有相同的行为。
我们会需要:
- 至少 8GB 的 USB(现在两个 Linux ISO 映像不适合 4GB USB)
- Linux 的 ISO 映像。在这种情况下,乌班图19.04和Debian 10。这些图像仅作为示例。其他发行版或版本适合本指南,包括 Clonezilla 或 GParted 等工具。
过程
安装
grub-efi-amd64
GRUB EFI 兼容性。sudo apt install -y grub-efi-amd64
msdos
使用分区表格式化 USB 。分区必须是 FAT 格式。将分区标记为可引导。安装 USB。记下:哪个设备是 ie
/dev/sdc1
,以及它安装的路径 ie/media/foo/USB/
。从现在开始,我将使用这两个示例作为指南。安装GRUB:
dirs=(bin dev etc lib lib64 proc sbin sys usr) for dir in "${dirs[@]}"; do mkdir /media/foo/USB/$dir && sudo mount --bind /$dir /media/foo/USB/$dir done sudo chroot /media/foo/USB/ # chroot environment # first we install grub efi grub-install --force --removable --target=x86_64-efi --efi-directory=/ /dev/sdc1 # now we install grub i386 grub-install --force --removable --target=i386-pc --boot-directory=/ /dev/sdc # exit the chroot exit
警告!!是非常小心使用下一个命令,因为您可能会删除绑定的目录并损害您的系统。使用制表符完成路径而不是键入路径。
for dir in "${dirs[@]}"; do
sudo umount /media/foo/USB/$dir && rm -rf /media/foo/USB/$dir
done
挂载 ISO,并将文件复制
/boot/grub/grub.cfg
到/media/foo/USB/boot/grub
.更改名称,即ubuntu.cfg
和debian.cfg
将 ISO 复制到 USB 中。
GRUB配置:
/media/foo/USB/grub
在该文件下创建grub.cfg
并将以下内容放在那里:set root='(hd0,1)' configfile /boot/grub/grub.cfg
/media/foo/USB/boot/grub
在该文件下创建grub.cfg
并将以下内容放在那里:menuentry 'Ubuntu 19' { configfile /boot/grub/ubuntu.cfg } menuentry 'Debian 10' { configfile /boot/grub/debian.cfg }
配置ubuntu.cfg
编辑该文件/media/foo/USB/boot/grub/ubuntu.cfg
并在顶部添加以下行:
set iso_path=/ubuntu-19.04-desktop-amd64.iso # the name of the ISO
loopback loop $iso_path
将所有出现的字符串替换/casper/
为(loop)/casper/
将所有出现的字符串替换vmlinuz
为vmlinuz iso-scan/filename=$iso_path
配置 debian.cfg
编辑该文件/media/foo/USB/boot/grub/debian.cfg
并在顶部添加以下行:
set iso_path=/debian-live-10.2.0-i386-lxqt+nonfree.iso # the name of the ISO
loopback loop $iso_path
将所有出现的字符串替换/live/
为(loop)/live/
将所有出现的字符串替换/d-i/
为(loop)/d-i/
我们现在准备测试 USB 是否正常工作,只需在连接 USB 的情况下启动您的计算机,根据 BIOS/EFI,您将有不同的选项在 BIOS 或 EFI 启动之间进行选择,或者仅选择从 USB 启动旧机器。
为了简单起见,并且由于这种方法相当先进,我省略了很多细节,我假设用户能够理清这些细节。无论如何,欢迎建议、批评、改进。如果您要求,可以编辑此答案以添加其他 Linux 系统的 GRUB 配置。