web-dev-qa-db-ja.com

yaffs2ファイルシステムをマウントする方法

マウントするyaffs2ファイルシステム(Androidパーティションイメージ)を使用する.imgファイルがあります。 mountコマンドで実行できないようです。これどうやってするの? Ubuntu 12.04を使用しています。

また、それを抽出したくありません(unyaffsを使用してそれを行う方法を知っています)。マウントしたいです。

6
gsingh2011

Ubuntuは現在、YAFFS2をサポートしていません。ファイルシステムのマウントサポートを提供するYAFFS2カーネルモジュールをパッケージ化する機能要求があります: [needs-packaging] yaffs2

カーネルのサポート

したがって、現在、マウントのサポートが必要な場合は、自分でコンパイルする必要があります。 YAFFS Webサイトには、LinuxカーネルをYAFFSサポート付きでコンパイルするための指示があります(Precise 32ビットを使用):

Ubuntu wikiには、 独自のカーネルのコンパイル に関する一般情報もあります。

抽出および再構築

または、 yaffs2utils を使用してイメージを抽出および再構築してください。

バグが原因--yaffs-ecclayoutオプションを指定する必要があります。指定しないと、暗黙的に失敗します。抽出するには、次のようなものを試してください

git clone https://code.google.com/p/yaffs2utils/
cd yaffs2utils && make && cd ..
./yaffs2utils/unyaffs2 --yaffs-ecclayout system.img tempdir

理論的には、mkyaffs2を使用してイメージを再構築することもできますが、動作させることができませんでした(結果は起動できませんでした)。

ヤッフィー

GUIを使用してYAFFS2イメージを編集できるプログラム Yaffey を見つけました。

Yaffey

ホームページにはWindows専用であると書かれていますが、 些細な変更を加えて Ubuntu Preciseでコンパイルします。そうするために:

  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

0. yaffs2 OR ext4

Androidは元々YAFFS2をファイルシステムとして使用していました。 Android 2.3の後、ファイルシステムはext4になりました。

from https://stackoverflow.com/questions/23946910/

1.画像タイプを検出する

file system.img
system.img: VMS Alpha Exectutable

//これはyaffs2画像です

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スパース画像です

// 40 = sizeof(struct sparse_header)+ sizeof(struct chunk_header)

ref: simg2imgソースコード

2. ext4スパースイメージのsimg2img

これはスパースファイルシステムです。まず、simg2imgを使用してスパースを解除する必要があると思います。 Nexus7イメージで使用したときのために here に投稿したext4_utilsの一部としてダウンロードできます。イメージを解凍し、次のようにマウントします。

開梱:

./simg2img rootfs.img rootfs.ext4

マウント:

Sudo mount -o loop rootfs.ext4 tmpmnt/

解凍してハッキングしたら、make_ext4fsを使用して再構築します。おそらく Nexus7の画像のハッキングについて私が作成したブログエントリを読んでください この記事のほとんどと、それが参照するスクリプトが役立つためです。

4
mfisch

これをUbuntu 13でアップデートすると思いました。他の人の助けになるように、いくつかの変更を加えてコンパイルする必要がありました。

  1. Yaffey.pro以下を編集します

    QT += core gui

    追加

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

  2. MainWindow.cppを編集して検索/置換:

    setResizeMode with setSectionResizeMode

  3. YaffTreeView.cpp以下を編集します

    #include <QDebug>

    追加

    #include <QMimeData>

これでコンパイルできるはずです。

2
nospam2k

NospamとMechanical Snailの手順を実行した後、main.cppでこの変更を行う必要がありました

変化する:

#include <QtGui/QApplication>

に:

#include <QtWidgets/QApplication>

その後、最終的にコンパイルしました

1
Progenitus

ext4スパースイメージ(Android system.img)を扱うユーザー向け


0. yaffs2 OR ext4

Androidは元々YAFFS2をファイルシステムとして使用していました。 Android 2.3の後、ファイルシステムはext4になりました。

from https://stackoverflow.com/questions/23946910/

1.画像タイプを検出する

file system.img
system.img: VMS Alpha Exectutable

//これはyaffs2画像です

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スパース画像です

// 40 = sizeof(struct sparse_header)+ sizeof(struct chunk_header)

ref: simg2imgソースコード

2. ext4スパースイメージのsimg2img

mfischの答えとして。

スパース画像を生画像に変換する:

./simg2img system.img system_raw.img

マウント:

Sudo mount -t ext4 system_raw.img tmpmnt/
0
yurenchen