我已经使用创建了 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 可能是使用偏移量创建的,并且实际上从第一个分区或类似的东西开始)。