是否可以将 Linux 发行版安装到映像文件中并从外部 SSD 启动它?

是否可以将 Linux 发行版安装到映像文件中并从外部 SSD 启动它?

以下是我想要实现的:

  1. 将 Linux 发行版安装到映像文件中,即映像文件内的 Linux 安装,就像 docker 映像一样。为了方便起见,也许我们可以从 docker 映像创建可启动映像。(是否可以从 docker 映像创建可启动映像?)可以使用 qemu、virtualbox 或类似程序测试此类映像。
  2. 将准备好的镜像复制到外部 SSD 中,然后使用该镜像启动另一台计算机,就像 Ventoy 使用 ISO 文件启动一样。
  3. 不同的可启动映像可以共享公共的磁盘空间。

如果可能的话,我可以准备一个可启动的外部 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 映像的出色文档。不过,每个发行版都不同,因此您必须针对每个发行版进行单独调整。

相关内容