“手工制作” 现场 USB 多系统

“手工制作” 现场 USB 多系统

我构建了一个“手工制作的”多系统 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 文件?

GParted 分区

分区

  • 在 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 parted -ls /dev/sdx

sudo lsblk -f /dev/sdx

sudo lsblk -f /dev/sdx

如果将上述设备用作 USB 记忆棒,则可用于启动存储在 Windows 计算机上的 ISO。内部驱动器上不需要 Grub。

相关内容