ソースコードの入手
ソースコードの入手を参照
Android NDK の入手
Android NDK は、アプリケーションのコードの一部をネイティブ命令で実行できるようにし、アプリケーションの高速化を目的とするもので、単独のアプリケーションを作成するものではない。しかし、単独のアプリケーションの作成に利用したり、kernel をコンパイルすることもできる。
http://developer.android.com/sdk/ndk/index.html から、android-ndk-r5b-linux-x86.tar.bz2 を入手する。以下の文章は、全て、Linux(Ubuntu 10.04.1 LTS)を対象とする。
環境構築
$ export ARCH=arm $ export CROSS_COMPILE=arm-eabi- $ export PATH=$PATH:~/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin
$ sudo apt-get libncurses5-dev
後で、make menuconfig を実行するために libncurses5-dev を使う。恐らく、他に、コンパイルに必要なパッケージが今後出てくるかもしれないが、それは、必要に応じて apt-get でインストールするように。
kernel の設定を行う
先に、kernel の設定ファイルの雛形になる .config ファイルを P10AN01 から持ってくる必要がある。
$ cd kernel-source $ adb pull /proc/config.gz . $ gunzip config.gz $ mv config .config
.config を用意できたら、menuconfig を立ち上げる。
$ make menuconfig
make menuconfig を実行すると設定画面が現れる。ここでは、スペースキーで項目の ON/OFF と詳細設定への移動, エスケープを2度押すことで前のページに戻れる。
General Setup に移動すると "(何らかの文字列) Local verison - append to kernel release" という項目を確認できる。ここは、kernel のローカルバージョンを設定する場所で、例えば、"_MY_KERNEL_" と設定すると、Android 上の 設定->デバイス情報->カーネルバージョンで、"2.6.32.9_MY_KERNEL_" と表示されるようになる。
設定が終わったら、"Save an Alternate Configuration File" で .config ファイルを保存する。
kernel のコンパイル
$ make
このコマンドを実行すると kernel のコンパイルが始まる。環境によるが、core i7 だったら、10分~20分で終了する。
kernel のコンパイルが終了すると、arch/arm/boot/ に zImage ができる。これが kernel の本体。
boot.img の作成
boot.img を作成する際に、RAMDISK が必要になるので、P10AN01 の ROM からboot.img を入手して、RAMDISK を入手しておく。入手手順は boot.img, recovery.img の展開 を参照する。
zImage と RAMDISK を一つのディレクトリにおいたら、mkbootimg コマンドを実行する。
$ mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz -o boot.img --base 0x10000000
なお、mkbootimg は、Android のソースコードから NDK でコンパイルできる。
boot.img を書き込む
flash_image や nvflash で書き込める