美文网首页
Android内核3.10.73编译烧录到nexus 5X笔记

Android内核3.10.73编译烧录到nexus 5X笔记

作者: 西北望长安_zh | 来源:发表于2018-10-15 23:03 被阅读0次

    最近在学习Android内核,在将Android6.0.1-r1源码、内核3.10.73-g1bbb776过程中中遇到很多的坑,特总结如下:

    一、Android内核编译过程

    总体步骤:

    (1)下载Android内核源码

    git clone  https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git

    cd msm/

    git branch -a

    git checkout 1bbb776  (1bbb776从内核3.10.73-g1bbb776获取)或者

    git checkout remotes/origin/android-msm-bullhead-3.10-marshmallow-mr2

    (bullhead 为nexus5x 代号,marshmallow为Android6.0.1代号)

    从而获取到Android内核源码(2)编译Android内核源码

    从ndk或者Android源码中获取交叉编译链,并加入到PATH中

    配置编译环境:

        export ARCH=arm64

        export SUBARCH=arm64

        export CROSS_COMPILE=aarch64-linux-android-

        export PATH=$PATH:/home/zh/kernel/aarch64-linux-android-4.9-/bin:$PATH

        make bullhead_defconfig

        make -j8

    从而获取到arch/arm64/boot/Image.gz-dtb文件

    (3)烧录到nexus5x中

    1.获取到nexus5x 工厂boot.image文件

    2.下载编译bootimg-tools

        $mkdir bootimg-tools

        $cd bootimg-tools

        $git clone https://github.com/pbatard/bootimg-tools.git

        $make

    编译完成以后,在makebootimg目录下生成了相应的二进制执行文件,将该二进制文件所在路径添加到 PATH路径中

    解包:

    unmkbootimg –i boot.img

    覆盖原来的kernel:把内核源码目录下生成的arch/arm/boot目录下的zImage-dtb拷贝到Android源码目录out/target/product/hammerhead下。并改名为kernel(注意备份原始的kernel文件)

    重打包:使用步骤2中输出的mkbootimg 命令

    烧写:

    $ adb reboot bootloader

    $ fastboot flash boot boot.img

    最后fastboot reboot即可,结果如下,已经换成我编译的内核zh@zh...

    二、中间遇到的坑:

    1、一定要将交叉编译链版本设置正确,同时环境也要设置正确

    一定要将交叉编译链版本设置正确,同时环境也要设置正确

    一定要将交叉编译链版本设置正确,同时环境也要设置正确

    2、获取Android boot.img

    (1)可以从Android源码下获得

    (2)Android源码下载需要很长时间,对于nexus手机有一种简单的方法:从google api官网上直接下载对应的包,里面有boot.img,systenm.img等文件,直接解压提取boot.img即可

    3、由原来的boot.img文件与dtb文件生成新的boot.img

    (1)替换源码中.dtb文件,重新编译即可。此方法耗时较长,不推荐

    (2)使用上述文件中的安装方法

    (3)使用abootimg生成:

    sudo apt-get install abootimg

    abootimg -u boot.img.test -k arch/arm64/boot/Image.gz-dtb 

    但是会报错:update is too big for the booting image (11732 vs 11623 bytes)

    因为内核文件变大了,后加上-c “bootsize=11732”即可

    abootimg -u boot.img.test -k arch/arm64/boot/Image.gz-dtb -c “bootsize=11732”

    4、烧录

    (1)烧录时要解锁bootloader

    (2)查看fastboot是否可以可以采用fastboot devices命令

    (3)Fast boot命令只是加入到缓存中,真正的命令为 fastboot flash boot

    相关文章

      网友评论

          本文标题:Android内核3.10.73编译烧录到nexus 5X笔记

          本文链接:https://www.haomeiwen.com/subject/ntqxzftx.html