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:
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.
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.
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.
- The
vmlinuzand*.dtbfiles are built from Linux kernel sources, released under the GPL (seelinux-sources/COPYING) - The rest of the repository is released under BSD 3-Clause License (see
LICENSE)
{ // ... "KernelPackage": "github.com/gokrazy-community/kernel-rpi-os-32/dist", "FirmwarePackage": "github.com/gokrazy-community/firmware-rpi/dist" }