У меня есть файл .img, который использует файловую систему yaffs2 (образ раздела Android), которую я хочу смонтировать. Я не могу сделать это с помощью команды mount. Как я могу это сделать? Я использую Ubuntu 12.04.
Кроме того, я не хочу его извлекать (я знаю, как это сделать, используя unyaffs
). Я хочу смонтировать его.
Android изначально использовал
blockquote>YAFFS2
в качестве файловой системы. После Android 2.3 файловая система сталаext4
.из https://stackoverflow.com/questions/23946910/
1. определить тип изображения
file system.img system.img: VMS Alpha Exectutable
// это yaffs2 image
file system.img system.img: data
// это может быть разреженное изображение ext4
blkid -pO 40 system.img system.img: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"
// да, это разреженное ext4 image
// 40 = sizeof (struct sparse_header) + sizeof (struct chunk_header)
2. simg2img для ext4 разреженного изображения
Это разреженная файловая система, я думаю, вам сначала нужно ее разобрать, используя simg2img . Вы можете скачать его как часть ext4_utils, которую я разместил на здесь , когда я использовал его на изображениях Nexus7. Распакуйте образ и смонтируйте его следующим образом:
Распакуйте:
./simg2img rootfs.img rootfs.ext4
Монтируйте:
sudo mount -o loop rootfs.ext4 tmpmnt/
После того, как вы распаковали и взломали его, вы восстанавливаете его, используя make_ext4fs. Вероятно, вам следует прочитать запись в блоге, которую я сделал о взломе образа Nexus7 , так как он охватывает большую часть этого, и сценарий, на который он ссылается, может быть полезен.
Ubuntu в настоящее время не поддерживает YAFFS2. Существует запрос новых функций для упаковки модуля ядра YAFFS2, который обеспечил бы, монтируют поддержку файловой системы: [упаковка потребностей] yaffs2.
Таким образом, в настоящее время, если Вы должны смонтировать поддержку, необходимо будет скомпилировать ее сами. Веб-сайт YAFFS имеет инструкции для компиляции ядра Linux с поддержкой YAFFS (использующий Точный 32-разрядный):
Wiki Ubuntu также имеет общую информацию о компиляции Вашего собственного ядра.
С другой стороны, попытайтесь использовать yaffs2utils
извлечь и восстановить изображение.
Обратите внимание, что из-за ошибки, необходимо указать --yaffs-ecclayout
опция или это тихо перестанут работать. Таким образом для извлечения попробуйте что-то как
git clone https://code.google.com/p/yaffs2utils/
cd yaffs2utils && make && cd ..
./yaffs2utils/unyaffs2 --yaffs-ecclayout system.img tempdir
Теоретически можно также восстановить использование изображения mkyaffs2
, но я не мог заставить это работать (результат не был загрузочным).
Я нашел программу, Yaffey, который позволяет Вам отредактировать изображение YAFFS2 с помощью GUI:
В то время как домашняя страница говорит, что это только для Windows с тривиальным изменением, это компилирует на Точной Ubuntu. Сделать так:
sudo apt-get install qt-sdk
hg clone https://code.google.com/p/yaffey/
В файле yaffey/yaffs2/yaffs_guts.h
, измените строку
typedef unsigned loff_t;
кому:
#include <stdlib.h>
cd yaffey && qmake && make
./yaffey
.Когда я попробовал его, получающееся изображение, загруженное успешно в эмуляторе Android.
только для пользователей имеют дело с ext4 разреженным изображением (android system.img
)
Android изначально использовал
blockquote>YAFFS2
в качестве файловой системы. После Android 2.3 файловая система сталаext4
.из https://stackoverflow.com/questions/23946910/
1. определить тип изображения
file system.img system.img: VMS Alpha Exectutable
// это yaffs2 image
file system.img system.img: data
// это может быть разреженное изображение ext4
blkid -pO 40 system.img system.img: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"
// да, это разреженное ext4 image
// 40 = sizeof (struct sparse_header) + sizeof (struct chunk_header)
2. simg2img для разреженного изображения ext4
как ответ mfisch.
преобразовать разреженное изображение в необработанное изображение:
./simg2img system.img system_raw.img
mount:
sudo mount -t ext4 system_raw.img tmpmnt/
После следующего nospam & amp; Механические шаги Улитки Мне также пришлось внести это изменение в main.cpp
изменить:
#include <QtGui/QApplication>
на:
#include <QtWidgets/QApplication>
Затем он, наконец, скомпилирован
Я думал, что обновлю это с Ubuntu 13. Я должен был внести некоторые изменения, чтобы заставить это компилировать это, я надеюсь, поможет другим.
Отредактируйте yaffey.pro и под
QT += core gui
Добавить
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Редактирование MainWindow.cpp и поиск/замена:
setResizeMode
с setSectionResizeMode
Отредактируйте YaffTreeView.cpp и под
#include <QDebug>
Добавить
#include <QMimeData>
Необходимо затем смочь скомпилировать.