0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry PiのカーネルソースをWindows (wsl)でクロスコンパイルする

Last updated at Posted at 2025-05-22

Raspberry Piのカーネルバージョンを手っ取り早く最新にしたい時などの為に、ソースビルドして導入する方法をまとめます。なお、本解説は64bit(Aarch64)版カーネルで検証した内容です。

コンパイルにはWindows母艦PC上のwslを用います。

依存関係をインストールする

sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev
sudo apt install crossbuild-essential-arm64

ソースのクローン

公式のGitHubからカーネルソースを引っ張ってきます。

git clone --depth=1 https://github.com/raspberrypi/linux
cd linux

環境変数と .config の準備

# Raspberry Pi 3/3+/CM3/CM3+/Z2W/4/400/CM4/CM4S
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
# Raspberry Pi 5/500/CM5
KERNEL=kernel_2712
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2712_defconfig

KERNELは後ほどカーネルイメージをコピーする際に出てきます。

ビルド

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs -j8

-j8はCPUのスレッド数に合わせて任意で変更します。

転送

丸ごと送るのでかなり時間がかかります。
もっと賢いやり方があるかもしれない?

scp -r ~/linux pi@[Rapberry PiのIP]:/home/pi/

インストール

Raspberry Pi側での実行

cd linux
sudo make -j6 modules_install
sudo cp /boot/firmware/$KERNEL.img /boot/firmware/$KERNEL-backup.img
sudo cp arch/arm64/boot/Image.gz /boot/firmware/$KERNEL.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/

カーネルモジュール単位でビルド・転送する

例:drivers/media/usb/em28xx/のドライバをコンパイルし転送する

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- M=drivers/media/usb/em28xx modules
scp -r ./drivers/media/usb/em28xx/ pi@[Rapberry PiのIP]:/home/pi/linux/drivers/media/usb/

参考

Raspberry Pi Documentation: The Linux kernel

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?