As mentioned in the previous article, the latest Android source code downloaded from the source code tree does not contain kernel code, that is, the android source code project does not contain Linux kernel code by default, instead, use the pre-compiled kernel, that is, the prebuilt/Android-arm/kernel-qemu file. So how can we DIY our own kernel? This article is one by one.
I. First Choice. refer to the previous article on Ubuntu to download, compile, and install the latest Android source code and prepare the android source code directory.
2. Download the Linux kernel for Android source code.
1. Use the GIT tool to download and execute the following command:
User-name @ machine-Name :~ /Android $ mkdir Kernel
User-name @ machine-Name :~ /Android $ CD Kernel
User-name @ machine-Name :~ /Android/kernel $ git clone git: // android.git.kernel.org/kernel/common.git
After a long wait, there is a common directory under the kernel directory, and the Linux kernel code is here.
2. After the download is complete, you can view the downloaded kernel code version:
User-name @ machine-Name :~ /Android/kernel $ CD common
User-name @ machine-Name :~ /Android/kernel/common $ git Branch
Android 2.6.36
3. the kernel source code on the main line is obtained above. Now we need the kernel for the simulator. Therefore, we needTo checkout goldfish:
User-name @ machine-Name :~ /Android/kernel/common $ git branch-
* Android-2.6.36:
Remotes/ORIGIN/head-> origin/Android-2.6.36
Remotes/ORIGIN/Android-2.6.35
Remotes/ORIGIN/Android-2.6.36
Remotes/ORIGIN/archive/Android-2.6.25.
Remotes/ORIGIN/archive/Android-2.6.27.
Remotes/ORIGIN/archive/Android-2.6.29.
Remotes/ORIGIN/archive/Android-2.6.32.
Remotes/ORIGIN/archive/android-gldfish-2.6.29
Remotes/ORIGIN/archive/Android-goldfsh-2.6.27
Select android-gldfish-2.6.29:
User-name @ machine-Name :~ /Android/kernel/common $Git checkout remotes/ORIGIN/archive/android-gldfish-2.6.293. Compile the kernel code. 1. Export the cross-compilation tool directory to the $ PATH environment variable:
User-name @ machine-Name :~ /Android/kernel/common $Export Path = $ path :~ /Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin2. Modify the MAKEFILE file in the common directory in the following two actions:
# Arch
? = (Subarch)
# Cross_compile
? =
Arch? = Arm # The architecture is arm
Cross_compile? = Arm-Eabi-# prefix of the Cross-compiled toolchain,
References ~ /Android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin directory
3. Start Compilation:
User-name @ machine-Name :~ /Android/kernel/common $Make goldfish_defconfig
User-name @ machine-Name :~ /Android/kernel/common $MakeAfter the compilation is successful, you can see the following two lines:
Objcopy ARCH/ARM/boot/zimage
Kernel: ARCH/ARM/boot/zimage is ready
Before executing the make command, you can also execute make menuconfig to configure the compilation options first. 4. Run the compiled kernel in the simulator. 1. Before starting the simulator, set the simulator directory to the environment variable $ path:
User-name @ machine-Name :~ /Android $Export Path = $ path :~ /Android/out/host/linux-x86/bin
2. Set the android_product_out environment variable:
User-name @ machine-Name :~ /Android $Export android_product_out = ~ /Android/out/target/product/generic
3. Specify the Kernel File to start the simulator in the background:
User-name @ machine-Name :~ /Android $Emulator-kernel./kernel/common/ARCH/ARM/boot/zimage &
4. Use the ADB tool to connect to the simulator, view the kernel version information, and see if the kernel running on the simulator is the kernel we just compiled:
User-name @ machine-Name :~ /Android $ ADB Shell
If this is the first time you run the ADB shell command, you will see the following output. You can run the ADB shell command again without having to worry about it.
* Daemon not running. Start it now on port 5037 *
* Daemon started successfully *
Error: Device offline
Switch to the proc Directory: root @ Android:/# cd proc root @ Android:/proc # Cat version Linux version 2.6.29-gb0d93fb-dirty (Luo @ ubuntu-11-04) (GCC version 4.4.3 (GCC )) #1 Fri Jun 3 23:17:24 HKT 2011
From the machine name Luo @ ubuntu-11-04 and date 1 Fri Jun 3 23:17:24 HKT 2011 we can see that the simulator uses the kernel just compiled. Http://source.android.com/source/downloading.html
PS: The latest source code on the main line is an unstable version, which may cause problems during use.