Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



75 Commits

Repository files navigation

Kernel for Raspberry Pi 32 bits (in sync with official bullseye repo)

This repository holds a pre-built 32 bits Linux bits kernel image for the Raspberry Pi, compiled from, for usage by the gokrazy project.

To use the files in this repository, adjust the -kernel_package of gokr-packer:

GOARCH=arm gokr-packer \ \

How does it differ from ?

gokrazy-community/kernel-rpi-os-32 gokrazy/kernel
architecture ARMv6 32-bit ARMv8 64-bit
upstream linux Raspberry Pi OS fork linux mainline

This kernel can be used by the oldest Raspberry Pi and follows the release cycles of the Raspberry Pi foundation.

Manual compilation

go run cmd/compile/main.go

It will compile the kernel located in linux-sources using a crossbuild docker image and copy the resulting files in the dist folder.

It uses default kernel config (make bcmrpi_defconfig), as recommended by the official documentation, with the addition of the SquashFS module (CONFIG_SQUASHFS, which is required for gokrazy) and CONFIG_IPV6.


If you want to use your locally-compiled kernel, use the replace directive. To prevent gokrazy from complaining about CheckDir(...): ... malformed file path, add an empty go.mod file in the linux-sources folder.

Update check

go run cmd/check-update/main.go

It will compare the kernel version distributed on with the linux-sources submodule current HEAD.


  • The vmlinuz and *.dtb files are built from Linux kernel sources, released under the GPL (see linux-sources/COPYING)
  • The rest of the repository is released under BSD 3-Clause License (see LICENSE)


Linux kernel for Raspberry Pi 32 bits, for usage in gokrazy








Contributors 4