目前有个磁盘镜像文件需要修改其中一些内容
# file vm-102-disk-0.raw
vm-102-disk-0.raw: DOS/MBR boot sector
# fdisk -l vm-102-disk-0.raw
Disk vm-102-disk-0.raw: 1 GiB, 1073741824 bytes, 2097152 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
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
vm-102-disk-0.raw1 * 512 16895 16384 8M 83 Linux
vm-102-disk-0.raw2 17408 214015 196608 96M 83 Linux
vm-102-disk-0.raw3 215040 2097151 1882112 919M 83 Linux
mount -o loop,offset=262144 vm-102-disk-0.raw ./temp/
mount -o loop,offset=8912896 vm-102-disk-0.raw ./temp/
wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
mount -o loop,offset=110100480 vm-102-disk-0.raw ./temp/
目前可以确认磁盘镜像本身没有问题,尝试通过虚拟机直接从该镜像可以正常启动,但是由于该镜像文件启动后不包含命令行,因此无法在该镜像内查看有关文件系统的信息。
有大佬可以帮忙分析一下第二个分区挂载失败的原因嘛?
内部数据已经可以读取,虽然可能不是比较的方案,供其他人参考。
由于无法直接挂载,尝试分离出第二个分区的数据dd if=vm-102-disk-0.raw skip=17408 of=part2.img
随后
$ file part2.img
part2.img: Squashfs filesystem, little endian, version 4.0, 26537434 bytes, 1078 inodes, blocksize: 262144 bytes, created: Wed Nov 17 04:20:40 2021
得知是Squashfs后就比较容易了,通过unsquashfs part2.img
即可获得该分区内的内容。(需要安装squashfs-tools)
至于内容的回填,暂时没有好办法,只能通过文件系统修改后,通过mksquashfs填装回Squashfs,然后再通过fdisk重新分区以及dd填充数据回去。
如果各位大佬有好办法,希望可以留言告诉我。