KRN-110 · Linux Kernel Core · Foundation
Modules & the Kernel Build System — full syllabus
Kbuild, module loading, symbol resolution and the module lifecycle from insmod to rmmod.
Who this course is for
Developers writing or maintaining out-of-tree kernel modules — driver and BSP engineers who need Kbuild, symbol resolution and the load/unload lifecycle to be routine rather than mysterious.
Prerequisites
- Solid C
- KRN-102 or equivalent build experience
- Ability to build and boot a kernel in QEMU
Course outline
Day 1 — Kbuild from the outside
- Kbuild makefiles: obj-m, obj-y, ccflags-y and per-object flags
- In-tree vs out-of-tree builds: M=, KDIR and the kernel build directory contract
- A first module: the boilerplate and what module_init/module_exit expand to
- Build artifacts explained: .ko, .mod.c, modules.order, Module.symvers
Day 2 — Loading, symbols and the lifecycle
- insmod, modprobe, rmmod and what each really does
- Module reference counting and why rmmod fails
- Symbol resolution: EXPORT_SYMBOL, EXPORT_SYMBOL_GPL and symbol namespaces
- Module parameters (module_param) with permissions and sysfs exposure
- Dependencies, depmod and modules.dep
Day 3 — Shipping modules that survive upgrades
- vermagic and module versioning
- Module signing and interaction with lockdown mode
- Tainting: what taints the kernel and how to read /proc/sys/kernel/tainted
- DKMS and rebuild-on-upgrade strategies
- The unstable kernel ABI: what breaks on upgrades and how to design for it
Hands-on labs
- Lab: build an out-of-tree module against a kernel tree, load it in QEMU and observe init/exit through dmesg
- Lab: export a symbol from one module and consume it from another; watch resolution in /proc/kallsyms and Module.symvers
- Lab: add module parameters with sysfs exposure and change behaviour at load time and runtime
- Lab: provoke a reference-count rmmod failure and diagnose it; then sign a module and load it under signature enforcement
Capstone project
Package a small two-module project the way a vendor would have to ship it: Kbuild files, an exported-symbol contract inside a namespace, documented module parameters exposed through sysfs, signed modules, and a short note on what will break at the next kernel upgrade — load-tested end to end on a freshly booted kernel.
What you leave with
- Fluent out-of-tree Kbuild usage
- Correct EXPORT_SYMBOL, namespace and module-parameter discipline
- A working model of the load/unload lifecycle and reference counting
- Practical answers on signing, tainting and kernel-upgrade breakage
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 15 Nov – 17 Nov 20263 full days | RiyadhIn person · KAFD Conference Centre | 3 of 14 | SAR 6,080until 16 Oct | ||
| 22 Nov – 24 Nov 20263 full days | Kuwait CityIn person · Al Hamra Tower | 8 of 14 | KWD 500until 23 Oct | ||
| 29 Nov – 1 Dec 20263 full days | MuscatIn person · Knowledge Oasis Muscat | 3 of 14 | OMR 620until 30 Oct | ||
| 29 Nov – 6 Dec 20266 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 13 of 20 | US$1,170until 30 Oct | ||
| 30 Nov – 2 Dec 20263 full days | OttawaIn person · Kanata North Tech Park | 8 of 14 | CAD 2,200until 31 Oct | ||
| 7 Dec – 9 Dec 20263 full days | TorontoIn person · MaRS Discovery District | 3 of 14 | CAD 2,200until 7 Nov | ||
| 7 Dec – 14 Dec 20266 half-days | Europe bandLive online · 09:00–13:00 CET | 18 of 20 | US$1,170until 7 Nov | ||
| 7 Dec – 14 Dec 20266 half-days | Americas bandLive online · 13:00–17:00 ET | 7 of 20 | US$1,170until 7 Nov | ||
| 14 Dec – 16 Dec 20263 full days | LondonIn person · Shoreditch Works | 8 of 14 | GBP 1,260until 14 Nov | ||
| 14 Dec – 16 Dec 20263 full days | BerlinIn person · Factory Görlitzer Park | 3 of 14 | EUR 1,490until 14 Nov |
Book a seat, or bring this course to your team
Seats can be reserved online; private delivery runs on-site or live online, adapted to your stack.
Questions about fit or prerequisites? Email hello@kernelsystems.academy. To save this syllabus, print this page to PDF from your browser.