▼ 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/