目的:修改内核源码,并刷入手机

步骤如下:

1.获取手机对应的内核下载地址

参考https://source.android.com/setup/build/building-kernels

我的设备是pixel sailfish,所以对应的源码地址是kernel/msm,编译配置是marlin_defconfig

使用git下载:

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

2.获取手机对应的内核版本

使用如下命令查看:

adb shell cat /proc/version
Linux version 3.18.100-g4212e6b8dac58 (gcc version 4.9.x 20150123 (prerelease) (GCC) ) #42 SMP PREEMPT Sat Dec 29 19:19:56 CST 2018

其中4212e6b8dac58便是这台手机内核的git commit id,通过git切换到对应的id处:

git checkout 4212e6b8dac58

3.编译前的准备

    a.先下载32位的编译工具链:

git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9

   b.在内核源码目录下依次执行以下几个命令:

export CROSS_COMPILE=${NDK_PATH}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-
export CROSS_COMPILE_ARM32=${NDK_PATH_32}/bin/arm-linux-androideabi-
export ARCH=arm64
export SUBARCH=arm64
make marlin_defconfig

其中${NDK_PATH}是ndk的路径,${NDK_PATH_32}是刚下载的32位工具的路径

执行make marlin_defconfig后会在根目录下产生一个.config文件,如果想修改某些编译选项可以直接修改这个文件.

如同的手机可能对应的配置文件不同,参考上图1即可.

4.开始编译

直接在根目录执行make即可

5.编译成功:

Image.lz4-dtb便是编译好的内核文件

6.生成新的boot.img

需要生成boot.img才能输入手机,在aosp目录下执行如下命令:

export TARGET_PREBUILT_KERNEL=/home/yanchen/Dev/android-source/kernel/msm_pixel_9.0_sailfish/arch/arm64/boot/Image.lz4-dtb
rm out/target/product/sailfish/boot.img &&  make bootimage

TARGET_PREBUILT_KERNEL指向刚编译好的内核文件.

by the way,如果想要替换boot.img中的default.prop,可以在build/core/Makefile中做如下修改:

7.刷入手机

执行如下命令即可:

fastboot flash boot boot.img

编译Android 9.0内核源码并刷入手机相关推荐

  1. android 3.10. 内核,编译android 3.10内核源码时出错

    最近我尝试为我的xiaomi mi4c交叉编译android内核. 要做到这一点,我已经下载并这样配置的工具链:从这里编译android 3.10内核源码时出错 git clone https://a ...

  2. 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码

    http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...

  3. Ubuntu16.04编译Android 6.0系统源码过程简要记录总结

    一,安装VMware Workstation,百度网盘下载(内含注册机) 链接: https://pan.baidu.com/s/1wz4hdNQBikTvyUMNokSVYg 提取码: yed7 V ...

  4. Ubuntu 16.04 编译Android 6.0系统源码

    准备环境 1.安装open-jdk7 [使用open-jdk8会报错],原因是: 在build/core/main.mk中默认指定的是jdk1.7 # Check for the correct ve ...

  5. Android 4.0.1 源码下载,编译和运行

    [牛人分享]Android 4.0.1 源码下载,编译和运行 转自 http://blog.csdn.net/rambo2188/article/details/6943382 ----------- ...

  6. android 4.0模拟器启动不了,Android 4.0 framework源码修改编译,模拟器运行不起来,求助...

    当前位置:编程学习 > wap >> Android 4.0 framework源码修改编译,模拟器运行不起来,求助 我下载编译了android 4.0 ICS的源码,然后能利用编译 ...

  7. android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?

    点击上方"刘望舒",选择"星标" 多点在看,就是真爱! 作者 :  刘望舒  |  来源 :刘望舒的博客地址:http://liuwangshu.cn/fram ...

  8. android s905 编译_NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码

    NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码 1. 下载源码 在这里下载https://www.mediafire.com/folde ...

  9. Android 8.0系统源码分析--开篇

    个人分类: Android框架总结Android源码解析android framework 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sinat ...

最新文章

  1. 最常见的《最聪明的技巧》实战讲解!
  2. 京东商城Android版客户端 安装到手机上就能轻松购物
  3. 【Weiss】【第03章】练习3.20:中缀表达式转后缀表达式
  4. hashmap中的hash扰动函数
  5. 前端:Vue前端开发规范,值得收藏!
  6. c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast
  7. java pojo使用_在POJO中使用ThreadLocal进行Java嵌套事务
  8. c++检测输入是否为数字_Go64 for Mac(检测应用是否为64位)
  9. 产品经理的职业天花板在哪?
  10. HitPaw Watermark Remover视频图去除水印工具V1.2.1.1
  11. 药业计算机系统专项内审检查表,2017年最新医疗器械内审检查表 分部门 已填写...
  12. AndroidManifest.xml文件详解(receiver)
  13. Python使用装饰器捕获异常,并写入日志,不中断进程
  14. java pgsql connection 是否可同时执行sql_Java教程:解读JDBC是什么
  15. 《DSP using MATLAB》Problem 6.6
  16. 100+个Java项目视频教程+源码+笔记,项目经验不用愁了!
  17. windowxp网络无法发现其他计算机,几个步骤轻松解决win7无法访问XP系统共享问题...
  18. Revit族加密工具分享
  19. 银河麒麟crontab下班自动关机
  20. PMP考试技巧+前九章内容提炼整理(不定时更新)

热门文章

  1. Maya Mash 系统的简单介绍
  2. 《Java SE实战指南》08-05:do-while语句
  3. WPScan基本使用(wordpress)
  4. 写代码要像女人的裙子一样美丽
  5. 继妹变继母,儿子与自己断绝关系,世界首富马斯克,为何这么惨?
  6. java设计模式转发_Java设计模式之《单例模式》及应用场景(转发:http://www.cnblogs.com/V1haoge/p/6510196.html)...
  7. 【金三银四】软件测试简历项目经验怎么写,没有项目经验?
  8. steam搬砖,项目要怎么做。
  9. java 团购开发_Java生鲜电商平台-团购模块设计与架构
  10. 让数据发声 IBM在电商时代下的智慧营销