[[labs.beatcraft.com]]~ [[bc9/Software/Android/kernel2.6.29]]~ #contents * kernel 2.6.29-bc9-r7 への更新手順 [#t155b1cc] bc9 の kernel を 2.6.29-bc9-r7 へ更新する手順を記載します。~ ** kernel 2.6.29-bc9-r7 での主な変更点 [#s0147580] - 加速度センサー、地磁気センサー、方位センサー(※)、用の driver を追加~ bc9 ベースボード上の加速度センサー、地磁気センサー、方位センサーを使用する場合は~ この kernel version への更新が必須となります。~ ~ ※ 方位センサの pitch, roll の値はまだ調整中のため、Java から取得しても常に 0 が出力されます。~ ** Android kernel source の取得 [#f77510dc] 以下のようにして 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 の適用 [#g1f86391] 添付の &ref(patch-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 の準備[#n4ee3b09] 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 ビルド [#hbfb4438] patch 適用作業の完了後、添付の &ref(bc9-r7_android_static_defconfig); を .config としてコピーし、~ その後 添付の &ref(make-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のコピー [#a27b900d] ビルド完了後できた uImage-2.6.29-bc9-r7.bin を microSD の第1パーティション(FAT16)にある uimage と置き換えます。~ $ sudo cp uImage-2.6.29-bc9-r7.bin /media/disk/uimage ** modules の展開 [#d55110db] 次に kernel module を microSD の第2パーティション(ext2)に展開します。 次に 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 で起動 [#l0f34bf6] 上記で用意できた 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 への更新は完了です。 ----------------- RIGHT:by 大塚聡史