IS01のkernelをビルドしちゃおう! ※修正: 20101213


※このビルドはNANDロック解除などのセキュリティ部分の解除はしていません。

nandロックが解除出きるようになって、recovery等の書き変えも可能になりいろいろと旬になってきたIS01ですが、まだまだスタートしたばかりです。

で、まぁカスタムロム作りたくてandroidのソースをぼちぼち読んでいるのですが云々。

さてさて、今回はSH Developers Squareに公開されているIS01のkernelソースをビルドしていきます。

ソースは前記事のスクリプトから取得しておきましょう。

STEP1: android.git.kernel.orgからコンパイル用ソースをとってきましょう。(既にやっている人はSTEP2へ)
#mkdir mydroid
#wget http://android.git.kernel.org/repo
#chmod 755 repo
#./repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
#./repo sync
ここのSTEPは取得に時間がかかりますので気長に待ちましょう。

STEP2: IS01のソースをビルドするための準備1
IS01のkernelソースに移動
#vim ./arch/arm/mach-msm/sh_sleepcheck.c
最初の行にある#include <smd_private.h>を#include “smd_private.h”
に書き換える。diffはよーわからないのでそのうち勉強する。

STEP3: IS01のソースをビルドするための準備2
IS01での操作です。
rootとった状態でTerminal Emulatorから
#busybox cp /proc/config.gz /sdcard/config.gz ←この操作はbusyboxとそのpathが必要です。
config.gzをPCに持ってきて展開する。
それをIS01のkernelフォルダに「.config」という名前で保存してください。
「.config」はmakeするときに使用します。

STEP4: kernelのビルド
#make ARCH=arm CROSS_COMPILE=../../mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
を実行すると、
arch/arm/boot/にImageというファイルが出来上がります。これがkernelです。
お疲れ様でした。

と記事書いてたら仙石さんが仕事早いw
Android 端末 IS01 のカーネルを入れ替えてみた ? さよならデッカード LSM
とりあえず僕はnandプロテクト外したものを作っています。
froyoベースになるにはもうちょいお勉強。。

STEP 番外編1: android.kernel.orgとcode auroraからのkernelソース取得
・純粋なandroid向けkernelの取得
mkdir android_kernel ←適宜名前変更してください
git clone git://android.git.kernel.org/kernel/msm.git -b android-msm-2.6.35
2.6.29の場合は「android-msm-2.6.29」です。なお各ブランチはこちらを参考にしてください。

・IS01のベースとなったとされるcodeauroraのkernelの取得
mkdir aurora
**git clone git://codeaurora.org/kernel/msm.git msm-kernel **
**cd msm-kernel **
**git checkout origin/android-msm-2.6.29b **
git checkout dcdb890bc3e49ba5091230e73e976d9f6860fffe
wiki参考

どうでもいいこと:なんでSTEP2で書き換えたのかは…
カーネルソースを修正せずにmakeしたらエラーが出た。これはひどい、、
arch/arm/mach-msm/sh_sleepcheck.c:27:25: error: smd_private.h: No such file or directory
arch/arm/mach-msm/sh_sleepcheck.c: In function ‘sh_sleepcheck_name_m_show’:
arch/arm/mach-msm/sh_sleepcheck.c:625: error: implicit declaration of function ‘smem_get_entry’
arch/arm/mach-msm/sh_sleepcheck.c:625: error: ‘SMEM_SLEEP_STATIC’ undeclared (first use in this function)
arch/arm/mach-msm/sh_sleepcheck.c:625: error: (Each undeclared identifier is reported only once
arch/arm/mach-msm/sh_sleepcheck.c:625: error: for each function it appears in.)
cc1: warnings being treated as errors
arch/arm/mach-msm/sh_sleepcheck.c:625: warning: assignment makes pointer from integer without a cast
make[1]: *** [arch/arm/mach-msm/sh_sleepcheck.o] エラー 1
make: *** [arch/arm/mach-msm] エラー 2
てなかんじのエラーが。まさか素の状態でこんなもんでるとは思わなかったw
で、まぁ上のSTEPで修正していたわけですね。

repoつかったりgit clone使ったりしてるのは、途中でエラーが発生したりしなかったり謎なため。