在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)
2023-09-27 14:29:34 时间
在前一篇文章提到,从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-qemu文件。那么,如何才能DIY自己的内核呢?这篇文章一一道来。
一. 首选,参照前一篇在Ubuntu上下载、编译和安装Android最新源代码准备好Android源代码目录。
二. 下载Linux Kernel for Android源代码。
1. 使用GIT工具下载,执行以下命令:
USER-NAME@MACHINE-NAME:~/Android$ mkdir kernel
USER-NAME@MACHINE-NAME:~/Android$ cd kernel
USER-NAME@MACHINE-NAME:~/Android/kernel$ git clonehttp://android.googlesource.com/kernel/goldfish.git
同样是经过漫长的等待后,在kernel目录下有一个common目录,Linux内核代码就在这里了。
3. 上面得到的是主线上的内核源代码,现在我们需要适用于模拟器用的内核,因此,我们需要checkout goldfish版本:
remotes/origin/HEAD - origin/android-2.6.36
remotes/origin/android-2.6.35
remotes/origin/android-2.6.36
remotes/origin/archive/android-2.6.25
remotes/origin/archive/android-2.6.27
remotes/origin/archive/android-2.6.29
remotes/origin/archive/android-2.6.32
remotes/origin/archive/android-gldfish-2.6.29
remotes/origin/archive/android-goldfish-2.6.27
USER-NAME@MACHINE-NAME:~/Android/kernel/common$ git checkout remotes/origin/archive/android-gldfish-2.6.29
USER-NAME@MACHINE-NAME:~/Android/kernel/common$ export PATH=$PATH:~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
CROSS_COMPILE ?= arm-eabi- #交叉编译工具链前缀,参考~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin目录
USER-NAME@MACHINE-NAME:~/Android$ export PATH=$PATH:~/Android/out/host/linux-x86/bin
USER-NAME@MACHINE-NAME:~/Android$ export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
USER-NAME@MACHINE-NAME:~/Android$ emulator -kernel ./kernel/common/arch/arm/boot/zImage
4. 用adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核: USER-NAME@MACHINE-NAME:~/Android$ adb shell
这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。
root@android:/proc # cat version Linux version 2.6.29-gb0d93fb-dirty (luo@ubuntu-11-04) (gcc version 4.4.3 (GCC) ) #1 Fri Jun 3 23:17:24 HKT 2011
从机器名luo@ubuntu-11-04和日期1 Fri Jun 3 23:17:24 HKT 2011可以看出,模拟器使用的内核即为刚刚编译出来的内核 本文转载于http://blog.csdn.net/luoshengyang/article/details/6564592
字节卷动 You will never know how excellent you are unless you impel yourself once.
USER-NAME@MACHINE-NAME:~/Android/kernel$ git clonehttp://android.googlesource.com/kernel/goldfish.git
同样是经过漫长的等待后,在kernel目录下有一个common目录,Linux内核代码就在这里了。
3. 上面得到的是主线上的内核源代码,现在我们需要适用于模拟器用的内核,因此,我们需要checkout goldfish版本:
remotes/origin/HEAD - origin/android-2.6.36
remotes/origin/android-2.6.35
remotes/origin/android-2.6.36
remotes/origin/archive/android-2.6.25
remotes/origin/archive/android-2.6.27
remotes/origin/archive/android-2.6.29
remotes/origin/archive/android-2.6.32
remotes/origin/archive/android-gldfish-2.6.29
remotes/origin/archive/android-goldfish-2.6.27
USER-NAME@MACHINE-NAME:~/Android/kernel/common$ git checkout remotes/origin/archive/android-gldfish-2.6.29
USER-NAME@MACHINE-NAME:~/Android/kernel/common$ export PATH=$PATH:~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
CROSS_COMPILE ?= arm-eabi- #交叉编译工具链前缀,参考~/Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin目录
USER-NAME@MACHINE-NAME:~/Android$ export PATH=$PATH:~/Android/out/host/linux-x86/bin
USER-NAME@MACHINE-NAME:~/Android$ export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
USER-NAME@MACHINE-NAME:~/Android$ emulator -kernel ./kernel/common/arch/arm/boot/zImage
4. 用adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核: USER-NAME@MACHINE-NAME:~/Android$ adb shell
这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。
root@android:/proc # cat version Linux version 2.6.29-gb0d93fb-dirty (luo@ubuntu-11-04) (gcc version 4.4.3 (GCC) ) #1 Fri Jun 3 23:17:24 HKT 2011
从机器名luo@ubuntu-11-04和日期1 Fri Jun 3 23:17:24 HKT 2011可以看出,模拟器使用的内核即为刚刚编译出来的内核 本文转载于http://blog.csdn.net/luoshengyang/article/details/6564592
字节卷动 You will never know how excellent you are unless you impel yourself once.
相关文章
- android多媒体音乐(MediaPlayer)播放器制作代码
- Android逆向-Android基础逆向(5)
- Android中播放音乐的几种方式
- 50个Android Studio秘诀、技巧和资源
- Linux内核现流量劫持缺陷 8成Android设备中枪
- Android HAL层与Linux Kernel层驱动开发简介
- 关于Android报找不到arm-linux-androideabi的错误
- Android程序员如何有效提升学习效率?聪明人已经收藏了!
- 2021年Android开发者常见面试题,深度解析,值得收藏
- android初学问题集
- 在linux kernel或android中解析cmdline参数
- 客户端相关知识学习(十一)之Android H5交互Webview实现localStorage数据存储
- Android自定义控件-Path之贝赛尔曲线和手势轨迹、水波纹效果
- Android优化——UI检视利器:Hierarchy Viewer
- 解决"No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android"错误
- Android NDK开发及调用标准linux动态库.so文件
- Android 开源框架ImageLoader的完美例子
- 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | Android 源码在线网址推荐 )
- Android--Linux kernel log级别修改
- 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决
- 同样的内核,为何linux干净稳定,而android臃肿又乌烟瘴气
- android中 MediaStore提取缩略图和原始图像