Добрый день друзья.
Столкнулся с проблемой что без участия вашего форума найти выхода не смог.
Расскажу по порядку.
Хочу редактировать прошивку для android. Разбираю её, беру оттуда образ system.img копирую его в линукс и монтирую его вот такой нехитрой командой:
sudo mount -t ext4 /home/123/system.img /home/1234
Всегда он монтировался без проблем. Я его редактировал и дальше просто размонтировал командой unmount /home/1234
Но в новой версии прошивки я столкнулся с новым system. Я знаю что он точно ext4. Я знаю что он распаковывается на компе (сторонними прогами) но мне нужно красиво изменить его в линуксе, замонтировать, изменить и размонтировать.
При монтировании этого образа опять же командой
sudo mount -t ext4 /home/123/system.img /home/1234
Я вижу вот такое сообщение:
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:
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:
mount -o loop,offset=65536 Stick.img /mnt/tmp
Но результата не дал этот способ так как команда
fdisk -l /path/to/image
Даёт результат который не показывает нужную мне информацию.
Я вижу вот это:
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
Спасибо за внимание уделённое моему посту