![如何替换可启动 USB 上的 Linux 发行版 ISO,同时保持额外数据分区完整且可访问?](https://linux22.com/image/214926/%E5%A6%82%E4%BD%95%E6%9B%BF%E6%8D%A2%E5%8F%AF%E5%90%AF%E5%8A%A8%20USB%20%E4%B8%8A%E7%9A%84%20Linux%20%E5%8F%91%E8%A1%8C%E7%89%88%20ISO%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E6%8C%81%E9%A2%9D%E5%A4%96%E6%95%B0%E6%8D%AE%E5%88%86%E5%8C%BA%E5%AE%8C%E6%95%B4%E4%B8%94%E5%8F%AF%E8%AE%BF%E9%97%AE%EF%BC%9F.png)
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/sda1
,a.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 手动浏览其他分区)。
您可以对棒上的其他分区执行任何操作。