How to download and compile Android kernel goldfish ?
时间:2022-03-13 20:09
Prerequisites
Assuming that we already downloaded the android-ndk-r12b and sdk.
:~/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]
[2]
[3]
[4]
[5]
相关推荐
- Android系统编程入门系列之界面Activity交互响应
- 新型横向移动工具原理分析、代码分析、优缺点以及检测方案
- uni-app滚动视图容器(scroll-view)之监听上拉事件
- uniapp h5,app两端复制文本
- Android系统编程入门系列之界面Activity响应丝滑的传统动画
- 【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
- 诺基亚短信生成!太好玩了
- iOS 跳转App Store进行评分
- 开发一个即时通讯App
- 关闭苹果IOS app自动更新
电脑软件
本类排行
- 1关闭苹果IOS app自动更新
- 2iOS 跳转App Store进行评分
- 3诺基亚短信生成!太好玩了
- 4Android系统编程入门系列之界面Activity响应丝滑的传统动画
- 5uniapp h5,app两端复制文本
- 6uni-app滚动视图容器(scroll-view)之监听上拉事件
- 7新型横向移动工具原理分析、代码分析、优缺点以及检测方案
- 8Android系统编程入门系列之界面Activity交互响应
- 9开发一个即时通讯App
- 10【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn