Android system.img 解压-修改-打包

在Android客制化案子中经常有种需求,在不重新编译源码的情况下修改Android的system.img例如对于不同客户需要更换不同的开机东环。那么本文就以这种需求为例讲解一下如何解压挂载Android系统的system.img然后修改客制化后再重新打包新的image

  • 查看system.img文件类型
    通过file命令查看system.img的文件类型
    root@home:~/Android_BSP$ file system.img
    system.img: data
    root@home:~/Android_BSP$ 
    
    这种格式无法挂载打开image我们需要通过下面命令修改文件类型为ext4格式
     
    root@home:~/Android_BSP$ out/host/linux-x86/bin/simg2img system.img sytem_raw.img
    root@home:~/Android_BSP$ 
    root@home:~/Android_BSP$ file system_raw.img
    system.img.ext4: Linux rev 1.0 ext4 filesystem data, UUID=da594c53-9beb-f85c-85c5-cedf76546f7a, volume name "system" (extents) (large files)
    root@home:~/Android_BSP$ 
  • 挂载打开system.img
    执行下面命令创建temp目录并挂载system.img,这样就可打开system.img并且访问修改了
    root@home:~/Android_BSP$ mkdir temp
    root@home:~/Android_BSP$ mount -t ext4 -o loop system_raw.img.ext4 tmp
    root@home:~/Android_BSP$ cd temp/
    root@home:~/Android_BSP/temp$ ls
    app  build.prop  fonts      lib         media     recovery-from-boot.p  tts  vendor
    bin  etc         framework  lost+found  priv-app  rt                    usr  xbin
    root@home:~/Android_BSP/temp$ 
    
  • 修改system.img
    现在就可以任意客制化system.img了,我们执行下面命令来修改系统的开启动画,将我们需要添加的Android动画资源拷贝到system文件系统给的/media目录下,并修改权限
    root@home:~/Android_BSP/temp$ cd media 
    root@home:~/Android_BSP/temp/media$ ls
    audio  bootanimation.zip
    root@home:~/Android_BSP/temp/media$ cp /media/root/4219-AEAE/bootanimation.zip ./
    root@home:~/Android_BSP/temp/media$ chmod 0777 bootanimation.zip 
    root@home:~/Android_BSP/temp/media$ 
    
  • 重新打包system.img
    执行下面命令重新打包image
    root@home:~/Android_BSP$ out/host/linux-x86/bin/make_ext4fs -s -l 1024M -a system system_new.img temp/
    Creating filesystem with parameters:
        Size: 1073741824
        Block size: 4096
        Blocks per group: 32768
        Inodes per group: 8192
        Inode size: 256
        Journal blocks: 4096
        Label: 
        Blocks: 262144
        Block groups: 8
        Reserved block group size: 63
    Created filesystem with 2776/65536 inodes and 230537/262144 blocks
    root@home:~/Android_BSP$ 
    "-s"  以ext4的S模式制作
    "-l 1024M" 表示分区大小,可以参考挂载前的image的大小
    "-a system" 是指这个img用于android系统挂载点是/system
  • 检查system类型
    执行file命令检查生成的image的类型
    root@home:~/Android_BSP$ file system_new.img
    system_new.img: data
    root@home:~/Android_BSP$ 
    类型和解压缩之前的类型一致,我们就可以使用该image烧录系统了。系统开机后就可以看到我们修改的Android动画了
     

你可能感兴趣的:(Android,Android,system.img,simg2img,make_ext4fs)