安装循环偏移不再起作用

安装循环偏移不再起作用

我总是用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

希望能帮助到你。

相关内容