安卓系统怎么才能替换ROM里的boot.img文件?

安卓系统怎么才能替换ROM里的boot.img文件?,第1张

boot镜像不是普通意义上的文件系统,而是一种特殊的Android定制格式,由boot header,压缩的内核,ramdisk以及second stage loader(可选)组成,可以从mkbootimgh文件中看到。

介绍一下bootimg文件的作用及修改方式: 

bootimg我们通常称之为“内核”,属于系统底层文件,它包含了手机系统软件和硬件相连接的一个渠道,这里包含了相机、cpu、gpu等驱动。

一般来说官方提供的内核相对于第三方的内核是相对稳定的,如果我们发现刷机包里没有bootimg文件,那么刷机完成后系统会使用刷机之前系统的内核,也就是内核保持不便,一般来说内核的升级才是系统真正的升级;内核文件记录了一些系统底层的核心功能和连接硬件驱动的作用,内核的优化能够给系统带来质的飞跃。

就比如HTC M8目前已经升级到了Android 50系统,那么我们刷入44版本的bootimg会有什么样的后果呢?一般来说这样跨版本刷bootimg会导致无法开的情况,对于大版本之间的升级绿茶强烈建议不要随意刷bootimg文件,bootimg文件不仅仅是和机型相对于的,而且和版本也相对应,绿茶就见过有新手朋友随意乱刷bootimg文件,导致手机无法开机的情况。

bootimg文件是可以修改的,建议在Linux环境下修改,当然我们也可以使用Windows系统来解压,简单的修改一些参数,但是要做到真正的代码优化,建议还是在Linux环境下进行。

下面说说我的移植方法。因为经验不足。所以方法可能不是很好。

希望有更好方法的朋友可以分享经验。

(1)下载自己设备的官方ROM(假设文件名是myromimg)和想移植的第三方自定义ROM(假设文件名是newromimg)

(2)解包。

在网上找到unimg工具。把unimg和ROM文件myromimg和newromimg都放在同一个目录下(假设是d:\rom目录)。把myromimg和newromimg文件分别拖到unimg上就可以开始解包。解包后,可以得到一个myromimgdump和newromimgdump的目录。

在d:\rom目录下新建两个目录,myrom和b。把myromimgdump目录中的RFSFAT16_BOOT_00000000000文件复制到myrom目录下。把newromimgdump目录中的RFSFAT16_BOOT_00000000000复制到newrom目录下。

(3)更新boot分区文件

在网上找bootimg工具。也放到d:\rom目录下。然后打开命令行窗口。依次输入如下命令

d:

cd \rom\myrom

\bootimgexe --unpack-bootimg RFSFAT16_BOOT_00000000000

(此命令会输出一些重要的信息,请一定要记下来,等一下打包boot文件时需要用到)

\bootimgexe --unpack-ramdisk

cd \newrom

\bootimgexe --unpack-bootimg RFSFAT16_BOOT_00000000000

\bootimgexe --unpack-ramdisk

这样就可以看到在myrom目录和newrom目录下分别解包出如下文件

kernel :Linux内核文件,这个文件不同设备有不同。所以为什么我们直接刷别人的ROM可能会出现白屏问题。

initrd目录 :这其实就是系统的根目录

cpiolisttxt :记录着initrd目录中每个文件的权限和用户信息,这文件是为了等一下打包用的。我们不用管它。

下面,把myrom目录和newrom目录中的initrd目录下的initsun4irc目录分别打开(请不要用记事本或写字板打开这个文件,因为这文件是UNIX格式,如果你用记事本或写字板打开,保存后会自动变成DOS格式,会破坏文件格式)

找到加载驱动的地方,如下图。把myrom目录中initsun4irc文件中对应的内容,替换掉newrom目录中initsun4irc的对应内容。

并记下myrom文件中要使用的驱动的文件名(等一下要更新system分区时需要用到)。

################################

# insmod vibrator

insmod /system/vendor/modules/sun4i-vibratorko (这是振动器驱动,如果不想使用振动器,可禁用这行)

chmod 777 /sys/class/timed_output/sun4i-vibrator/enable (如果禁用了振动器驱动,也要同时禁用这行)

#insmod key & tp driver

insmod /system/vendor/modules/goodix_touchko (这就是触控驱动,通常替换这个驱动已经足够)

insmod /system/vendor/modules/sun4i-keyboardko

# insmod mali driver

insmod /system/vendor/modules/umpko

insmod /system/vendor/modules/maliko

#csi module

insmod /system/vendor/modules/videobuf-coreko

insmod /system/vendor/modules/videobuf-dma-contigko

insmod /system/vendor/modules/gt2005ko

insmod /system/vendor/modules/sun4i_csi0ko

################################

把更新后的newrom目录中的initsun4irc文件保存到myrom目录中,替换myrom目录的对应的文件。

下面开始重新打包boot分区,请打开命令行窗口,依次输入如下内容:

d:

cd \rom\myrom

\bootimgexe --repack-ramdisk

\bootimgexe --repack-bootimg 0x40000000 "console=ttyS0,115200 rw init=/init loglevel=8" 2048 2048

(repack-bootimg后面的一大堆参数是根据之前unpack-bootimg时得到,请大家一定要改为自己设备对应的参数,否则无法启动)

打包成功后,得到bootimg文件。把bootimg文件改名为RFSFAT16_BOOT_00000000000,并复制到myromimgdump目录下,替换原来的文件。

(4) 更新system分区,如下操作需要在Ubuntu下完成。

