Raspberry Pi3 カーネルビルドに挑戦、そしてハマる
2017/2/11: 新解釈記事を書きました。
「RPi3に無線LANアダプタをつけて、2つのNICで異なるネットワークに接続したい」、という要求が発生。
デバイスドライバがないので、USBポートに無線LANアダプタを挿しても、もちろん動かない。
それじゃデバイスドライバをmakeしますか → カーネルビルドが必要(/lib/modules/4.x.x-v7+/build が必要)
Raspberry Pi 公式の手順を踏んでみても途中でエラーが出てうまくいかない。
試行錯誤の末に行き着いたのが以下の手順です。
- ビルドに必要そうなパッケージを入れる
# apt-get update
# apt-get install bc screen - 今のカーネルのバージョンを調べる
$ uname -r
-> 4.1.19-v7+であったとする - https://github.com/raspberrypi/linux からソースコードを入手する
-> 4.1.x系のソースコードが欲しい場合、ブランチから取る
$ git clone --depth=1 https://github.com/raspberrypi/linux.git -b rpi-4.1.y - ファームウェアを取得する
git clone --depth=1 https://github.com/raspberrypi/firmware.git - makeの準備をする
$ cd linux
# modprobe configs
# zcat /proc/config.gz > .config
# cp -v ../firmware/extra/Module7.symvers Module.symvers - makeする(何時間かかかります、root権限じゃないとうまくいかない模様)
# make oldconfig
# make -j 4 zImage modules dtbs - モジュールをインストールする
# make modules_install - dtbを書き換える
# cp -v arch/arm/boot/dts/*.dtb /boot/
# cp -v arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
# cp -v arch/arm/boot/dts/overlays/README /boot/overlays/ - カーネルイメージを書き換える
# cp -v /boot/kernel7.img /boot/kernel7.img.old
# scripts/mkknlimg arch/arm/boot/zImage /boot/kernel7.img - 再起動する
参考HP