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 ?的更多相关文章

  1. [原]Ubuntu 14.04编译Android Kernel

    如何编译android kernel参考官方文档:https://source.android.com/source/building-kernels.html   在Ubuntu 14.04上编译a ...

  2. Compile android source and kernel for emulator in Debian

    1.download the android source code Reference from http://source.android.com/source/downloading.html ...

  3. 【Android 系统开发】下载 编译 Android源代码 和 Android kernel源代码

    下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...

  4. 下载 编译 Android源代码 和 Android kernel源代码

    下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ...

  5. 下载Android kernel

    方法一: https://source.android.com/setup/building-kernels 方法二: 在按照https://source.android.com/setup/down ...

  6. How to: Compile Linux kernel 2.6

      Compiling custom kernel has its own advantages and disadvantages. However, new Linux user / admin ...

  7. Android Kernel save defalut config

    /********************************************************************************* * Android Kernel ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. git windows下换行符问题

    不同操系统下的换行符 CR回车 LF换行 Windows/Dos CRLF \r\n Linux/Unix LF \n MacOS CR \r 1.执行git config --get core.au ...

  2. Linux入门培训教程 linux网络编程socket介绍

    一.概念介绍 网络程序分为服务端程序和客户端程序.服务端即提供服务的一方,客户端为请求服务的一方.但实际情况是有些程序的客户端.服务器端角色不是这么明显,即互为Linux培训 客户端和服务端. 我们编 ...

  3. [luogu]P1800 software_NOI导刊2010提高(06)[DP][二分答案]

    [luogu]P1800 software_NOI导刊2010提高(06) 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块, ...

  4. UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(链表)

    题目代号:UVA 11988 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&pa ...

  5. QtCreator常用之快捷键

    1. Ctrl(按住)+ Tab快速切换已打开的文件 2. 自动添加成员函数实体(.cpp)定义: 将光标移动到h文件中的方法声明. 按Alt(按住)+ Enter,再按回车键 将在cpp中添加该函数 ...

  6. [CSP-S模拟测试]:简单的括号序列(组合数)

    题目传送门(内部题82) 输入格式 一行一个字符串$ss$,保证$ss$中只包含$'('$和$')'$. 输出格式 一行一个整数,表示满足要求的子序列数对$10^9+7$的结果. 样例 样例输入1: ...

  7. spring cloud:gateway-eureka-filter

    Spring Cloud Gateway 的 Filter 的生命周期不像 Zuul 的那么丰富,它只有两个:“pre” 和 “post”. PRE: 这种过滤器在请求被路由之前调用.我们可利用这种过 ...

  8. 第五周总结&实验报告三

    第五周总结&实验报告三 实验报告 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) ① 统计该字符串中字母s ...

  9. 如何解决tomcat9.0.14启动时控制台中出现乱码

    把/conf/logging.properties里的java.util.logging.ConsoleHandler.encoding= UTF-8改成java.util.logging.Conso ...

  10. Linux下服务器开发的必要准备

    一.Windows下安装Xshell 二.Linux开启SSH 可以先查询有没有SSH服务 sudo ps -e |grep ssh 没有安装SSH的服务器 sudo apt-get install ...