我构建了一个“手工制作的”多系统 USB 密钥,简要安装了 grub(efi 和 legacy),然后在其上复制三个高度定制的 iso(Ubuntu 16.04 和 18.04,后者有两种“风格”),最后修改 grub.cfg 以便用户可以在系统和 UI 语言环境之间进行选择。
我想至少在其中一个上添加持久性(通过在 grub.cfg 菜单项中添加“persistent”和“persistent-path=...”),但到目前为止还无法使其工作:每次启动时我都会收到类似“未找到持久性文件”的提示,而我试图将 casper-rw 直接放在 usb 密钥的根目录和目录中。
所以我想知道是否以及如何在基于 iso 的可启动 USB 密钥上添加持久性。
谢谢,
锡尔
[编辑] 我忘了说我不想使用 unetbooting、multiboot、mkusb 等东西,因为它们给密钥添加了太多垃圾。如果无法以我上面描述的方式实现持久性,我宁愿完全没有持久性。
答案1
从头开始的多重启动 USB 棒
(修改如何在 UEFI 机器上使用 grub2 从驱动器启动 ISO 文件?)
分区
在 USB 上创建 gpt 分区表。
如上图创建分区,分区 2 选择未格式化。
创建一个casper-rw文件:
sudo dd if=/dev/zero of=casper-rw bs=1M count=512
sudo mkfs.ext3 -L casper-rw -F casper-rw
(其中count=512
持久大小以兆字节为单位,最大为 4GB)。
持久分区
在 USB-PRST 分区上为每个操作系统(需要持久性)创建一个唯一名称的文件夹。
向每个持久性文件夹添加一个 casper-rw 文件(以及可选的 home-rw 文件)。可以通过重命名 casper-rw 文件来生成 home-rw 文件。home-rw 文件就像完整安装上的单独主分区,可以在版本升级后重复使用。
数据分区
在 NTFS USB-DATA 分区上为 ISO 文件创建一个文件夹。
将一些 ISO 添加至 isos 文件夹。
启动分区
打开最新的19.10 之前ISO 文件并将启动和 EFI 文件夹复制到 USB-BOOT 分区。(请注意,Ubuntu 19.10 及更高版本使用 grub 2.04,这会阻止启动 ISO 文件)。
安装 grub
sudo mount /dev/sdx3 /mnt
sudo grub-install --boot-directory=/mnt/boot /dev/sdx
编辑 grub.cfg 以循环挂载 ISO 文件。persistent persistent-path=/<persistent-folder-name>/
如果您想要多个持久性,请包括:。
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5
menuentry "ubuntu-19.10-desktop-amd64.iso" {
set root=(hd0,1)
set isofile="/isos/ubuntu-19.10-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-1/ splash --
initrd (loop)/casper/initrd
}
menuentry "lubuntu-16.04.3-desktop-amd64.iso" {
set root=(hd0,1)
set isofile="/isos/lubuntu-16.04.3-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-2/ splash --
initrd (loop)/casper/initrd.lz
}
Grub.cfg 示例
sudo parted -ls /dev/sdx
sudo lsblk -f /dev/sdx
如果将上述设备用作 USB 记忆棒,则可用于启动存储在 Windows 计算机上的 ISO。内部驱动器上不需要 Grub。