我总是用mount -o loop,offeset=$((START * BLOCKSIZE)) image.raw /mnt
最后 2 个图像无法正常工作。我总是收到“mount:错误的 fs 类型,错误的选项,/dev/loop0 上的错误超级块”消息。
对于此图像,偏移量应为 1048576
Disk sm.img1: 39.1 GiB, 41943040000 bytes, 81920000 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: 0x0000aa2b
Device Boot Start End Sectors Size Id Type
sm.img11 * 2048 79691775 79689728 38G 83 Linux
....
图像正在运行,我可以在 qemu 中启动它。
我正在使用的 mount 命令:
mount from util-linux 2.29.1 (libmount 2.29.1: btrfs, assert, debug)
我究竟做错了什么?
答案1
总结:您所在的行业很可能是不是512 字节长。最常见的替代值是每扇区 4096 字节,因此偏移量应为 2048x4096= 8,388,608。您可以尝试此值,或者...
你可以确定它:
# ls -lt debian-testing-amd64-DVD-1.iso -rw-rw-r-- 1 mario mario 3981279232 mar 1 10:58 debian-testing-amd64-DVD-1.iso
# hexdump -s 446 -n 64 -v -e '1/1 "Partition:| %02x" 3/1 " | %3u" 1/1 " | %02x" 3/1 " | %3u" 2/4 " | %9u" "\n"' debian-testing-amd64-DVD-1.iso
Partition:| 80 | 0 | 1 | 0 | 00 | 237 | 224 | 252 | 0 | 7775936
Partition:| 00 | 254 | 255 | 255 | ef | 254 | 255 | 255 | 19984 | 832
Partition:| 00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0
Partition:| 00 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0
#
因此,该磁盘的大小正好是 3981279232 字节,它包含 7775936 个扇区,每个扇区的长度为 3981279232/7775936 = 512 字节。您可以阅读以下内容了解更多信息这里。
答案2
我只是认为您使用的命令有拼写错误。
mount -o loop,offeset=$((START * BLOCKSIZE)) image.raw /mnt
对我来说,用 offset 代替 offset 是可行的。
mount -o loop,offset=$((2048 * 512)) image.raw /mnt
另一种方法是使用 losetup:
losetup /dev/loop0 image.raw -o $((2048 * 512))
mount /dev/loop0 /mnt
希望能帮助到你。