
Discover the fundamentals of Linux kernel system programming through a learner's journey across small articles and practical explorations, with insights drawn from diverse topics.
Rump introduction explains how functional components like file systems and networking stacks run in user space without modification, using the rump framework.
Compare docker-style containers that share the host kernel via cgroups and namespaces with rump from NetBSD, which runs components in user space for faster boot and isolation.
Discover how Linux system calls work, showing a 64-bit assembly hello world that uses syscalls 1 (write) and 60 (exit), with parameters passed in registers.
Explore how Linux kernel logs messages with printk into a ring buffer, and how /proc/kmsg and syslog/klogctl expose these logs to user space for reading and forwarding.
2 commands from the lecture:
1. rpmbuild -bp --target=`uname -m' kernel.spec // This is for installing the source only. The %prep target is run in the spec file
2. rpmbuild -bb --target=`uname -m' kernel.spec // This compiles the linux kernel as per the SPEC and .config options defined.
I have included some interesting short tutorials on various Linux topics like - coding in assembly a simple system call, basic Loadable Kernel Module example in C, creating an entry in the /proc file system, Virtualization, Linux logging explained etc. The tutorials all have small code example in assembly or C language.