IS01のカーネルをビルドしてみた
IS01のアップデートがないことが確定してしまい残念な限りです。
ところで、この IS01 は android ということもあり、カーネルが OSS として公開されているので、せっかくなのでビルドしてみました。
準備
まずは必要なものをダウンロードしてきます。
(参考:AndroidエミュレータでLinuxカーネルをデバッグ!! (1/3) − @IT MONOist)
- カーネルソース
- クロスコンパイラ
- git://android.git.kernel.org/platform/prebuilt.git
- .config
- IS01本体の/proc/config.gzから持ってきます。
その他必要に応じて開発環境のパッケージなど。
以下のように展開します。
# mkdir android # cd android # tar zxvf /path/to/kernel.tar.gz # git clone git://android.git.kernel.org/platform/prebuilt.git # cp /path/to/config.is01 /kernel/.config
カーネルソースの修正
そのままではコンパイルエラーが出たのでソースを少し修正しました。
--- arch/arm/mach-msm/sh_sleepcheck.c.orig 2010-11-19 00:00:57.000000000 +0900 +++ arch/arm/mach-msm/sh_sleepcheck.c 2010-11-19 00:01:08.000000000 +0900 @@ -24,7 +24,7 @@ #include <linux/wakelock.h> #include <linux/pm.h> #include <mach/msm_rpcrouter.h> -#include <smd_private.h> +#include "smd_private.h" #include <sharp/sh_sleepcheck.h> /* ==========================================================================================
コンパイル
後はコンパイルをするだけです。
# cd kernel # make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- : OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready Building modules, stage 2. : # ls -l arch/arm/boot/Image -rwxr-xr-x 1 nobody nobody 5338336 2010-11-19 00:06 arch/arm/boot/Image
(たぶん)これでできました。
実行
実機にはインストールできないので、エミュレータで実行しようとしたのですがうまくできませんでした。
(出来上がった Image を -kernel オプションで指定すればいけるかと思ったのですが…)
android はあまり詳しくないのでこれ以上分からず、このあたりであきらめることにしました。