ubuntu中挂载android ROM中的system.img镜像失败,错误提示:
mount: wrong fs type, bad option, bad superblock on /dev/loop0,missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so.
先来分析一下原因:
system.img有两种常见的格式:raw和sparse。
raw:即raw ext4 image,也就是经常说的raw image,用file命令可以查看他的特点,如图所示。raw是完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount挂载:
sudo mount -o loop system.img /mnt
sparse:是sparse ext4 image,也就是常说的simg, 用file命令可以查看他的属性,如图所示。看见了吗?system_sparse.img: Android sparse image,它是进行了稀疏描述的raw ext4文件,它尺寸比较小,因为它去掉了全零的无效填充数据,但是,这样造成我们不能直接使用mount挂载,需要转换成raw再挂载,下面我们来介绍如何转换。
安卓本身提供了raw和sparse之间的转换工具simg2img和img2simg,而且ubuntu将这个工具打包成了一个叫做android-tools-fsutils的软件包,我们只需要安装上这个工具就可以使用simg2img这个工具了,linux就是方便,要是在windows上,光是安装这个工具就得费点时间。
sudo apt install android-tools-fsutils
工具安装好了之后就可转换了,只需要一条简单的命令:
simg2img system_sparse.img system_raw.img
simg2img后不带参数,是simg2img的使用方法,如图:
现在我们得到了可以挂载的raw image,我们再挂载试试:
sudo mount -o loop system_raw.img /mnt
成功,没有报错,ls /mnt/可以看到system.img的内容了。