Kernel Developer Guide
Write Linux device drivers, build minimal root filesystems, and automate production-grade embedded images with Yocto and Buildroot.
Device Drivers & Kernel Modules
Write code that runs inside the kernel — character drivers, platform drivers, and hardware interfaces.
Kernel Modules
Module lifecycle (init/exit), module parameters, module dependencies, and loading/unloading with insmod/modprobe.
Character Devices
cdev, file_operations, open/read/write/ioctl, minor/major numbers, and udev device node creation.
Platform Drivers
platform_driver, device tree binding, probe/remove lifecycle, resource management with devm_* APIs.
Interrupts & Timers
request_irq, threaded IRQs, top/bottom halves, workqueues, tasklets, and kernel timer APIs.
I2C / SPI / UART
i2c_driver, spi_driver, regmap, tty layer, and writing client drivers for real peripheral ICs.
sysfs & procfs
Expose driver state and tunable parameters via /sys and /proc — kobjects, attributes, and seq_file interface.
DMA
DMA engine API, coherent vs streaming mappings, scatter-gather, and using dmaengine for high-throughput peripherals.
Root Filesystem & Init Systems
Build the environment your applications run in — filesystem types, init systems, and minimal rootfs images.
BusyBox
Build a minimal rootfs using BusyBox — configure, compile, install, and set up init scripts for embedded targets.
systemd
Unit files, service management, targets, socket activation, journald, and minimizing boot time with systemd on embedded.
SysVinit & runlevels
Init scripts, runlevels, /etc/inittab, rc.d directories, and writing portable init scripts for legacy embedded systems.
Filesystem Types
ext4, squashfs, tmpfs, overlayfs — when to use each, mounting, creating images, and wear-leveling on flash storage.
NFS & initramfs
NFS root for rapid development iteration, creating initramfs images, pivot_root, and in-memory rootfs for production.
Build Systems — Yocto & Buildroot
Automate the entire toolchain, kernel, rootfs, and package build pipeline for production images.
Buildroot Basics
Configure Buildroot, understand the directory layout, select packages, and build a full toolchain + rootfs image.
Buildroot Packages & Board Config
Write custom package .mk files, add board defconfigs, overlay files, and post-build scripts for production targets.
BitBake & Recipes
BitBake syntax, recipe structure (SRC_URI, do_compile, do_install), bbappend files, and the fetch/unpack/patch workflow.
Yocto Layers
Layer architecture, bblayers.conf, meta-* layers, creating a BSP layer, and upstream community layer conventions.
Custom Distro
Define your own distribution policy, image features, package groups, and IMAGE_INSTALL for a locked-down production image.
SDK Generation
Generate standard and extensible SDKs (eSDK), distribute them to application developers, and use devtool for iteration.
CI / Automated Builds
Integrate Yocto/Buildroot into CI pipelines — shared sstate-cache, build reproducibility, and artifact management.