build your own kernel Image for Nexus10

公司买了一台Nexus10,上面搭在最新的Android4.2系统。

由于自android4.1以后,在现实模块有相当大的改进,android4.1增加了vsync同步,使得显示更加顺滑流畅,android4.2增加了external display,使得对HDMI的支持更加完善。于是想以Nexus10为载体,研究下对应的内核在这方面的改动。

android不愧是开放式系统,拿到一台标准的android设备,可以在android官网下载对应的源码,然后自己编译并烧写到设备中,让设备运行自己编译的代码,对于linux hacker来说,这是一个十分有趣的事情。

于是想自己编译一份代码在Nexus10上跑起来,其实公司其他部门已经有同事做到了,不过和这位同事不熟,还是自己来研究好了,通过google,折腾了一天,终于成功了,步骤如下:

(1)下载Nexus10内核源码

git clone https://android.googlesource.com/kernel/exynos.git

(2)编译

make ARCH=arm manta_defconfig //manta是Nexus10的开发代号

make ARCH=arm CROSS_COMPILE=/usr/local/arm/toolchain/arm-eabi-4.6/bin/arm-eabi-

最终编译会生成arch/arm/boot/zImage,就是运行android系统所需要的内核镜像。

这里需要注意的是,cross tool需要用4.6.x的版本,低版本的编译不过。

(3) 生成包含内核镜像的boot.img

标准的android ROM内核镜像是和android编译生成的ramdisk.img一起打包在boot.img 里面在。所以需要用自己编译生成的zImage重新生成boot.img。打包过程如下:

(a)先从google官网下载Nexus10的最新固件,取得里面的boot.img ,并从boot.img 里面提取ramdisk.img

./getramdisk.py boot.img //getramdisk.py是一个脚本,在xda论坛上找的

(b)用自己编译的zImage和上一步提取的ramdisk.img 重新打包,生成新的boot.img

./mkbootimg --kernel zImage --ramdisk ramdisk.img -o new-boot.img //mkbootimg 也是在xda论坛上找的工具

(4)把新的new-boot.img 下载到Nexus10的内存中运行

(a)用usb连接Nexus10和PC,确保adb功能可用,用adb命令是Nexus10进入fastboot模式

adb reboot bootloader

(b)下载new-boot.img 到Nexus10的内存中运行

fastboot boot new-boot.img

成功后机器会自动重启,这时候系统跑的就是自己编译的内核,可以通过cat proc/version命令验证。

需要注意的是,这种方式,只是把boot.img下载到机器的内存里面运行,flash中固化的还是机器自带的boot.img,如果希望把自己的boot.img固化到系统中,命令如下

fastboot flash boot new-boot.img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值