我使用该命令dd
来生成磁盘(SD 卡)的完整副本。现在,我试图检索存储在其中的信息,但我不知道如何读取文件的内容。我使用该命令dd if=/dev/mmcblk0 of=/home/user/devmmcblk0.img bs=1M
来生成文件。正如 ubuntu 报告的那样,SD 卡是 16GB,文件也是 16GB。该文件的格式是 fat32。我使用以下命令来安装它:mount -t vfat /home/user/devmmcblk0 /mnt
但它说fstype incorrect, incorrect option, wrong superblock in /dev/loop0
。我还尝试在 virtualbox 中安装一些 linux 并将映像文件添加为辅助磁盘,但它不会让 virtualbox 挂载它,给出以下错误
Código Resultado:
VBOX_E_IPRT_ERROR (0x80BB0005)
Componente:
Medium
Interfaz:
IMedium {05f2bbb6-a3a6-4fb9-9b49-6d0dda7142ac}
Receptor:
IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554}
Receptor RC:
VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
我们将非常感谢任何有关恢复信息的帮助。
编辑我被问到几个命令的输出,所以我会把它们添加到这里供大家查看
$ file -s devmmcblk0.img
devmmcblk0.img: x86 boot sector
$ mount -t vfat -o ro,loop /home/user/devmmcblk0 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0
$ fdisk -lu devmmcblk0.img
Disk devmmcblk0.img: 16.0 GB, 16003891200 bytes
255 heads, 63 sectors/track, 1945 cylinders, total 31257600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
devmmcblk0.img1 8192 31257599 15624704 c W95 FAT32 (LBA)
答案1
kpartx 也是一个选项。来自互联网上的一个网站:
# kpartx -l gothbook.img
loop1p1 : 0 512000 /dev/loop1 63
loop1p2 : 0 512000 /dev/loop1 512063
loop1p3 : 0 45056000 /dev/loop1 1024063
loop1p5 : 0 8388608 /dev/loop1 46090548
loop1p6 : 0 39070017 /dev/loop1 54492543
loop1p7 : 0 62733762 /dev/loop1 93562623
我从 kpartx 的输出中看到我的驱动器映像包含 6 个分区。我可以看到它们的起始偏移量。第一列告诉我如果我选择添加这些设备分区将创建的设备文件的名称。现在让我们添加它们。
# kpartx -a -v gothbook.img
add map loop1p1 (253:6): 0 512000 linear /dev/loop1 63
add map loop1p2 (253:7): 0 512000 linear /dev/loop1 512063
add map loop1p3 (253:8): 0 45056000 linear /dev/loop1 1024063
add map loop1p5 (253:9): 0 8388608 linear /dev/loop1 46090548
add map loop1p6 (253:10): 0 39070017 linear /dev/loop1 54492543
add map loop1p7 (253:11): 0 62733762 linear /dev/loop1 93562623
# ls -l /dev/mapper
total 0
crw-rw---- 1 root root 10, 62 2010-06-15 17:40 control
brw-rw-r-- 1 neil neil 253, 6 2010-08-16 00:28 loop1p1
brw-rw-r-- 1 neil neil 253, 7 2010-08-16 00:28 loop1p2
brw-rw-r-- 1 neil neil 253, 8 2010-08-16 00:28 loop1p3
brw-rw-r-- 1 neil neil 253, 9 2010-08-16 00:28 loop1p5
brw-rw-r-- 1 neil neil 253, 10 2010-08-16 00:28 loop1p6
brw-rw-r-- 1 neil neil 253, 11 2010-08-16 00:28 loop1p7
上述命令将六个设备映射文件添加到 /dev/mapper。每个设备文件都对应于该硬盘驱动器映像中的一个分区。我们现在可以使用这些设备文件来挂载这些分区并访问它们包含的任何文件。我想挂载第五个分区 (/dev/mapper/loop1p6) 并查看其文件。
# mkdir /mnt/sysimage
# mount /dev/mapper/loop1p6 /mnt/sysimage
# ls /mnt/sysimage
bin dev initrd.img lost+found opt sbin sys var
boot etc initrd.img.old media proc selinux tmp vmlinuz
cdrom home lib mnt root srv usr vmlinuz.old
挂载设备文件后,您可以访问该分区中包含的文件。完成后,不要忘记使用 kpartx 卸载分区并断开设备映射文件。
# umount /mnt/sysimage # kpartx -d -v gothbook.img
答案2
您应该挂载该分区,它从文件内部的偏移量开始。
sudo mount -o offset=$((512*8192)),ro,loop -t vfat /home/user/devmmcblk0.img /mnt
笔记:
loop
可能没有必要。512
是 所报告的扇区大小fdisk
。8192
是起始扇区。
您的图像覆盖整个 SD 卡;它类似于(例如)/dev/sdb
。如果是 SD 卡,那么将有/dev/sdb1
可供安装。安装sdb1
将sdb
自动以适当的偏移量进行安装。对于图像文件,没有这样的魔法——您没有特殊的devmmcblk0.img1
。可以手动创建这样的文件,但很麻烦且不是真正必要的(编辑:kpartx
KevinB 的答案就是这样做的)。最简单的方法是将正确的偏移量传递给mount
命令。
答案3
更新:这次请尝试使用只读选项,
sudo mount -t vfat -o ro,loop /home/user/devmmcblk0 /mnt
更新2:
看到手动处理环回设备时遇到的所有障碍,也许你可能想尝试更高级的方法?请查看
sudo testdisk devmmcblk0.img
有任何好消息
更新3:
它很可能是一个 exfat 格式的分区,需要exfat-fuse
正确exfat-utils
挂载。