Assuming that we already downloaded the android-ndk-r12b and sdk.html
w4118@w4118:~/utils$ ls
android-ndk-r12b android-sdk-linux bin goldfish nexus7linux
And then we need to set up the environment.
Or you can download the vm having been set up directly. [1]android
# 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/
Thengit
$source ~/.bashrc
$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
$make ARCH=arm64 ranchu_defconfig
$make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-
hint: adding an alias to your ~/.bashrc file:github
alias armmake="make -j16 KCFLAGS=-ggdb3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-"
Create an Android Virtual Device (AVD), and install a custom 3.18 kernel in it.shell
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"ubuntu
Once your AVD is set up, you can start it from the terminal withbash
$emulator @avdname -show-kernel
You need to open it with default kernel firstly; otherwise, it cannot start it by above emulator command.ide
After compiling, you can start the emulator again.ui
$emulator @w4118avd -kernel arch/arm64/boot/Image -show-kernel -no-window -verbose -netfast
$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
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
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
#### 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
[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