可以将虚拟磁盘安装为驱动器吗?

可以将虚拟磁盘安装为驱动器吗?

我正在从头开始构建 Linux。有趣的项目。无论如何,我使用 dd 创建了一个 60 GB 的原始磁盘映像,并用 /dev/zero 填充它。

我在网上找不到任何关于如何将映像安装为实际磁盘的信息。我读到的所有内容都告诉我,我需要安装每个单独的分区,而不是磁盘本身。

有没有办法将 60 GB 的未分区空间挂载为 1 个设备?就像您会看到未格式化的闪存驱动器为 sdb 而不是 sdb1 等一样。

我几乎尝试过以下变体:sudo mount -o loop disk /media/LFS

我总是得到这样的结果:

The device '/dev/loop0' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

答案1

您无法安装没有文件系统的磁盘或分区。由于文件disk全为零,因此该文件上没有任何文件系统。

首先,要在该文件调用上创建循环设备

sudo losetup -f disk

这将为文件“磁盘”创建一个循环设备。sudo losetup您将获得一个循环设备列表;请注意与您的磁盘连接的那个。我假设/dev/loop0从现在开始。

接下来要创建有效的文件系统,您必须调用

sudo mkfs -t [type] /dev/loop0

其中 [type] 表示文件系统类型,例如 ext4。有关更多选项,请参阅man mkfs

现在您可以挂载:

sudo mount /dev/loop0 /media/LFS

然后就可以像普通文件系统一样进行访问了。

要断开连接,您必须卸载(sudo umount /media/LFS)并分离循环设备(sudo losetup -d /dev/loop0)。从那时起,您可以按照问题中尝试的方式挂载文件系统(使用 -o loop 挂载将为您创建循环设备)。

不,您不需要对设备进行分区。当然,您可以在非空文件夹上安装文件系统 - 但在再次卸载之前,您无法访问此文件夹的先前内容。

编辑

如果你希望镜像文件像分区磁盘一样工作并被内核识别,你可以按照如何格式化...。 简而言之:

对图像进行分区:# fdisk disk它将像往常一样运行 fdisk 并且您可以创建分区。

创建文件系统:由于 mkfs 无法与whole disks分区的文件系统配合使用(可能只是使用原始磁盘作为一个文件系统,如上所述),因此最好使用循环设备partprobekpartx通知内核。最简单的方法是运行# sudo losetup -f -P disk,它将创建分区设备,例如/dev/loop0p1/dev/loop0p2等等。然后可以使用它们mkfs

使用gparted:由于 gparted 会调用默认工具(如parted和 )mkfs,因此上述观点同样适用。您可以调用# sudo gparted disk然后对磁盘进行分区,但无法格式化这些分区,因为mkfs然后会要求提供不同的映像(如disk1disk2)。因此,您也应该将循环设备与 gparted 一起使用:

# sudo losetup --show -f -P disk
/dev/loop0
# sudo gparted /dev/loop0

(我--show在这里使用了,因此losetup将显示创建了哪个设备)。现在您可以像往常一样使用 gparted。创建/格式化分区后,其他应用程序(如文件管理器)就可以使用这些分区(也许您必须发出命令sudo partprobe /dev/loop0才能让内核识别分区)。

我无法gparted在不直接传递循环设备名称的情况下让循环设备显示在 中,即使在发出partprobe或之后kpartx也是如此,例如从系统菜单启动时。它只显示 /dev/sdx 设备。也许其他人可以解决这个问题。

相关内容