Linux Kernel Architecture
Linux kernel internals.
Linux User Guide
Master Linux system administration from the ground up — the foundation every embedded engineer needs.
Filesystem Navigation
FHS, navigate directories, manage files, understand inodes, mounts and /proc.
Users & Permissions
User management, permission bits, SUID/SGID/sticky bit, ACLs, and Linux capabilities.
Process Management
Monitor and control processes, signals, scheduling priorities, cgroups, and systemd units.
Package Management
APT, dpkg, repositories, PPAs, and building software from source.
Networking Basics
Configure interfaces, DNS, packet capture, and iptables firewall rules.
SSH & Remote Access
Key-based auth, file transfer, tunnels, sshd hardening, ProxyJump for embedded boards.
Cron & Scheduling
Cron, at, and systemd timers for recurring tasks. Prevent overlapping jobs with flock.
Bash Scripting
Variables, arrays, conditionals, loops, functions, error handling, and text pipelines.
Git Basics
Commits, branching, merging, rebasing, remotes, and kernel development best practices.
Linux Developer Guide
C programming, modern C++17/20, and POSIX system APIs — the language layer every embedded developer needs.
Pointers & Memory
Pointer arithmetic, pointer-to-pointer, function pointers, memory layout, stack vs heap.
Structs & Unions
Struct layout, padding/alignment, bit-fields, unions, typedef for embedded protocols.
File I/O
fopen/fread/fwrite, buffered vs unbuffered I/O, file positioning, binary files.
Dynamic Allocation
malloc/calloc/realloc/free, memory leaks, Valgrind, custom allocator patterns.
Makefiles
Rules, variables, automatic variables, pattern rules, phony targets, multi-directory builds.
GCC Flags & Optimization
Warning flags, optimization levels, sanitizers, cross-compile flags, reading assembly.
GDB Debugging
Breakpoints, watchpoints, stack frames, core dumps, remote debugging, GDB scripting.
OOP & RAII
Classes, inheritance, virtual dispatch, RAII, Rule of Five, exception safety.
Templates & STL
Function/class templates, specialisation, STL containers, iterators, algorithms.
Smart Pointers
unique_ptr, shared_ptr, weak_ptr, custom deleters, when to use each.
Move Semantics
lvalue/rvalue, move constructor/assignment, std::move, perfect forwarding.
CMake
Targets, properties, find_package, CPack, cross-compilation toolchain files.
Qt Framework
Signals & slots, QObject, QML basics, Qt for embedded (eglfs), serial/network I/O.
C++17 / C++20
Structured bindings, std::optional/variant, concepts, ranges, coroutines.
POSIX File I/O
open/read/write/close, file descriptors, O_flags, ioctl, mmap, epoll.
Processes & fork()
fork/exec/wait, process groups, sessions, daemon creation, zombie reaping.
Signals
sigaction, signal masks, real-time signals, signal-safe functions, self-pipe trick.
UNIX Sockets
TCP/UDP sockets, server/client patterns, non-blocking I/O, UNIX domain sockets.
Pthreads
pthread_create/join/detach, thread attributes, CPU affinity, thread-local storage.
Mutexes & Semaphores
pthread_mutex, condition variables, semaphores, rwlocks, avoiding deadlocks.
Pipes & Shared Memory
Anonymous & named pipes (FIFOs), POSIX shared memory, message queues, mmap IPC.
Embedded Linux Developer
Cross-compilation toolchains, U-Boot bootloader, and Linux kernel — the bridge to real embedded hardware.
GNU Cross-Toolchain
gcc, binutils, glibc, toolchain naming conventions, building a cross-toolchain from scratch.
Sysroot & Libraries
Sysroot structure, staging directory layout, and library version mismatches on target.
Static vs Dynamic Linking
Shared library deployment, rpath, ldconfig, and LD_LIBRARY_PATH on embedded targets.
QEMU Emulation
QEMU system vs user mode, emulating ARM/RISC-V boards, and network setup.
readelf / objdump / nm
Inspect ELF binaries, dump disassembly, list symbols, diagnose linking problems.
Cross-Compiling with CMake
CMake toolchain files, CMAKE_SYSROOT, find_package for cross targets.
Boot Sequence
ROM → SPL → U-Boot → Kernel: every stage explained, power-on reset, BootROM.
U-Boot Config & Build
defconfig, menuconfig, cross-compiling U-Boot, MLO/u-boot.bin/u-boot.img.
U-Boot Commands
U-Boot shell, environment variables, memory commands, loading from MMC/TFTP.
Device Tree (DTS)
DTS syntax, phandles, overlays, binding docs, dtc/fdtdump, passing DTB to kernel.
Board Porting
Add a new board to U-Boot — Kconfig entry, board header, SPL, DDR init, UART.
TFTP & Network Boot
TFTP server setup, U-Boot network settings, tftp/bootp, booting over network.
Kconfig & menuconfig
Kconfig language, tristate options, menuconfig, defconfigs, .config fragments.
Kernel Compilation
Cross-compiling, ARCH/CROSS_COMPILE, zImage/uImage/dtbs, module installation.
Boot Parameters
Kernel command line, root=, console=, init=, earlycon, /proc/cmdline.
Kernel Subsystems
VFS, memory management, scheduler, networking stack, driver model.
printk & Dynamic Debug
printk log levels, dmesg, dynamic_debug, dev_dbg, runtime debug without recompile.
ftrace & kprobes
trace-cmd, function tracer, event tracing, kprobes, uprobes, perf integration.
Kernel Developer & Build Systems
Write Linux device drivers, build root filesystems, and automate production images with Yocto and Buildroot.
Kernel Modules
Module lifecycle (init/exit), parameters, dependencies, insmod/modprobe.
Character Devices
cdev, file_operations, open/read/write/ioctl, major/minor numbers, udev.
Platform Drivers
platform_driver, device tree binding, probe/remove lifecycle, devm_* APIs.
Interrupts & Timers
request_irq, threaded IRQs, top/bottom halves, workqueues, tasklets.
I2C / SPI / UART
i2c_driver, spi_driver, regmap, tty layer, writing client drivers for real ICs.
sysfs & procfs
Expose driver state via /sys and /proc — kobjects, attributes, seq_file.
DMA
DMA engine API, coherent vs streaming mappings, scatter-gather, dmaengine.
BusyBox
Build a minimal rootfs using BusyBox — configure, compile, and init scripts.
systemd
Unit files, service management, targets, socket activation, boot time optimization.
SysVinit & runlevels
Init scripts, runlevels, /etc/inittab, rc.d directories, legacy embedded systems.
Filesystem Types
ext4, squashfs, tmpfs, overlayfs, mounting, images, flash wear-leveling.
NFS & initramfs
NFS root for iteration, initramfs images, pivot_root, in-memory rootfs.
Buildroot Basics
Configure Buildroot, directory layout, select packages, build toolchain + rootfs.
Buildroot Packages
Custom .mk files, board defconfigs, overlay files, post-build scripts.
BitBake & Recipes
BitBake syntax, recipe structure, SRC_URI, bbappend files, fetch/unpack/patch.
Yocto Layers
Layer architecture, bblayers.conf, meta-* layers, BSP layer creation.
Custom Distro
Distribution policy, image features, package groups, IMAGE_INSTALL for production.
SDK Generation
Standard and extensible SDKs (eSDK), distribute to developers, devtool.
CI / Automated Builds
Integrate Yocto/Buildroot into CI — shared sstate-cache, reproducibility.