labs.beatcraft.com
bc9/Software/Android/kernel2.6.29

kernel 2.6.29-bc9-r7 への更新手順

bc9 の kernel を 2.6.29-bc9-r7 へ更新する手順を記載します。

kernel 2.6.29-bc9-r7 での主な変更点

  • 加速度センサー、地磁気センサー、方位センサー(※)、用の driver を追加
    bc9 ベースボード上の加速度センサー、地磁気センサー、方位センサーを使用する場合は
    この kernel version への更新が必須となります。

    ※ 方位センサの pitch, roll の値はまだ調整中のため、Java から取得しても常に 0 が出力されます。

Android kernel source の取得

以下のようにして Android 用変更が施された kernel source を取得します。

$ mkdir kernel_work
$ cd kernel_work
$ git clone git://android.git.kernel.org/kernel/common.git android_kernel
$ cd android_kernel
$ git checkout --track -b android-2.6.29 origin/android-2.6.29

patch の適用

添付の filepatch-kernel-2.6.29.4-bc9-r7.tar.gz をダウンロードして展開します。

$ tar xvfz patch-kernel-2.6.29.4-bc9-r7.tar.gz

22 の patch ファイルと patch 適用のための shell script が含まれています。

$ cd patch-kernel-2.6.29.4-bc9-r7
$ ls 
01-minimum.patch    09-mmc-mfp.patch         17-ucb1400-adc.patch
02-lcd.patch        10-i2c-fastmode.patch    18-tsc2003-calibration.patch
03-tsc.patch        11-mtd-devname.patch     19-ucb1400-mma7260qt.patch
04-usb.patch        12-mod-bc9-keys.patch    20-fix-bc9-leds.patch
05-proc-gpio.patch  13-bc9-config.patch      21-hmc5843.patch
06-gpio-keys.patch  14-bc9-leds.patch        22-ucb1400-mma7260qt-non-spinlock.patch
07-ac97.patch       15-rtc-ds1374.patch      patch-all.sh
08-ac97-gpio.patch  16-bc9-usb-config.patch

patch-all.sh は kernel source tree のトップディレクトリで実行するようになっていますので、
以下のようにして実行します。

$ cp * ~/kernel_work/android_kernel/
$ cd ~/kernel_work/android_kernel/
$ ./patch-all.sh

patch 適用完了後、patch 済みであることが分かりやすいよう、ディレクトリをリネームしておきます。

$ cd ..
$ mv android_kernel linux-android-2.6.29-bc9-r7

kernel build の準備

kernel を bc9用に cross build するため以下のような script を用意し、これを source して
bitbake で生成された cross toolchain へ path を通します。

#!/bin/sh

export PATH=/home/beat/gumstix/gumstix-oe/tmp/cross/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-angstrom-linux-gnueabi-
$ source setup_kernel_build.sh

kernel ビルド

patch 適用作業の完了後、添付の filebc9-r7_android_static_defconfig を .config としてコピーし、
その後 添付の filemake-bc9-kernel.sh をダウンロードして kernel source top ディレクトリで実行します。

$ cd linux-android-2.6.29-bc9-r7
$ cp bc9-r7_android_static_defconfig .config
$ ./make-bc9-kernel.sh

build が正常に終了すると、標準の make を実行した場合に得られるファイルの他に以下の二つのファイルが得られます。

modules-2.6.29-bc9-r7.tgz
uImage-bc9-2.6.29-bc9-r7.bin

上記のファイルを bc9/bc9-boot-microsd-image--release20090815-fix設定手順
に従って作成した microSD に以下のようにコピーします。
microSD の第1パーティションが作業用PC の /media/disk に、第2パーティションが作業用PC の /media/disk-1 に
マウントされた状態で作業します。

uImageのコピー

ビルド完了後できた uImage-2.6.29-bc9-r7.bin を microSD の第1パーティション(FAT16)にある uimage と置き換えます。

$ sudo cp uImage-2.6.29-bc9-r7.bin /media/disk/uimage

modules の展開

次に kernel module を microSD の第2パーティション(ext3)に展開します。

$ sudo cd /media/disk-1
$ tar xvfz ~/kernel_work/linux-android-2.6.29-bc9-r7/modules-2.6.29-bc9-r7.tgz

/lib/modules/2.6.29-bc9-r7 以下に展開されたことを確認して下さい。

2.6.29-bc9-r7 kernel で起動

上記で用意できた microSD を bc9 の microSD スロットに挿して電源を入れると、
LCD に linux の 起動logo が表示され 2.6.29-bc9-r7 kernel が起動します。
以前の 2.6.29-bc9-r7 との違いは、起動後 /dev の下に以下の二つのデバイスファイルが新たに追加されています。

  • accelerometer
  • compass


以上で 2.6.29-bc9-r7 kernel への更新は完了です。


by 大塚聡史

添付ファイル: filemake-bc9-kernel.sh 624件 [詳細] filebc9-r7_android_static_defconfig 1195件 [詳細] filepatch-kernel-2.6.29.4-bc9-r7.tar.gz 978件 [詳細]

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-12-04 (金) 22:00:17 (2910d)