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. 2019JAVA最新课程-React从入门到实战(新)

    1.准备工作 可以在yunp.top网站看webpack,node/npm,cnpm的相关使用视频教程 react有两种使用方式,一是在现有网站中添加:二是创建一个全新的 官网创建全新一个react ...

  2. IDC机房跳线

    服务网卡口与配线架 这里有一根网线 记录方式 签 A:23FM-23U-T07 (配线架网线) B:23FM-23U-NIC1(服务器网线) 在配线架的机柜旁边一定写明了 跳线的对面的   交换和配线 ...

  3. python3.5-tensorflow-keras 安装

    cpu centos FROM centos:7 MAINTAINER yon RUN yum -y install make wget \ && wget -O /etc/yum.r ...

  4. profile 配置文件修改后如何生效?

    1.profile生效命令 . /etc/profile 或 source /etc/profile 说明:source命令也称为“点命令”,也就是一个点符号(.)

  5. BZOJ 4011: [HNOI2015]落忆枫音 计数 + 拓扑排序

    Description 「恒逸,你相信灵魂的存在吗?」 郭恒逸和姚枫茜漫步在枫音乡的街道上.望着漫天飞舞的红枫,枫茜突然问出 这样一个问题.  「相信吧.不然我们是什么,一团肉吗?要不是有灵魂……我们 ...

  6. windows10 下 gcc/g++ 的安装

    一.gcc的下载 网址:www.mingw.org ,点击右上方的 download installer 二.安装 打开安装程序,默认安装,弹出下列界面 找到mingw32-gcc-g++(注意cla ...

  7. 不使用spring-boot-starter-parent进行依赖的版本管理

    spring-boot-starter-parent 提供了Dependency Management 进行项目依赖的版本管理,默认的资源过滤和插件配置. 但是,当需要将其他项目作为parent 的时 ...

  8. python之设计模式的装饰器9步学习

    在继承的基础上增加新功能,重载,重写区别 装饰器: 函数a说,我是装饰器啊,其他哪个函数顶着我,我就吃了谁,然后吐出来我的和你的返回结果 testng的UI自动化,@beforetest,@befor ...

  9. 编译rxtx

    https://blog.csdn.net/github_29989383/article/details/51886234 https://cloud.tencent.com/developer/a ...

  10. IO负载高来源定位pt-ioprofile

    1.使用top -d 1 查看%wa是否有等待IO完成的cpu时间,简单理解就是指cpu等待磁盘写入完成的时间:IO等待所占用的cpu时间的百分比,高过30%时IO压力高: 2.使用iostat -d ...