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使ったりしてるのは、途中でエラーが発生したりしなかったり謎なため。