把myromimgdump和newromimgdump中的RFSFAT16_SYSTEM_000000000文件复制到Ubuntu系统下的/root目录,分别改名为system-myrom和system-newrom,

上网下载ext4_utils工具,并编译出simg2img,mkuserimgsh,make_ext4fs 三个程序。并复制到/root目录下。

然后依次输入如下命令:

cd /root

/simg2img system-myrom system-myromimg

/simg2img system-newrom system-newromimg

mkdir /mnt/img /mnt/img2

mount -o loop system-newromimg /mnt/img

mount -o loop system-myromimg /mnt/img2

这时候,你就可以看到两个ROM的/system分区的内容。下面我们可以把官方ROM中的驱动复制到新ROM中。

cd /mnt/img/vendor/modules

cp -p /mnt/img2/vendor/modules/需要的文件ko /

哪些文件要复制过来,就要看(3)中你的设备要用哪些驱动了。

#########################

下面的文件是否需要替换,就要看你的设备与新ROM的区别大不大了,我的领先版2就没有替换这些文件。

/mnt/img/lib/hw/

/mnt/img/lib/libhardware

#########################

把驱动替换完毕后,就开始打包。

cd /root/

/mkuserimgsh -s /mnt/img RFSFAT16_SYSTEM_000000000 ext4 system 256M

最后一个参数是说把system打包成一个256MB的分区镜像,如果你的system大于256MB的话,程序执行会出错,试试改为512M。

把RFSFAT16_SYSTEM_000000000复制回到windows中,替换掉myromimgdump目录中对应的文件。

最后一步,打包。打开命令行

d:

cd \rom

verifycalc myromimgdump\RFSFAT16_SYSTEM_000000000 myromimgdump\RFSFAT16_VSYSTEMFS_000000

verifycalc myromimgdump\RFSFAT16_BOOT_00000000000 myromimgdump\RFSFAT16_VBOOT_0000000000

unimg -e myromimg

打包后的myromimg 就可以用livesuite 刷机了。

成功启动后,如果看到显示不正常的话,可能因为移植的ROM与我们设备的分辨率不一样。比如我把极光ROM移植到领先版2后就遇到这个问题。

我是通过添加如下设置到新ROM的/system/buildprop文件来解决的。

################

rosflcd_density=125

################

125这个值是我试出来,在领先版2下可以正常显示的。你可以自己改成喜欢的数值(在100-200期间改)。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/1257863.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-09
下一篇2023-09-09

随机推荐

  • 妮维雅活力清新爽身走珠液怎么样、怎么使用、保质期

    夏天由于天气炎热很多汗腺发达的人就会汗多,一出汗衣服就很容易湿透。对于女性朋友来说是非常尴尬的,为了避免这种尴尬的是事情发生,很多女性就会使用爽身走珠液,那么妮维雅活力清新爽身走珠液怎么样?怎么使用?保质期又是多久呢?下面我们一起来了解一下

    2024-04-15
    63200
  • 雅诗兰黛精华露和精华的区别

    雅诗兰黛精华露和精华的区别如下:1 质地:精华露是高浓缩后的护肤品,质地较为粘稠,更适合干性皮肤使用。而精华液是液体状态,质地更清爽一些,可在面霜之前使用,具有深度补水 和美白的作用。2 适用人群:精华露适合30岁以上的人群,而精华液适合各

    2024-04-15
    56000
  • 脸部紧致提拉用什么比较有效果?

    照镜子的时候我们经常会觉得是不是自己胖了呀,怎么感觉脸变大了呢,有点“松垮”的胖。其实不是胖了,而是我们的脸松弛下垂了!地心引力每天都在把我们的皮肤向下拉,特别是年龄增长胶原蛋白不足的时候,加上护肤不当、熬夜等诸多原因,导致我们的脸越来越垮

    2024-04-15
    56600
  • 30岁好用的抗衰老精华

    30岁好用的抗衰老精华 30岁好用的抗衰老精华 ,皮肤老化是每个人都要面对的问题,但是我们可以用护肤品来维持它的稳定性,避免老化问题的加速,让肤质保持更长时间的紧致。以下分享30岁好用的抗衰老精华

    2024-04-15
    60700
  • 干性皮肤用什么牌子的护肤品好?

    我是一个超级大干皮,夏天都会干到爆皮的那种,冬天要是不做好保湿再出门,简直就是灾难。我首先比较在意我眼部的状况,因为我黑眼圈比较重,平时就算是不上粉底液,都一定要用遮暇遮一下黑眼圈。前段时间,我一直在用网上推爆款的咖啡因眼霜。但是每次我上完

    2024-04-15
    47500
  • 妮维雅是欧莱雅旗下的吗 妮维雅是什么档次

    妮维雅是欧莱雅旗下的一款护肤品牌,它属于中档护肤品。妮维雅以其独特的产品设计和高质量的成分在市场上受到广大消费者的喜爱。让我们来讨论妮维雅是否属于欧莱雅旗下。是的,妮维雅是欧莱雅旗下的一个品牌。欧莱雅是全球知名的化妆品公司,拥有多个知名品牌

    2024-04-15
    45600
  • 十大防晒霜品牌有哪些?

    防晒霜排行榜10强有ANESSA安热沙、雅漾、曼秀雷敦、碧柔、怡思丁、苏菲娜、资生堂、玉兰油、妮维雅、确美同,具体如下:1、ANESSA安热沙始于1992年日本,资生堂集团旗下专业防晒品牌,主打防晒乳化妆水乳液与粉底等产品。2、雅漾雅漾

    2024-04-15
    46400

发表评论

登录后才能评论
保存