Android 2.2 カーネルソースの取得とビルド

投稿者: | 2010年7月3日

題名は2.2にしましたが、別にカーネルは2.2専用というものがあるわけでもないはず。
以下、非常に適当な情報なので自分で確認した上で適宜読み替えてください。

Androidのソースは
http://android.git.kernel.org/
にある。

前回の手順でGitからAndroid2.2のソースを拾ってくるとkernelソースはダウンロードされない。
カーネルソースを取得するには

build_test/.repo/manifest.xml
に、ソースのダウンロード情報をリビジョンを指定して追加する。
(revisionを指定しないとfroyo指定になって存在しないと言われた。)

 <project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.32"/>

このリビジョン部分は、
http://android.git.kernel.org/?p=kernel/msm.git;a=summary
からカーネルを選択してurlを見ると
http://android.git.kernel.org/?p=kernel/msm.git;a=shortlog;h=refs/heads/android-msm-2.6.32
のようになっているh=のあとの部分らしい。
よくわからんがここを指定したらダウンロードされているので良いことにする。

上記方法では一度指定したバージョンを取得すると、後でバージョンを変更する方法がわかりませんでした(^^;

上記手順でも良いかと思いますが、カーネルのみ取得する場合は

$git clone git://android.git.kernel.org/kernel/msm kernel -b android-msm-2.6.32

$git clone git://android.git.kernel.org/kernel/msm kernel -b android-msm-2.6.32-nexusonec

のように実行するのが良いようです。
-bの後ろは
http://android.git.kernel.org/?p=kernel/msm.git;a=summary
を見てどれかを選択。

まず以上でソースの取得は完了です。

ここより以下の手順で一応ビルドできて本体まで書き込みはできていますが、書き込むと起動できません…
情報をお持ちの方は助言をいただけると助かります。

主にここの情報を元に作業してました
android-development-environment
カーネルを拾ってきたら、

$make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- msm_defconfig

で、.configファイルを作成し、それを手動で編集してビルドをかけます。
.configは

$make menuconfig ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-

で、一般のカーネル編集によく使うmenu configの画面で編集も可能だった。
ビルドは

$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-

でできます。
カーネル名の変更は、Makefileをいじると可能です。

カーネルイメージは
kernel/arch/arm/boot/zImage
にできるので、fastbootモードに入って

$fastboot flash zimage zImage

のようにしてやることで書き込み可能。

ただ、上にも書いたとおり自前のカーネルではまだ起動に成功していません。
おそらく.configを自分の機種に合うように変更する必要があるのだと思っていますが、原因はまだ不明。
それともfastbootで書き込む方法は問題があるのか?

参照したサイトの方では、できたzImageを
vendor/htc/passion/kernel (元記事ではvendor/htc/dream-open/kernel)
に置くようにかかれていますが、ここに置いて全体のビルドを行ってもカーネルの更新はされてませんでした。
froyoでは手順が違うのか、何が原因なのかは不明。

.configの作成時点でmsmの標準設定を元に使っているのが問題ではないかと考えているので
NexusOne用の.configをどこかで探してくるのが早いかもしれないです。
cyanogen modのサイトにないか探してみる…

カーネルコンフィグは、端末を接続して

$adb pull /proc/config.gz

で取得できます。いじる場合はこれを元にすると良さそうです。
これを元にしたカーネルを作成、書き込みを行い起動できる状態になりました。

Android 2.2 カーネルソースの取得とビルド」への3件のフィードバック

  1. ピンバック: Nexus One用にfroyoソースをビルド (on ubuntu10.04) - 記録

  2. てる

    「自前のカーネルではまだ起動に成功していません。」とのことですが、PC用以外のカーネルビルドは、かなり大変だと思います。というのは、Android機器に実装してあるカーネルソース&ドライバが公開されていれば、コンフィグレーションだけ設定すれば起動すると思いますが、メーカー側でドライバ類やカーネルの修正がされていれば、それを入手しなければ起動しないと思います。。。
    (この辺りの事をご存じなら、このコメントを削除して頂いて^^ok)

    返信
  3. ichinomoto 投稿作成者

    コメントありがとうございます。
    Nexus OneなどのGoogleが開発用として出してる機種に関しては、ドライバなどの必要モジュールの読み出しコマンドがビルド環境にあるためそれを使えば何とかなるようです。
    .configも本体から読み出すという手段で何とかビルドと書き込みまでできたりします。
    国内開発の機種などは、カーネルビルドしても使えないということが多そうです。というかまず書き込みができないですね…

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です