LinuxForum.Fans
Тема

Монтирование img (исправление кривого образа)

Автор: boyfromsun 5 сообщений 1433 просмотров
26.02.2020 15:28 #434177

Добрый день друзья.
Столкнулся с проблемой что без участия вашего форума найти выхода не смог.

Расскажу по порядку.
Хочу редактировать прошивку для android. Разбираю её, беру оттуда образ system.img копирую его в линукс и монтирую его вот такой нехитрой командой:

text
sudo mount -t ext4 /home/123/system.img /home/1234

Всегда он монтировался без проблем. Я его редактировал и дальше просто размонтировал командой unmount /home/1234
Но в новой версии прошивки я столкнулся с новым system. Я знаю что он точно ext4. Я знаю что он распаковывается на компе (сторонними прогами) но мне нужно красиво изменить его в линуксе, замонтировать, изменить и размонтировать.

При монтировании этого образа опять же командой

text
sudo mount -t ext4 /home/123/system.img /home/1234

Я вижу вот такое сообщение:

text
mount: /home/1234: wrong fs type, bad option, bad superblock on /dev/loop13, missing codepage or helper program, or other error.

Нашёл в просторах интернета вот такую инструкцию которая говорит о смещении раздела:

Показать
Originally Posted by TobiSGD View Post
The problem is that the .img files are not images of a partition, but of a whole disk. That means they start with a bootloader and a partition table. You have to find out the offset of the partition and mount it with the offset option of mount.
If you do a
Code:
text
fdisk -l /path/to/image
it will show you the block-size and the start-block of the partition. You can use that to calculate the offset.
For example, I have an image of a bootable stick with a 4GB FAT32 partition. The output of the fdisk command is
Code:
Disk Stick.img: 3984 MB, 3984588800 bytes
249 heads, 6 sectors/track, 5209 cylinders, total 7782400 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
Disk identifier: 0x0004bfaa

Device Boot Start End Blocks Id System Stick.img1 * 128 8015999 4007936 b W95 FAT32

So I have a block-size of 512 bytes and the start-block is 128. The offset is 512 * 128 = 65536.
So the mount command would be
Code:

text
mount -o loop,offset=65536 Stick.img /mnt/tmp

Но результата не дал этот способ так как команда

text
fdisk -l /path/to/image

Даёт результат который не показывает нужную мне информацию.
Я вижу вот это:

text
fdisk -l /home/system.img
Диск /home/system.img: 1.29 GiB, 1375563776 байт, 2686648 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт

Люди мне подсказали вот такое решение проблемы:

Размер раздела system в H2 - 0x5DC00000 (1572864000) байт. В прошивке образ раздела обрезан с конца - выкинуто пустое пространство для уменьшения размера. Поэтому файл и не монтируется под линуксом - размер образа не соответствует размеру, указанному в заголовке раздела.
Чтобы смонтировать его, нужно сначала восстановить его до исходного размера - дописать в конец system.img нужное количество нулей.

Вот и просьба о помощи реализации этого метода добавлению нулей и монтирования его.
Ну или может у вас есть вариант как можно его замонтировать ?
Ссылка на образ на всякий случай тут: https://yadi.sk/d/lXrkogPezUFRYw

Спасибо за внимание уделённое моему посту :)

26.02.2020 16:14 · отредактировано #434178

Попробуйте cdemu с gui даже, gnome - gcdemu, kde - kcdemu.Он субканальные данные для starforce умеет и все такое - линуксовый daemond tool ;) Галочкм там в настройках поставьте, авось получится. *DRINK*

27.02.2020 01:38 #434180

Спасибо за помощь, сегодня буду пробовать :)
Добавлено: 27.02.2020 01:13:46

mozgfx написал:

Вариант не прошёл.

text
Error, could not mount image.

Solution: Try converting the image to ISO or extract the content to a folder from the upper menu "Image Conversion." NOTE: it is NOT possible to mount multi-sector images.

Добавлено: 27.02.2020 01:38:23

Может вдруг кому-то помогу.
Образ открылся на линукте после того как я дописал недостающее пространство нулями в конец.

[console]dd if=/dev/zero bs=1 count=197300224 >> /home/system.img[/console]

27.02.2020 08:42 #434181

Видимо из-за того, что ext4 теперь не как раньше, с полгода назад в нее внесли изменения и люди с архивами своих прошлых систем много мучались пытаясь из них восстановимть свои системы. ;) Похоже тот кто делал этот образ давно не переустанавливал свой линукс. 8)

Войдите или зарегистрируйтесь, чтобы ответить.