如何挂载 yaffs2 文件系统

gsi*_*011 8 filesystem mount android

我有一个 .img 文件,它使用我想要挂载的 yaffs2 文件系统(Android 分区映像)。我似乎无法使用 mount 命令来做到这一点。我怎样才能做到这一点?我正在使用 Ubuntu 12.04。

另外,我不想提取它(我知道如何使用unyaffs)。我想安装它。

Mec*_*ail 15

Ubuntu 目前不支持 YAFFS2。有一个打包 YAFFS2 内核模块的功能请求,它将为文件系统提供挂载支持:[needs-packaging] yaffs2

内核支持

因此,目前,如果您需要挂载支持,则必须自己编译。YAFFS 网站提供了编译支持 YAFFS 的 Linux 内核的说明(使用 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
Run Code Online (Sandbox Code Playgroud)

从理论上讲,您也可以使用 重建映像mkyaffs2,但我无法使其正常工作(结果无法启动)。

雅菲

我找到了一个Yaffey程序,它可以让您使用 GUI 编辑 YAFFS2 图像:

雅菲

虽然主页说它仅适用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;
    
    Run Code Online (Sandbox Code Playgroud)

    #include <stdlib.h>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 编译: cd yaffey && qmake && make
  5. 运行./yaffey
  6. 打开您的图像,进行所需的更改,然后保存(它拒绝覆盖;您必须选择不同的文件名)。

当我尝试它时,生成的图像在 Android 模拟器中成功启动。


mfi*_*sch 4

0.yaffs2 或 ext4

Android最初用作YAFFS2文件系统。Android 2.3之后,文件系统变成了ext4.

来自/sf/ask/1676283731/

1.检测图像类型

file system.img
system.img: VMS Alpha Exectutable
Run Code Online (Sandbox Code Playgroud)

// 这是 yaffs2 图像

file system.img
system.img: data
Run Code Online (Sandbox Code Playgroud)

//这可能是 ext4 稀疏图像

blkid -pO 40 system.img 
system.img: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" VERSION="1.0" TYPE="ext4" USAGE="filesystem"
Run Code Online (Sandbox Code Playgroud)

//是的,这是ext4稀疏图像

//40 = sizeof(struct稀疏头) + sizeof(结构chunk_header)

参考:simg2img源代码

2. ext4稀疏图像的simg2img

这是一个稀疏文件系统,我认为您需要首先使用simg2img对其进行非稀疏化。您可以将其作为 ext4_utils 的一部分下载,当我在 Nexus7 映像上使用它时,我已将其发布在此处。解压镜像并挂载如下:

拆包:

./simg2img rootfs.img rootfs.ext4
Run Code Online (Sandbox Code Playgroud)

山:

sudo mount -o loop rootfs.ext4 tmpmnt/
Run Code Online (Sandbox Code Playgroud)

一旦你解压并破解它,你就可以使用 make_ext4fs 重建它。您可能应该阅读我撰写的有关破解 Nexus7 映像的博客文章,因为它涵盖了大部分内容,并且它引用的脚本可能很有用。