人们认为这是更合适的,我把它放在那里,因为它是程序的一部分,但我可以看到他们的POV,所以这里是:
在代码的底部,你可以看到它失败。 事实上,我也会在一开始就把它放在这里,因为这是我需要解决的问题:
[350591.924819] EXT4-fs (loop0): bad geometry: block count 9750806 exceeds size of device (9750168 blocks)
我不明白为什么这个设备太小了。 我前两天用普通的fdisk创build了这个分区,它是用ext4创build和格式化的,除了分区(/ dev / sdb2)以外,没有其他选项可以进行格式化。
我能想到的唯一解释就是ext4的分区大小有点不对,但似乎不大可能。 我的math有什么问题? 偏移是正确的,你可以看到,与文件命令,大小也应该是正确的,因为结束开始到相同的扇区数减1,就像它应该(磁盘开始扇区1,结束扇区2将是2 – 1 = 1,并有两个部门)。
# sfdisk -luS /dev/sdb Disk /dev/sdb: 9729 cylinders, 255 heads, 63 sectors/track Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System /dev/sdb2 78295040 156296384 78001345 83 Linux # losetup -r -f --show -o $((78295040 * 512)) --sizelimit $((78001345 * 512)) /dev/sdb /dev/loop0 # file -s /dev/loop0 /dev/loop0: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files) # mount -o ro -t ext4 /dev/loop0 /mnt mount: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so # dmesg | tail -n 1 [350591.924819] EXT4-fs (loop0): bad geometry: block count 9750806 exceeds size of device (9750168 blocks)
从一见钟情sizelimitvariables计算不正确,因此目标只读循环设备超过/ dev / sdb2设备的大小。 (End - Start)* size of sector = sizelimit是78001344,它应该在循环设备创build期间使用来解决问题。