Minimal workspace for:
- Raspberry Pi kernel (submodule)
- Out-of-tree kernel modules
- Cross-compilation workflow
.
├── kernel/ # RPi Linux (submodule)
├── kernel_headers/ # Exported headers (userspace only)
├── modules/ # Custom modules
├── build_kernel.sh
└── build_module.sh
git submodule sync
git submodule update --init --remote kernel
cd kernel
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_prepare
./build_module.sh <module_name> build
- Use
kernel/→ for module builds - Do NOT use
kernel_headers/for modules
./build_kernel.sh build
cd kernel
git checkout -B rpi-6.12.y origin/rpi-6.12.y
sudo apt install gcc-aarch64-linux-gnu
Build and copy kernel:
Kernel modules inspired from:
- https://github.com/Johannes4Linux/Linux_Driver_Tutorial/tree/main
- https://github.com/Embetronicx/Tutorials/tree/master/Linux/Device_Driver
Pinout reference: