I want to be a complete engineer - technical genius and sensitive humanist all in one!

Friday, November 14, 2008

編譯Android內核

1. 獲得 toolchains 從 http://www.codesourcery.com/gnu_toolchains/arm/portal/subscription?@template=lite (選擇 ARM EABI 和 IA32 GNU/Linux).

2. 獲得內核源代碼從 http://code.google.com/p/android/downloads/list

3.部署 toolcains 和 內核源碼進入內核源碼樹。

$ mkdir -p android
$ cd android
$ tar xjvf ../arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ tar xzvf ../linux-2.6.23-android-m3-rc20.tar.gz
$ cd kernel

4. 獲得 config.gz 來自正在運行的emulator 通過下面你的方法。

$ adb pull /proc/config.gz .

5. 解壓縮 config.gz 并重命名為 .config

$ gunzip config.gz
$ mv config .config

6. 指定 CROSS_COMPILE (譯注:交叉編譯器)在 Makefile 中。

CROSS_COMPILE=../arm-2007q3/bin/arm-none-linux-gnueabi-

7. 评论指出 LDFLAGS_BUILD_ID 在相同的 Makefile。
The LDFLAGS_BUILD_ID enables --build-id 選擇 ld 如果可以得到。
The --build-id 選擇相對較新的。
目前的模擬器似乎不支持內核鏈表這個選項。

http://fedoraproject.org/wiki/Releases/FeatureBuildId 如果你有興趣這些詳細的選項。

#LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
$(call ld-option, -Wl$(comma)--build-id,))

8. Make the kernel(制作內核)

$ make

9. 檢查 zImage 是被創建的和大小相近的kernel-qemu 在 Andorid SDK 中。

$ ls -l arch/arm/boot/zImage
-rwxrwxr-x 1 motz motz 1234712 2007-12-01 18:06 arch/arm/boot/zImage
$ ls -l $SDK/tools/lib/images/kernel-qemu
-rwxrwxr-x 1 motz motz 1245836 2007-11-12 5:59 ...sdk/tools/lib/images/kernel-qemu

10. 運行 emulator 被創建的內核

$ emulator -kernel arch/arm/boot/zImage

No comments:

Labels

Followers