Как смонтировать файловую систему yaffs2

У меня есть файл .img, который использует файловую систему yaffs2 (образ раздела Android), которую я хочу смонтировать. Я не могу сделать это с помощью команды mount. Как я могу это сделать? Я использую Ubuntu 12.04.

Кроме того, я не хочу его извлекать (я знаю, как это сделать, используя unyaffs). Я хочу смонтировать его.

6
задан 14 April 2013 в 02:55

5 ответов

0. yaffs2 ИЛИ ext4

Android изначально использовал 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)

ref: исходный код simg2img

2. simg2img для ext4 разреженного изображения

Это разреженная файловая система, я думаю, вам сначала нужно ее разобрать, используя simg2img . Вы можете скачать его как часть ext4_utils, которую я разместил на здесь , когда я использовал его на изображениях Nexus7. Распакуйте образ и смонтируйте его следующим образом:

Распакуйте:

./simg2img rootfs.img rootfs.ext4

Монтируйте:

sudo mount -o loop rootfs.ext4 tmpmnt/

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

0
ответ дан 14 April 2013 в 02:55

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

Я нашел программу, Yaffey, который позволяет Вам отредактировать изображение YAFFS2 с помощью GUI:

Yaffey

В то время как домашняя страница говорит, что это только для Windows с тривиальным изменением, это компилирует на Точной Ubuntu. Сделать так:

  1. Зависимости от установки: sudo apt-get install qt-sdk
  2. hg clone https://code.google.com/p/yaffey/
  3. В файле yaffey/yaffs2/yaffs_guts.h, измените строку

    typedef unsigned loff_t;
    

    кому:

    #include <stdlib.h>
    
  4. Компиляция: cd yaffey && qmake && make
  5. Выполненный ./yaffey.
  6. Откройте свое изображение, внесите Ваши желаемые изменения и сохраните (оно отказывается перезаписывать; необходимо выбрать другое имя файла).

Когда я попробовал его, получающееся изображение, загруженное успешно в эмуляторе Android.

13
ответ дан 14 April 2013 в 02:55

только для пользователей имеют дело с ext4 разреженным изображением (android system.img)


0. yaffs2 ИЛИ ext4

Android изначально использовал 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)

ref: исходный код simg2img

2. simg2img для разреженного изображения ext4

как ответ mfisch.

преобразовать разреженное изображение в необработанное изображение:

./simg2img system.img system_raw.img

mount:

sudo mount -t ext4 system_raw.img tmpmnt/
0
ответ дан 14 April 2013 в 02:55

После следующего nospam & amp; Механические шаги Улитки Мне также пришлось внести это изменение в main.cpp

изменить:

#include <QtGui/QApplication>

на:

#include <QtWidgets/QApplication>

Затем он, наконец, скомпилирован

0
ответ дан 14 April 2013 в 02:55

Я думал, что обновлю это с Ubuntu 13. Я должен был внести некоторые изменения, чтобы заставить это компилировать это, я надеюсь, поможет другим.

  1. Отредактируйте yaffey.pro и под

    QT += core gui

    Добавить

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

  2. Редактирование MainWindow.cpp и поиск/замена:

    setResizeMode с setSectionResizeMode

  3. Отредактируйте YaffTreeView.cpp и под

    #include <QDebug>

    Добавить

    #include <QMimeData>

Необходимо затем смочь скомпилировать.

2
ответ дан 14 April 2013 в 02:55

Другие вопросы по тегам:

Похожие вопросы: