How to download and compile Android kernel goldfish ?
Prerequisites
Assuming that we already downloaded the android-ndk-r12b and sdk.
w4118@w4118:~/utils$ ls
android-ndk-r12b android-sdk-linux bin goldfish nexus7
And then we need to set up the environment.
Or you can download the vm having been set up directly. [1]
1. Edit ~/.bashrc
# add Android SDK Tools to the path
export ANDROID_SDK=~/utils/android-sdk-linux
export PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
# add other custom utilities to the path
export PATH=$PATH:~/utils/bin
# set up debugging paths
export PATH=$PATH:~/utils/android-ndk-r12b/prebuilt/android-arm64/gdbserver/:~/utils/android-ndk-r12b/prebuilt/linux-x86_64/bin/
# add toolchain to the path
export PATH=$PATH:~/utils/android-ndk-r12b/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin:~/utils/android-ndk-r12b/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin:~/utils/android-ndk-r12b/prebuilt/android-arm64:~/utils/android-ndk-r12b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:~/utils/android-ndk-r12b:~/utils/arm-eabi-4.8/bin:~/utils/android-ndk-r10e
export A24_INCLUDE=~/utils/android-ndk-r12b/platforms/android-24/arch-arm64/usr/include/
export A24_LINK=~/utils/android-ndk-r12b/platforms/android-24/arch-arm64/usr/lib/
export A24_SYSROOT=~/utils/android-ndk-r12b/platforms/android-24/arch-arm64/
export A23_INCLUDE=~/utils/android-ndk-r12b/platforms/android-23/arch-arm64/usr/include/
export A23_LINK=~/utils/android-ndk-r12b/platforms/android-23/arch-arm64/usr/lib/
export A23_SYSROOT=~/utils/android-ndk-r12b/platforms/android-23/arch-arm64/
Then
$source ~/.bashrc
2. Download android-kernel-goldfish
$git clone http://android.googlesource.com/kernel/goldfish.git
$git branch -a
$git checkout -b debug-android-goldfish-3.18 remotes/origin/android-goldfish-3.18
3. Compile kernel
$make ARCH=arm64 ranchu_defconfig
$make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-
hint: adding an alias to your ~/.bashrc file:
alias armmake="make -j16 KCFLAGS=-ggdb3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-"
4. Create the emulator
Create an Android Virtual Device (AVD), and install a custom 3.18 kernel in it.
Run android avd from the terminal
Add a new AVD by clicking "Create"
Pick a suitable name (we chose w4118avd)
Choose a Galaxy Nexus device
Target and CPU/ABI should self populate
Pick a "Skin with dynamic hardware controls"
Give at least 1500MB of RAM and a 256MB VM Heap
Tick on "Use Host GPU"
Once your AVD is set up, you can start it from the terminal with
$emulator @avdname -show-kernel
You need to open it with default kernel firstly; otherwise, it cannot start it by above emulator command.
- Hardware acceleration must be enabled in your VM settings for the AVD to boot.
- The AVD can take up to 10 minutes to boot. If the AVD fails to boot, try restarting your VM and your Host machine and allocating more memory to the VM. Giving more RAM to the AVD can also be helpful.
- If the emulator shows a completely black screen with a "Process System isn't responding", click on Wait a few times and you will get to the home screen soon.
5. Start the emulator
After compiling, you can start the emulator again.
$emulator @w4118avd -kernel arch/arm64/boot/Image -show-kernel -no-window -verbose -netfast
On x86_64 emulator
$make ARCH=x86_64 x86_64_ranchu_defconfig
$make -j16 ARCH=x86_64 CROSS_COMPILE=x86_64-linux-android- 2>&1 |tee kernel_make.out
$emulator -verbose @x86 -kernel arch/x86/boot/bzImage -show-kernel -no-window -qemu --enable-kvm 2>&1 | tee boot_errors

On armv7-32bit
kernel : android-goldfish-3.10
rom : android 7.0
toolchain : arm-eabi-4.8 (doesn't include in ndk-r12b)
command :
$make ARCH=arm ranchu_defconfig
$make -j16 ARCH=arm KCFLAGS=-ggdb3 CROSS_COMPILE=arm-eabi-
$emulator @arm32 -kernel arch/arm/boot/zImage -show-kernel -no-window -verbose -netfast
On x86 (not used)
kernel : android-goldfish-3.10
rom : android 7.0
command :
edit .config:
│ [*] KGDB: kernel debugger --->
│ │ [*] Compile the kernel with debug info │ │
│ │ [*] Provide GDB scripts for kernel debugging
$make ARCH=x86 i386_ranchu_defconfig
$make -j7 KCFLAGS=-ggdb3 ARCH=x86
$emulator @x86 -kernel arch/x86/boot/bzImage -show-kernel -no-window -verbose -netfast
Kernel and ROM matched table

Other useful command
#### Android Stop Emulator from Command Line
adb emu kill
#### Get the kernel messages
adb shell dmesg
adb shell cat /proc/kmsg
#### Redirecting kernel logs:
For Windows:‐> adb shell cat /proc/kmsg > kernelmsg.txt
For Linux:‐‐> adb shell cat /proc/kmsg | tee ‐a kernelmsg.txt
stop-emulators.sh
#!/bin/bash
for ((PORT=5554; PORT<=5584; PORT+=2)); do
echo killing emulator-$PORT...
adb -s emulator-$PORT emu kill
done
ref :
[1] http://www.cs.columbia.edu/~nieh/teaching/w4118/homeworks/hmwk2.html
[2] http://blog.chinaunix.net/uid-29616823-id-4891227.html
[3] http://blog.csdn.net/mr_raptor/article/details/7954474
[4] https://github.com/openthos/openthos/wiki/AOSP-6.0-x86_64-kernel-3.10-in-ubuntu-15.04
[5] http://tic-le-polard.blogspot.fr/2015/06/android-building-android-kernel-for_6.html
How to download and compile Android kernel goldfish ?的更多相关文章
- [原]Ubuntu 14.04编译Android Kernel
如何编译android kernel参考官方文档:https://source.android.com/source/building-kernels.html 在Ubuntu 14.04上编译a ...
- Compile android source and kernel for emulator in Debian
1.download the android source code Reference from http://source.android.com/source/downloading.html ...
- 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...
- 下载 编译 Android源代码 和 Android kernel源代码
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...
- 下载Android kernel
方法一: https://source.android.com/setup/building-kernels 方法二: 在按照https://source.android.com/setup/down ...
- How to: Compile Linux kernel 2.6
Compiling custom kernel has its own advantages and disadvantages. However, new Linux user / admin ...
- Android Kernel save defalut config
/********************************************************************************* * Android Kernel ...
- Compile Linux Kernel on Ubuntu 12.04 LTS (Detailed)
This tutorial will outline the process to compile your own kernel for Ubuntu. It will demonstrate bo ...
- How to compile Linux kernel in fedora 6
前提:已裝好Fedora 6 core 2.6.18 ,在 Fedora 6 中compile linux kernel.1.下載 Fedora 6 core 2.6.18 http://www.ke ...
随机推荐
- 一图解决五大I/O模型比较
- LeetCode - 滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 输入: nums ...
- linux system函数引发的错误
转: https://my.oschina.net/renhc/blog/54582 先看一下问题 简单封装了一下system()函数: int pox_system(const char *cm ...
- sh_09_print函数的结尾
sh_09_print函数的结尾 # 在默认情况下,print 函数输出内容之后,会自动在内容末尾增加换行 print("*", end="---") prin ...
- go语言系列--前言
我为什么要学golang语言 绝不是一时兴起,也不是人云亦云,这是我规划了很久的事了. 我曾自学过C语言,C++语言,Python语言,可都学的不精,原因我想是不知道为了什么而学的,可是这就是缺少学习 ...
- Monkeyrunner自动化测试由浅入深(第一节)
(原版)Monkeyrunner自动化测试由浅入深(第一节) 博主原创,请勿转载 第一.相关软件和环境的配置 1.Android sdk下载和配置 2.java jdk下载和配置 第二.Monkeyr ...
- WebClient上传下载文件,小白篇
WebClient的上传文件一直报错,各种百度各种稀奇古怪的东西,终于百度到一篇小白学习篇 转自: https://www.cnblogs.com/cncc/p/5722231.html 使用C#We ...
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第1节 基本概念_03maven一键构建概念
资料里面写好的Helloworld项目 pom.xml存放jar包的坐标 首先复制项目所在的目录的路径: 先进去复制的这个路径,然后又输入了d盘.这时候就进去到这个项目目录了. 这个项目就运行起来了. ...
- windows环境下PostgreSQL的安装
1.首先在如下链接下载PostgreSQL的压缩包,我这里下载的是postgresql-12.1-1-windows-x64-binaries.zip. https://www.enterprised ...
- IntelliJ IDEA 2019.1.1 maven框架web.xml中web-app版本过低导致不能正常使用EL表达式的解决方案
1.软件版本 IDEA版本:IntelliJ IDEA 2019.1.1 maven版本:apache-maven-3.6.1 Tomcat版本:tomcat-8.5 2.问题描述 IDEA使用如下 ...