分区内的子分区未显示在 lsblk 或 /dev/ 中

分区内的子分区未显示在 lsblk 或 /dev/ 中

我在 /dev/sdb4 中安装了 archlinux 并使用了引导分区方案。安装后我无法挂载/dev/sdb4 (ext4)。错误是VFS: Can't find ext4 filesystem

lsblk 向我展示:

sdb      8:16   0 931,5G  0 disk 
├─sdb1   8:17   0   512M  0 part /boot/efi
├─sdb2   8:18   0 768,3G  0 part /
├─sdb3   8:19   0  62,7G  0 part [SWAP]
└─sdb4   8:20   0   100G  0 part 

但是 fdisk -l:

Gerät       Boot Anfang      Ende  Sektoren Größe Kn Typ
/dev/sdb4p1 *      6144    421887    415744  203M  b W95 FAT32
/dev/sdb4p2      522240 209418239 208896000 99,6G 83 Linux

安装程序在分区内创建了两个子分区。 /dev/sdb4 上的分区表

现在我尝试挂载这些分区:

sudo mount /dev/sdb4p1 /mnt
mount: /mnt: Spezialgerät /dev/sdb4p1 ist nicht vorhanden.
       dmesg(1) könnte nach einem fehlgeschlagenen mount-Systemaufruf
       weitere Informationen liefern.

我不能。显然/dev/sdb4p1不存在。我应该怎么办?

答案1

回答

我想我可以通过在文件中安装分区来解决这个问题.img

如果我的想法是正确的,那么运行sudo losetup --partscan --show --find /dev/sdb4应该会创建一个循环设备(例如/dev/loop23)。

这还应该创建/dev/loop23p1(分区 1)、/dev/loop23p2(分区 2) 等,具体取决于 中的分区数量/dev/sdb4、每个分区可以使用 挂载sudo mount /dev/loop23p1 [MOUNT_POINT]等。

请注意,这/dev/loop23只是一个示例。使用命令返回的值losetup


解释:

losetup是用于设置和控制循环设备的命令。

在命令中sudo losetup --partscan --show --find /dev/sdb4,我们指定以下标签:

  • --partscan:这会扫描指定块设备中的可用分区。
  • --show:这用于告诉losetup输出它分配的循环设备的名称。
  • --find:此选项指示losetup查找未使用的循环设备并分配它。
  • /dev/sdb4:这是您的块设备/分区的名称。

option的优点在于它会自动扫描所有可用分区,并创建名为、、等的--partscan子循环设备。您可以像安装整个分区一样安装每个子循环设备。[loop dev]p1[loop dev]p2[loop dev]p3


清理

完成安装后,您将必须像往常一样运行sudo umount [MOUNT_POINT]以卸载已安装的分区。除此之外,我们还必须删除我们创建的循环设备,使用sudo losetup -d [loop dev](替换[loop dev]为之前返回的循环设备名称losetup

要确认循环设备已删除,您只需运行即可losetup

相关内容