follow me

RasPi Kernelクロスビルド

Raspberry PiのKernelを作り直したくてクロスビルドを試してみた。
はじめはセルフビルドしてみたのだが、遅すぎて僕が耐え切れませんでした。
クロスコンパイラなどは既に用意されているので、簡単にKernelを再作成できます。
私は、Ubuntu 12.04を使用しました。忘れそうなのでメモしておきます。

1.前準備
$ sudo aptitude install git gcc make libncurses5-dev
2.作業ディレクトリ作成
$ mkdir raspi
$ cd raspi
3.Raspbianのソースを取得
$ git clone git://github.com/raspberrypi/linux.git
4.環境変数設定
$ export KERNEL_SRC=~/raspi/linux
5.クロス開発環境を取得
$ git clone git://github.com/raspberrypi/tools.git
6.環境変数設定
$ export CCPREFIX=~/raspi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-
7.カーネルのコンフィグレーションを初期化
$ cd linux
$ make mrproper
8.RaspberryPiからRaspbianデフォルトの.configを採取
一からコンフィグしてもいいのですが、足りないコンフィグがあると面倒なので、デフォルトを元に削ります。
/proc/config.gz のファイルから取り出します。
$ gunzip -c config.gz > .config
9.取得したRaspbianデフォルトのコンフィグを適用
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} make oldconfig
10.カーネルのコンフィグレーションをカスタマイズ
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} make menuconfig
11.カーネルビルド
Raspberry Piでセルフビルドすると10時間を越えますが、さすがXeon X3430です15分で終了w
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} make
12.環境変数設定
$ export MODULES_TEMP=~/raspi/modules/
13.ビルドされたモジュールを MODULES_TEMP に配置
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=${MODULES_TEMP} make modules_install
14.カーネルイメージ作成
$ cd ~/raspi/tools/mkimage
$ ./imagetool-uncompressed.py ${KERNEL_SRC}/arch/arm/boot/zImage
RaspberryPiに新しいカーネルイメージ(kernel.img)を/bootにコピー

15.RaspberryPiに新しいモジュール一式をコピー
$ cd ~/raspi/modules/
以下の二つは転送の必要はありませんので削除します
$ rm lib/modules/3.6.11+/build
$ rm lib/modules/3.6.11+/source
lib丸ごとRaspberry Piにコピーします

16.githubから最新のファームウェアを取得
(同じバージョンが使われているなら入れなおす必要はないです)
$ cd ~/raspi
$ git clone git://github.com/raspberrypi/firmware.git
17.ブートローダ等のファームをRaspberryPiにコピー
$ cd firmware
$ cd boot
bootcode.bin fixup.dat start.elf の3ファイルを/bootにコピーします

18.SOC内蔵のVideocoreVIのファームをRaspberryPiにコピー
$ cd ..
$ cd hardfp
optを丸ごと/optにコピーします

19.RaspberryPiを再起動
起動してこなかったら、他のPCからSDの/bootのファイルを描き戻して下さい。
/bootはFATですので、Windowsからでも書き込めます。
RasPi Kernelクロスビルド | 0 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。