ようこそゲストさん

from half mile beach

Raspberry Pi2 Kernel Build

kernel build

  • 事前準備

  toolchainとkernel source を入手しておく。

  • PATHの設定

toolchain を /home/pi/raspberry へ展開した場合

export PATH=/home/pi/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH
  • Corss Compile 用に環境変数設定
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
  • def config

kernel のオプションを設定するようなもの。一度だけやっておけば良い。

make bcm2709_defconfig
  • EXTRAVERSION の設定

動作確認を簡単に行えるように、 Makefile の 下記に適当な名前をつける。無くても良いが、付けていると boot に失敗した場合にもとに戻しやすくなる。だが、そのぶん、/boot に異なるkernel image がたくさんできることになる。使わないであろう物は消せばいいが。

EXTRAVERSION = -xxxx
  • Kernel Build -j の後の数字は適当に。ついでに module も build
make -j4
make modules -j4

カーネルとモジュールは出来た。次はRaspberry Pi へコピーが必要な物を一か所に集める。モジュールは環境変数の INSTALL_MOD_PATH で指定されるディレクトリへインストールされる。適当なディレクトリを環境変数へ設定し、そのディレクトリを作る。それからインストール。

export INSTALL_MOD_PATH=$HOME/tmpimg
mkdir -p $INSTALL_MOD_PATH
make modules_install

次に kernel をコピー。Image と zImage どちらでも良いが、圧縮されてサイズが小さい zImage を普通は使う。コピー後の名前は何でも良い。module の path と合わせたりする必要は無い。後々、自分で見分けがつかなくならないようにしておけば大丈夫。ずっと後、raspberry pi側でその名前を config.txt に記載する。

 cp arch/arm/boot/zImage $INSTALL_MOD_PATH/kernel_xxxx.img

INSTALL_MOD_PATH の中を tar でとまめる。それから raspberry pi へコピー。

cd
tar cvzf tmpimg.tgz tmpimg
scp tmpimg.tgz pi@yyyyyyyy:/home/pi/

この後は raspberry pi 側で行う。コピーした物を展開は、kernel image は /boot へ lib の中は /lib へコピー。

tar xvzf tmpimg
cd tmpimg
sudo cp kernel_xxxx.img /boot
sudo cp -r lib /

最後に、/boot/config.txt に新しい kernel の名前を書く。最終行にある。

kernel=kernel_xxxx.img

再起動後、 uname -r すると build した物が動いていることがわかる。もし、起動しなくなったら、MicroSD の config.txt の kernel 行を以前の kernel へ戻せば良い。

  • TB-URL  http://www2u.biglobe.ne.jp/ikenji/adiary/adiary.cgi/08/tb/