1、一个linux环境(你的计算机水平至少能够使用VirtualBox装一个Ubuntu系统同时还能知道在哪里输入命令行)
2、完整的官方ROM包(包含cache.img hidden.img modem.bin recovery.img system.img这几个文件)
3、最新的Superuser.app、su程序(下载请自行Google)
4、ex4_utils工具包(下载后有三个文件:make_ext4fs mkuserimg.sh simg2img,作用是linux环境下解压三星*.img和打包三星*.img的工具,下载请自行Google)
5、i9300 Odin刷机程序(下载请自行Google)制作ROM的 *** 作需在linux环境下进行(当然应该也有windows环境下的 *** 作方法,方法请自行Google),不要一听linux就觉得很难,其实要做到很简单,和windows的cmd差不多,制作流程为:解开官方.tar的ROM包,并将三星的.img格式转换成ext文件格式(你需要改动的仅仅是system.img分区内容),完成程序替换或精简(此时加入Root),然后打包为三星.img格式,最后压缩成.tar的ROM刷机包。1、解开一个完整的.tar刷机包,得到cache.img hidden.img modem.bin recovery.img system.img五个分区镜像文件:
windows下你可以使用rar直接打开.tar文件解压,liunx环境下你需要这样输入相关命令:tar xvf xxx.tar.md5xxx.tar.md5是你下载的官方rom包,有的rom包没有经过md5校验最后的扩展名为.tar;命令行中的xvf为tar命令参数详细请Google。2、官方ROM中的.img文件为三星自家的分区格式,需要转换为标准的ext格式才能读取(格式转换有很多方法,windows环境也可转换,方法请自行Google)linux环境下使用前面提到的ex4_utils工具包,输入下面的命令:./simg2img system.img newsys.imgnewsys.img就是转后为标准分区格式的.img文件,sim2img文件可在ex4_utils工具包中找到。3、linux环境下挂载newsys.img:
新建一个文件夹tempmkdir temp将newsys.img挂载到tempmount -o loop newsys.img temp打开temp文件夹,是不是手机system分区内的文件都在这了?现在你可以精简你认为没有必要的程序,或者将原始程序替换为你制作好的美化程序。4、将这个ROM包制作成原始Rooted的,你需要从网上下载最新的SuperUser或SuperSU程序,还有su文件。
拷贝su到xbin文件夹:cp su temp/xbin/su赋予su文件超级权限:chmod 06755 temp/xbin/su现在你进入temp/xbin/文件夹,敲入ls,su文件变成红色的就说明已经有了超级权限。
拷贝Superuser.apk到app文件夹:cp Superuser.apk temp/app/Superuser.apk赋予Superuser文件超级权限:chmod 06755 temp/app/Superuser.apk现在你进入temp/app/文件夹,敲入ls,Spueruser文件变成红色的就说明已经有了超级权限。5、将你整理好的Temp文件夹打包回三星格式的.img镜像文件./mkuserimg.sh -s temp system.img ext4 tempdir 1536M6、最后制作属于你自己的完整刷机包,此时你可以组合你的Rom包,比如把modem.bin换成联通的基带,或者自己的cache.img:tar cvf 给你的刷机包起个名.tar cache.img hidden.img modem.bin recovery.img system.img也可加入校验md5sum -t 给你的刷机包起个名.tar >>给你的刷机包起个名.tar7、最后解除挂载umount temp8、用odin刷入你的自定义刷机包看看吧(刷机前别忘了wipe)。
祝你成功!觉得好就加个分呗。补充:获得定制system.img的另一种方法:
首先你已root,然后再手机上替换/system/app内的文件,直至你满意为止。
现在将你现在手机的/system分区备份,获得system.img
Windows环境下,cmd窗口输入:(前提是你会使用adb,方法请自行Google)adb shell
exit这样你就获得了你目前手机的system分区镜像,直接跳至上面的第6步,制作刷机包。注:由于本博客没有启用代码框插件,所以写本文是代码用b-quote所框住,所以在本文中所缩进去独立成行的均为输入命令。
不支持通刷,ROM不通刷的原因:1、因为硬件的不同,而不同的硬件需要不同的驱动。驱动在Android内核中,通常由硬件商提供,转交OEM集成优化。这些驱动并未提交到主流Linux内核中。
2、代码量巨大。
3、主流内核接纳周期长(Google为Android开发的代码至今仍在staging中)。所以在内核GPL协议的约束下,OEM都选择单独发布适配具体机型的内核源代码。另外各OEM商所采用的bootloader都各不相同,加载内核的基址即使出自同一家也不相同。基址是在内核中写死的。所以如果刷了不同设备的内核镜像会导致设备无法启动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)