Como montar um sistema de arquivos yaffs2

6

Eu tenho um arquivo .img que usa o sistema de arquivos yaffs2 (uma imagem de partição do Android) que eu quero montar. Eu não consigo fazer isso com o comando mount. Como posso fazer isso? Estou usando o Ubuntu 12.04.

Além disso, não quero extraí-lo (sei como fazer isso usando unyaffs ). Eu quero montá-lo.

    
por gsingh2011 30.12.2012 / 05:05

5 respostas

13

O Ubuntu atualmente não suporta YAFFS2. Há uma solicitação de recurso para empacotar o módulo do kernel YAFFS2, que forneceria suporte de montagem para o sistema de arquivos: [ embalagem de necessidades] yaffs2 .

Suporte ao kernel

Assim, atualmente, se você precisar de suporte para montagem, você mesmo terá que compilá-lo. O site do YAFFS tem instruções para compilar um kernel Linux com suporte YAFFS (usando Precise 32-bit):

O wiki do Ubuntu também tem informações gerais sobre compilação do seu próprio kernel .

Extrair e reconstruir

Como alternativa, tente usar yaffs2utils para extrair e reconstruir a imagem.

Observe que devido a um bug , você deve especificar a opção --yaffs-ecclayout ou falhará silenciosamente. Então, para extrair, tente algo como

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

Teoricamente, você também pode reconstruir a imagem usando mkyaffs2 , mas não consegui fazê-la funcionar (o resultado não foi inicializável).

Yaffey

Eu encontrei um programa, Yaffey , que permite editar uma imagem YAFFS2 usando uma GUI:

Enquanto a home page diz que é apenas para Windows, com uma alteração trivial , ela é compilada no Ubuntu Precise . Para fazer isso:

  1. Instalar dependências: sudo apt-get install qt-sdk
  2. hg clone https://code.google.com/p/yaffey/
  3. No arquivo yaffey/yaffs2/yaffs_guts.h , altere a linha

    typedef unsigned loff_t;
    

    para

    #include <stdlib.h>
    
  4. Compilação: cd yaffey && qmake && make
  5. Executar ./yaffey .
  6. Abra sua imagem, faça as alterações desejadas e salve (ela se recusa a sobrescrever; você precisa selecionar um nome de arquivo diferente).

Quando tentei, a imagem resultante foi inicializada com sucesso no emulador do Android.

    
por Mechanical snail 14.04.2013 / 01:20
4

0. yaffs2 OU ext4

  

O Android originalmente usava YAFFS2 como o sistema de arquivos. Depois do Android 2.3, o sistema de arquivos tornou-se ext4 .

de link

1. detectar o tipo de imagem

file system.img
system.img: VMS Alpha Exectutable

// esta é a imagem yaffs2

file system.img
system.img: data

// isso talvez ext4 imagem esparsa

blkid -pO 40 system.img 
system.img: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"

// sim, é ext4 imagem esparsa

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

ref: código-fonte do simg2img

2. simg2img para extensa imagem esparsa

É um sistema de arquivos esparso, eu acho que você vai precisar de unsparsify primeiro usando simg2img . Você pode baixá-lo como parte de ext4_utils que eu postei em aqui para quando eu usei nas imagens do Nexus7. Desembale a imagem e monte da seguinte forma:

Desembale:

./simg2img rootfs.img rootfs.ext4

Montagem:

sudo mount -o loop rootfs.ext4 tmpmnt/

Depois de descompactar e hackear, você o reconstrói usando make_ext4fs. Você provavelmente deve ler a entrada do blog que eu fiz sobre como hackear a imagem do Nexus7 , pois ela cobre a maior parte disso e do script Referências podem ser úteis.

    
por mfisch 30.12.2012 / 06:19
2

Eu pensei em atualizar isso com o Ubuntu 13. Eu tive que fazer algumas mudanças para fazer a compilação que espero que ajude os outros.

  1. Edite yaffey.pro e em

    QT += core gui

    Adicionar

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

  2. Edite MainWindow.cpp e pesquise / substitua:

    setResizeMode com setSectionResizeMode

  3. Edite YaffTreeView.cpp e em

    #include <QDebug>

    Adicionar

    #include <QMimeData>

Você deve então poder compilar.

    
por nospam2k 14.06.2013 / 19:54
1

Depois de seguir nospam & amp; Etapas do Caracol Mecânico Eu também tive que fazer essa alteração no main.cpp

mudança:

#include <QtGui/QApplication>

para:

#include <QtWidgets/QApplication>

Então finalmente compilou

    
por Progenitus 25.06.2014 / 14:48
0

apenas para usuários lidarem com ext4 sparse image (android system.img )

0. yaffs2 OU ext4

  

O Android originalmente usava YAFFS2 como o sistema de arquivos. Depois do Android 2.3, o sistema de arquivos tornou-se ext4 .

de link

1. detectar tipo de imagem

file system.img
system.img: VMS Alpha Exectutable

// esta é a imagem yaffs2

file system.img
system.img: data

// isso talvez ext4 imagem esparsa

blkid -pO 40 system.img 
system.img: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"

// sim, é ext4 imagem esparsa

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

ref: código-fonte do simg2img

2. simg2img para extensa imagem esparsa

como resposta do mfisch.

converter imagem esparsa em imagem bruta:

./simg2img system.img system_raw.img

mount:

sudo mount -t ext4 system_raw.img tmpmnt/
    
por yurenchen 07.09.2017 / 14:52