为什么这个磁盘img只能通过CDROM块设备挂载?

为什么这个磁盘img只能通过CDROM块设备挂载?

我已经使用创建了 SD 卡的磁盘映像(不仅仅是分区)dd。它包含一个 ext4 分区。

parallels@debian-gnu-linux-10:/media/psf/Irfan$ file -k old_armbian.img
old_armbian.img: Linux rev 1.0 ext4 filesystem data, UUID=62974604-6430-48bc-9f66-90d77651e3bf (extents) (large files) (huge files) (Lepton 3.x), scale 0-0, spot sensor temperature 0.000000, unit celsius, color scheme 0, calibration: offset 0.000000, slope 0.000000 (Lepton 2.x), scale 0-0, spot sensor temperature 0.000000, unit celsius, color scheme 0, calibration: offset 0.000000, slope 0.000000\012- data

我一直在尝试通过环回挂载在 Debian 上挂载此 img,但它拒绝检测和挂载其中包含的 ext4。

我能够安装它的唯一方法是通过虚拟机,我将这个 img 文件附加到 CDROM 设备。之后我就可以通过 CDROM 块设备安装它了 ( /dev/sr0)

问题:

$ sudo mount -t ext4 -o loop,ro ./old_armbian.img /mnt/PEND/
mount: /mnt/PEND: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
$ sudo mount ./old_armbian.img /mnt/PEND/
mount: /mnt/PEND: can't read superblock on /dev/loop0.

我也尝试过这样做losetup

$ sudo losetup --partscan -f old_armbian.img
$ sudo mount -t ext4 /dev/loop0 /mnt/test
mount: /mnt/test: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.

只有这个有效:

$ sudo mount -t ext4 -o ro /dev/sr0 /mnt/PEND

是什么赋予了?

答案1

With-o loop mount创建一个循环设备并尝试挂载它,但该设备不包含 ext4 文件系统,它包含一个不可挂载的分区表。您需要将分区挂载到映像上,但mount不能这样做,您需要首先手动创建循环设备,--partscan告诉内核探测分区表并挂载分区:

# losetup --partscan -f old_armbian.img

# mount /dev/loop0p1 /mnt/PEND

我不确定为什么这适用于虚拟 CD,它应该有同样的问题(虚拟 CD 可能是使用偏移量创建的,并且实际上从第一个分区或类似的东西开始)。

相关内容