Вопрос: смещение петли контура больше не работает


Я всегда монтировал полные образы дисков с помощью mount -o loop,offeset=$((START * BLOCKSIZE)) image.raw /mnt

Он не работает с последними 2 изображениями. Я всегда получаю сообщение «mount: wrong fs type, bad option, bad superblock on / 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 cmd Я использую: mount from util-linux 2.29.1 (libmount 2.29.1: btrfs, assert, debug)

Что я делаю не так?


0
2018-03-01 09:10


Источник




Ответы:


TLDR: Скорее всего, ваши секторы не 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 байт. Вы можете узнать больше, читая Вот,


1
2018-03-01 10:41



Размер 512. Binwalk обнаружил подпись ext4 на этапе 1048576. - gj13
Элемент ext4 не был чистым, и если вы используете флаг ro, ext4 просто не монтирует его. Мой выходной терминал журнала dmesg висел, поэтому я не получил предупреждение ядра ext4 об этом. Я принимаю ваш ответ, потому что это лучший метод, если размер блока неизвестен. - gj13