以下是我想要实现的:
- 将 Linux 发行版安装到映像文件中,即映像文件内的 Linux 安装,就像 docker 映像一样。为了方便起见,也许我们可以从 docker 映像创建可启动映像。(是否可以从 docker 映像创建可启动映像?)可以使用 qemu、virtualbox 或类似程序测试此类映像。
- 将准备好的镜像复制到外部 SSD 中,然后使用该镜像启动另一台计算机,就像 Ventoy 使用 ISO 文件启动一样。
- 不同的可启动映像可以共享公共的磁盘空间。
如果可能的话,我可以准备一个可启动的外部 SSD,里面有多个发行版和共享数据。然后,我可以在不同的电脑上测试不同的发行版。
上述想法可行吗?如果可行,目前最好的解决方案是什么?
答案1
我会按照我的方式去做,而且非常简单:
创建文件映像(需要 ~/ 中 16GB 磁盘空间):
$ truncate -s $((16 * 1024 * 1024)) ~/Linux.img
为该文件创建一个环回设备(假设 /dev/loop0 可用):
# losetup /dev/loop0 ~/Linux.img
如果 /dev/loop0 不存在或者正在使用,请咨询 Google 如何创建其他环回设备或尝试 /dev/loopN)
创建 GPT 分区表(可选):
# fdisk /dev/loop0 g <enter>
您还可以在 fdisk 中创建所需的分区,如何布局完全由您决定。
更新内核,使其了解你的新分区(可选)
# partprobe /dev/loop0
现在您应该可以看到目录/dev/loop0pN
中的分区/dev
。
此时,您可以根据主机操作系统中的文档应用文件系统并安装发行版,或者您可以跳过可选步骤,启动虚拟机,将或~/Linux.img
作为磁盘,将发行版 iso 作为 cdrom,然后正常安装。只需确保在打开虚拟机之前/dev/loop0
卸载映像中的所有文件系统即可。losetup -d /dev/loop0
当您想要将图像发送到 SSD 时,您可以使用整个 SSDdd
直接写入磁盘/dev/sdX
。
如果您选择在文件中创建分区表~/Linux.img
,则可以dd
将其复制到 SSD 上的分区,并使用partprobe
它将底层分区表及其在物理 SSD 分区内的分区显示为/dev/sdXNpN
设备文件。
为了使其在物理机器上可启动,您必须修改 initrd 以进行 partprobe 并启动那些嵌套分区,archlinux 有关于如何修改 initrd 映像的出色文档。不过,每个发行版都不同,因此您必须针对每个发行版进行单独调整。