Raspberry Pi:カーネルのビルド&更新手順
- 2020/03/28
Kernel building
https://www.raspberrypi.org/documentation/linux/kernel/building.md
本家のRaspberry Pi(Raspbian)用のLinux kernelビルド手順の説明で
分かりにくいと思ったところを補足した。
ビルドの準備
インストール対象のRaspberry Pi本体に対応しているかチェック
使用するkernelのversionが対象のRaspberry Pi本体に対応しているかを確認する
例)rpi-4.19.y を使用する場合
ブラウザからkernelのGitHubリポジトリのページにアクセスし、
使用するRaspberry Pi本体に対応した設定ファイルが存在することを確認する
- Raspberry Pi 1
- Raspberry Pi Zero
- Raspberry Pi Zero W
https://github.com/raspberrypi/linux/tree/rpi-X.XX.y/arch/arm/configs
に「bcmrpi_defconfig」が存在することを確認する
- Raspberry Pi 2
- Raspberry Pi 3
- Raspberry Pi 3+
https://github.com/raspberrypi/linux/tree/rpi-X.XX.y/arch/arm/configs
に「bcm2709_defconfig」が存在することを確認する
- Raspberry Pi 4
32bitでビルドする場合は、
https://github.com/raspberrypi/linux/tree/rpi-X.XX.y/arch/arm/configs
64bitでビルドする場合は、
https://github.com/raspberrypi/linux/tree/rpi-X.XX.y/arch/arm64/configs
に「bcm2711_defconfig」が存在することを確認する
ビルド手順
ビルドするversionのソースを取得
git clone --depth=1 -b rpi-X.XX.y https://github.com/raspberrypi/linux.git
(任意)kernel version名を変更
kernel更新後の確認を容易にするため、version名を変更しておく
cd linux
vi Makefile
EXTRAVERSION = 任意
ビルドに必要なpackageを取得
以下のコマンドを実行し、kernelのビルドに必要なpackageを取得する
apt-get update
apt-get install -y -qq --no-install-recommends make libncurses-dev kernel-package
rpi-4.X以降を使用する場合、以下のpackageも必要(正確なversionは未確認)
apt-get install -y -qq --no-install-recommends libssl-dev
rpi-4.16以降を使用する場合、以下のpackageも必要
apt-get install -y -qq --no-install-recommends bison flex
kernel パラメーター設定ファイルを作成
以下のコマンドを実行し、.config(kernel パラメーター設定)ファイルを作成する
cd linux
- Raspberry Pi 1
- Raspberry Pi Zero
- Raspberry Pi Zero W
の場合
KERNEL=kernel make bcmrpi_defconfig
- Raspberry Pi 2
- Raspberry Pi 3
- Raspberry Pi 3+
の場合
KERNEL=kernel7 make bcm2709_defconfig
- Raspberry Pi 4
の場合
KERNEL=kernel7l make bcm2711_defconfig
例)設定が見つからない場合に発生するエラー
Can't find default configuration "arch/arm/configs/bcm2709_defconfig"!
ビルドを実行
- Raspberry Pi 1
- Raspberry Pi Zero
- Raspberry Pi Zero W
の場合
KERNEL=kernel make -j4 zImage modules dtbs
- Raspberry Pi 2
- Raspberry Pi 3
- Raspberry Pi 3+
の場合
KERNEL=kernel7 make -j4 zImage modules dtbs
- Raspberry Pi 4
の場合
KERNEL=kernel7l make -j4 zImage modules dtbs
ビルドが完了するまでしばら~く待つ…
(補足)cleanのやり方
オブジェクトファイルのみを消す
make clean
.configファイルも消す
make mrproper
kernelをインストール
kernelを更新
以下のコマンドを実行し、kernelを上書きする
make modules_install
cp arch/arm/boot/dts/*.dtb /boot/
cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
cp arch/arm/boot/dts/overlays/README /boot/overlays/
cp arch/arm/boot/zImage /boot/kernel7.img
Raspberry Pi を再起動する
reboot
kernel更新を確認
Raspberry Pi が再起動したら、以下のコマンドを実行し、kernelが更新されていることを確認する
uname -a