如何替换可启动 USB 上的 Linux 发行版 ISO,同时保持额外数据分区完整且可访问?

如何替换可启动 USB 上的 Linux 发行版 ISO,同时保持额外数据分区完整且可访问?

USB 记忆棒变得越来越大。除了 USB 可启动之外,我还想存储数据。我知道如何: 1. 将 ISO 写入 USB 记忆棒 2. 通过 Gnome 磁盘添加分区(均为 GUI)。

现在我希望能够替换 ISO,同时保持额外数据的完整性和可访问性。怎么做?最好不要手动编辑磁盘上的十六进制数据,但这种解决方案比没有解决方案要好。 TIA

我已经尝试过但失败了,如下所示。我读了如何使用标准工具复制整个磁盘的分区布局sfdisk建议使用的地方。

我遇到的大多数 ISO 如下所示:

sfdisk --dump linuxmint-20.2-cinnamon-64bit.iso 
label: dos
label-id: 
device: linuxmint-20.2-cinnamon-64bit.iso
unit: sectors
sector-size: 512

linuxmint-20.2-cinnamon-64bit.iso1 : start=           0, size=     4222944, type=0, bootable
linuxmint-20.2-cinnamon-64bit.iso2 : start=         640, size=        7936, type=ef

那是某些分区表sfdisk无法写回(从0开始是不行的)。

但是通过以下方式创建分区后gnome-disks

sudo sfdisk --dump /dev/sda
label: dos
label-id: 
device: /dev/sda
unit: sectors

/dev/sda1 : start=     8433664, size=    57104384, type=83
/dev/sda2 : start=        4800, size=        8496, type=ef
# (note: the ISO I've tried to change from had start=4800 for ef).

所以我保存了新的一行/dev/sda1a.part将新的 ISO 写入 USB,通过 创建分区gnome-disks,通过 确认sfdisk --dump,然后通过 删除数据分区,然后 gnome-disks执行sfdisk --append /dev/sda < a.part(请参阅下面的部分输出)。我看到“分区表已被更改。”,我的数据分区在新的分区表中。但 USB 记忆棒不再启动。

/dev/sda3: Created a new partition 3 of type 'Linux' and of size 24.4 GiB.
Partition #3 contains a btrfs signature.
/dev/sda4: Done.

New situation:
Disklabel type: dos
Disk identifier: 

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda2           4800    13295     8496  4.2M ef EFI (FAT-12/16/32)
/dev/sda3       14368768 65538047 51169280 24.4G 83 Linux

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

添加(关于 Ventoy):

我已经在使用 Ventoy 了。我仍然想为我最喜欢的系统配备一些 USB,以便在我做其他事情时插入棒,按下电源,系统在无人值守的情况下加载。我还记得 Vetroy GUI 在一些旧计算机上出现故障,所以在我看来,专用的可直接启动棒再次很有用。

然而,如果 Ventoy 可以选择加载默认指定文件(像 GRUB 启动菜单一样有延迟),这些问题就会得到缓解 - 无法找到这样的谷歌搜索和阅读https://www.ventoy.net/en/faq.html。看来 Ventoy 内部使用 GRUB 启动,我打开配置文件来查看是否可以添加默认启动选项。

答案1

首先是好事:由于现代计算机超过 10 年都支持从 GPT 分区的 USB 设备进行 UEFI 启动,因此您的记忆棒的格式化/分区绝对没有什么特别之处,您需要使其可启动!

所需要的只是有一个包含EFI/boot/boot{architecturename}.efi引导加载程序文件的 FAT32 或 exFAT 格式的分区;我假设这是关于 x86_64 的,所以那就是EFI/boot/bootx64.efi.该引导加载程序可以做任何它想做的事 - 从直接加载 Linux 内核并继续从 USB 记忆棒引导单个安装,加载 GRUB 然后加载许多 Linux(或其他操作系统)之一,再到从CDROM 磁盘映像(这就是 .iso 文件的实际内容 - 这是一个历史性的好奇心,它们仍然是将安装程序安装到 USB 记忆棒上的主要方式);从技术上讲,启动一个小型 Linux 系统也是非常明智的,该系统可以使用其所有文件系统驱动程序分析完整的 USB 记忆棒,并提供从该 Linux 启动的 Linux 列表(例如使用 kexec)。

有多个“多重启动启用程序”可以扫描您的存储中的 .iso 文件,然后让您选择启动哪个。其中许多都是位旋转(管理员使用 USB 盘来启动或在客户端 PC 上安装某些东西的日子已经结束了;网络启动已经变得相当容易,并且现代操作系统都具有合理的远程访问和更新功能。在服务器业务中,拥有板管理控制器,让您只需启动通过 Web 控制台上传的文件是标准配置。);老实说,我已经 5 年多没有使用过其中任何一个了。

其中大多数使用 GRUB 来进行实际引导;最常见(并且可能仍然得到最好支持)的是文托伊。您需要将 ventoy 安装到您的棒上一次(虽然不必要,但最终最容易破坏棒上的数据,除非您不使用自动安装并弄清楚如何执行此操作)手动插入您现有的棒中);

./Ventoy2Disk.sh -i -g /dev/sdYOURUSBSTICK

做这个工作。

之后,您只需将 iso 文件放入 exfat 分区(实际上您也可以将它们放在其他位置并从 GRUB 手动浏览其他分区)。

您可以对棒上的其他分区执行任何操作。

相关内容