S5P4418与S5P6618的Android boot.img的解压与压缩, Sparse ext4文件系统

文件类型

4418的boot.img是由kenrel + uramdisk组成的ext4 并且是sparse形式的image, 这里面的sparse是紧凑的意思,即将ext4文件系统中的内容为zero的地方“压缩”起来, 从而减少size。

制作

这种类型的image,使用make_ext4fs, 并使用-s选项制作而成,例如在4418中(其他Android或者文件系统也是类似),命令如下:

 

其中-a为lable,最后的参数是制作到文件系统中的目录,因此,制作完成后,可以看到file工具识别到的是data 数据文件:

转化

对此我们可以使用simg2img工具来转换成标准的ext4文件系统的文件:

此时file工具即可识别:

也可以看到两者的size变化:

sparse型是14M,而其filesystem其实是64M。

boot.img的解压与压缩

我们可以直接mount并查看,以及更改内部的内容,就像disk中的partition with ext4 FS一样,例如下面是命令:

可以看到里面有uImage,以及root.img.gz,前者为kernel后者为uramdisk,同样也可以查看其类型:

如果我们需要更改uramdisk,那么可以按照如下方式进行:

然后得到一个cpio文件:

使用cpio解压即可:

可以看到内容如下,包含原来的root.img:

也可以再次压缩与制作uramdisk:

然后拷贝到mount了的ext4文件系统中,然后再umount raw ext4,最后还需要转换成sparse image:

关于uramdisk也可以看我以前的ppt分享:

PPT分享: Linux启动流程 关于initrd与initramfs的区分及其发展历程

Leave a Reply

Your email address will not be published. Required fields are marked *