J'ai un fichier .img qui utilise le système de fichiers yaffs2 (une image de partition Android _) que je souhaite monter. Je n'arrive pas à le faire avec la commande mount. Comment puis-je faire ceci? J'utilise Ubuntu 12.04.
De plus, je ne veux pas l'extraire (je sais comment faire cela en utilisant unyaffs
). Je veux le monter.
Ubuntu ne prend actuellement pas en charge YAFFS2. Il existe une demande de fonctionnalité pour empaqueter le module de noyau YAFFS2, qui fournirait un support de montage pour le système de fichiers: [needs-packaging] yaffs2 .
Ainsi, actuellement, si vous avez besoin d’un support de montage, vous devrez le compiler vous-même. Le site Web YAFFS contient des instructions pour compiler un noyau Linux avec le support YAFFS (en utilisant Precise 32 bits):
Le wiki Ubuntu contient également des informations générales sur compiler votre propre noya .
Sinon, essayez d'utiliser yaffs2utils
pour extraire et reconstruire l'image.
Notez que à cause d'un bogue , vous devez spécifier l'option --yaffs-ecclayout
sinon elle échouera en silence. Donc, pour extraire, essayez quelque chose comme
git clone https://code.google.com/p/yaffs2utils/
cd yaffs2utils && make && cd ..
./yaffs2utils/unyaffs2 --yaffs-ecclayout system.img tempdir
Théoriquement, vous pouvez également reconstruire l'image à l'aide de mkyaffs2
, mais je n'ai pas réussi à la faire fonctionner (le résultat n'était pas amorçable).
J'ai trouvé un programme, Yaffey , qui vous permet de modifier une image YAFFS2 à l'aide d'une interface graphique:
Alors que la page d'accueil dit qu'il s'agit uniquement de Windows, avec un changement trivial , il compile sur Ubuntu Precise. Faire cela:
Sudo apt-get install qt-sdk
hg clone https://code.google.com/p/yaffey/
Dans le fichier yaffey/yaffs2/yaffs_guts.h
, changez la ligne
typedef unsigned loff_t;
à
#include <stdlib.h>
cd yaffey && qmake && make
./yaffey
.Lorsque je l'ai essayé, l'image résultante a démarré avec succès dans l'émulateur Android.
À l'origine, Android utilisait
YAFFS2
en tant que système de fichiers. Après Android 2.3, le système de fichiers est devenuext4
.
à partir de https://stackoverflow.com/questions/23946910/
file system.img
system.img: VMS Alpha Exectutable
// c'est l'image de yaffs2
file system.img
system.img: data
// cette image peut-être ext4 rare
blkid -pO 40 system.img
system.img: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"
// oui, c'est une image rare ext4
// 40 = sizeof (struct sparse_header) + sizeof (struct chunk_header)
ref: code source simg2img
C'est un système de fichiers clairsemé, je pense que vous aurez besoin de le décomposer d'abord avec simg2img . Vous pouvez le télécharger dans le cadre de ext4_utils que j'ai posté sur ici pour l'avoir utilisé sur les images Nexus7. Décompressez l’image et montez comme suit:
Déballer:
./simg2img rootfs.img rootfs.ext4
Monter:
Sudo mount -o loop rootfs.ext4 tmpmnt/
Une fois que vous l'avez décompressé et piraté, vous le reconstruisez à l'aide de make_ext4fs. Vous devriez probablement lisez le billet de blog que j'ai rédigé sur le piratage de l'image Nexus7 car il couvre la majeure partie de celui-ci et le script qu'il référence peut être utile.
Je pensais mettre à jour ceci avec Ubuntu 13. Je devais faire quelques changements pour le compiler et j'espère pouvoir aider les autres.
Editer yaffey.pro et sous
QT += core gui
Ajouter
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
Éditez MainWindow.cpp et recherchez/remplacez:
setResizeMode
avec setSectionResizeMode
Modifier YaffTreeView.cpp et sous
#include <QDebug>
Ajouter
#include <QMimeData>
Vous devriez alors pouvoir compiler.
Après avoir suivi les étapes de nospam & Mechanical Snail, j'ai également dû effectuer ce changement dans main.cpp
changement:
#include <QtGui/QApplication>
à:
#include <QtWidgets/QApplication>
Puis il a finalement compilé
juste pour les utilisateurs avec image fragmentée ext4 (Android system.img
)
À l'origine, Android utilisait
YAFFS2
en tant que système de fichiers. Après Android 2.3, le système de fichiers est devenuext4
.
à partir de https://stackoverflow.com/questions/23946910/
file system.img
system.img: VMS Alpha Exectutable
// c'est l'image de yaffs2
file system.img
system.img: data
// cette image peut-être ext4 rare
blkid -pO 40 system.img
system.img: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"
// oui, c'est une image rare ext4
// 40 = sizeof (struct sparse_header) + sizeof (struct chunk_header)
ref: code source simg2img
comme réponse de mfisch.
convertir une image fragmentée en image brute:
./simg2img system.img system_raw.img
monter:
Sudo mount -t ext4 system_raw.img tmpmnt/