web-dev-qa-db-fra.com

Comment monter un système de fichiers yaffs2

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.

6
gsingh2011

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 .

Support du noyau

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 .

Extraire et reconstruire

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).

Yaffey

J'ai trouvé un programme, Yaffey , qui vous permet de modifier une image YAFFS2 à l'aide d'une interface graphique:

Yaffey

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:

  1. Dépendances d'installation: Sudo apt-get install qt-sdk
  2. hg clone https://code.google.com/p/yaffey/
  3. Dans le fichier yaffey/yaffs2/yaffs_guts.h, changez la ligne

    typedef unsigned loff_t;
    

    à

    #include <stdlib.h>
    
  4. Compiler: cd yaffey && qmake && make
  5. Exécutez ./yaffey.
  6. Ouvrez votre image, effectuez les modifications souhaitées et enregistrez-la (elle refuse d'écraser; vous devez sélectionner un nom de fichier différent).

Lorsque je l'ai essayé, l'image résultante a démarré avec succès dans l'émulateur Android.

13
Mechanical snail

0. yaffs2 OR ext4

À l'origine, Android utilisait YAFFS2 en tant que système de fichiers. Après Android 2.3, le système de fichiers est devenu ext4.

à partir de https://stackoverflow.com/questions/23946910/

1. détecter le type d'image

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

2. simg2img for ext4 sparse image

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.

4
mfisch

Je pensais mettre à jour ceci avec Ubuntu 13. Je devais faire quelques changements pour le compiler et j'espère pouvoir aider les autres.

  1. Editer yaffey.pro et sous

    QT += core gui

    Ajouter

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

  2. Éditez MainWindow.cpp et recherchez/remplacez:

    setResizeMode avec setSectionResizeMode

  3. Modifier YaffTreeView.cpp et sous

    #include <QDebug>

    Ajouter

    #include <QMimeData>

Vous devriez alors pouvoir compiler.

2
nospam2k

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é

1
Progenitus

juste pour les utilisateurs avec image fragmentée ext4 (Android system.img)


0. yaffs2 OR ext4

À l'origine, Android utilisait YAFFS2 en tant que système de fichiers. Après Android 2.3, le système de fichiers est devenu ext4.

à partir de https://stackoverflow.com/questions/23946910/

1. détecter le type d'image

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

2. simg2img for ext4 sparse image

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/
0
yurenchen