Go Krazy custom RPI kernel with V4L2 and Media Controller included.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-04-04 12:21:17 -04:00
.github/workflows workflows: node 20 2024-07-03 08:10:50 +02:00
cmd compiled with updates 2025-04-04 12:21:17 -04:00
dist compiled with updates 2025-04-04 12:21:17 -04:00
gokrazy initial commit 🍓 2022-03-23 11:12:05 +01:00
linux-sources@bba53a117a Added additional modules and resulting output. 2025-03-30 19:30:14 -04:00
.gitmodules shallow submodule 2024-07-02 22:03:20 +02:00
go.mod update to the go.mod path 2025-04-04 12:07:32 -04:00
go.sum check-update: fallback to extra/git_hash check 2023-03-20 09:22:50 +01:00
LICENSE initial commit 🍓 2022-03-23 11:12:05 +01:00
README.md docs: instance config and GOARM (#7) 2024-09-09 08:20:28 +02:00

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 https://github.com/raspberrypi/linux, for usage by the gokrazy project.

To use the files in this repository (as well as the corresponding firmware), set the KernelPackage and FirmwarePackage of your gokrazy instance's config.json:

{
    // ...
    "KernelPackage": "github.com/gokrazy-community/kernel-rpi-os-32/dist",
    "FirmwarePackage": "github.com/gokrazy-community/firmware-rpi/dist"
}

When building, make sure to set the appropriate GOARCH and GOARM environment variables:

GOARCH=arm GOARM=6 gok -i <instance-name> update

How does it differ from https://github.com/gokrazy/kernel ?

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.

Tip

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 https://archive.raspberrypi.org/debian/ with the linux-sources submodule current HEAD.

Licenses

  • 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)