先来看看解包脚本unpack.sh, 解压后文件在...._tmp目录中
IMAGE_NAME=$1
gunzip -c -S .img ${IMAGE_NAME}.img > ${IMAGE_NAME}_src
rm -rf ${IMAGE_NAME}_tmp
mkdir ${IMAGE_NAME}_tmp && cd ${IMAGE_NAME}_tmp && cpio -i -F ../${IMAGE_NAME}_src
然后再来看看打包脚本pack.sh,
#!/bin/bash
IMAGE_NAME=$1
cd ${IMAGE_NAME}_tmp && find * | cpio -o -H newc > ../${IMAGE_NAME}_new && cd .. && gzip -c ${IMAGE_NAME}_new > ${IMAGE_NAME}-new.img
我们可以把要替换的东西放在之前的...tmp文件中,然后执行pack.sh生成新的image。
下面我们举个例子:
我们需要把ramdisk.img中的adbd替换我们自己的。
我们先建一个目录,然后把pack.sh unpack.sh ramdisk.img都放入该目录
第一步执行./unpack.sh ramdisk
执行这步后会有一个ramdisk_tmp目录,进这个目录把我们的adbd替换这里面的。
第二步执行./pack.sh ramdisk
这样会产生一个ramdisk-new.img, 这个就是我们所需要的