あるフリーランスエンジニアの色んなメモ!! ITスキル・ライフハックとか

Raspberry Pi:カーネルのビルド&更新手順

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
comments powered by Disqus