1.解压android_x86_64.iso
原文件android_x86_64.iso在linux平台可直接通过mount进行挂载,将其中内容复制到新建目录中
mkdir mnt //创建用于挂载的目录
mkdir newiso //创建用于编辑新镜像的目录
sudo mount android_x86_64.iso mnt //挂载镜像
sudo cp -rf mnt/* newiso/ //将镜像中文件提取至新目录
镜像文件内容如下所示:
image.png
2.解压system.sfs
system.sfs文件为压缩过的系统镜像,系统相关的修改主要发生该文件中。这里需要使用unsquashfs命令对system.sfs进行解压得到system.img文件
unsquashfs system.sfs //执行后会在当前路径创建squashfs-root目录
3.提取并编辑system.img
system.img 是Android 系统中用来存放系统文件的镜像,对system.img的提取过程同前面的iso文件一样,先挂载,再提取出来。
cd squashfs-root
mkdir mnt //创建用于挂载的目录
mkdir newsys //创建用于编辑新镜像的目录
sudo mount system.img mnt //挂载镜像
sudo cp -rf mnt/* newsys/ //将镜像中文件提取至新目录
系统镜像内容如下图所示:
image.png
3. 重打包system.img
修改完成后,需要将newsys下的内容重新打包到system.img中,这里需要参考android系统编译后的打包流程。android通过python脚本AOSP_PATH/build/make/tools/releasetools/build_image.py生成system.img文件,该脚本输入参数包括镜像输入输出路径以及配置参数文件,最终调用
$AOSP_PATH/out/host/linux-x86/bin/mkuserimg_mke2fs.sh脚本构建system.img。这里我们直接使用mkuserimg_mke2fs.sh来完成system.img重打包。(如果没进行过源码编译,可下载工具包https://download.csdn.net/download/xq7997879/87362624)
sudo mkuserimg_mke2fs.sh $YOURPATH/newsys new.img ext4 system 0 -j 0 -D newsys -L system -M 0 file_contexts.bin //生成new.img,完成镜像构建
4. 构建system.sfs
前面通过unsquashfs对system.img进行解压,这里使用squashfs对new.img进行压缩,并将生成的system.sfs覆盖newiso目录下的system.sfs
mksquashfs new.img system.sfs -noappend -comp gzip
mv -f system.sfs $YOURPATH/newiso/system.sfs //替换system.sfs
5. 构建android_x86_64.iso
sudo mkisofs -vJURT -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -input-charset utf-8 -o android_x86_64_new.iso $YOURPATH/newiso
网友评论