Operating Systems
- Introduction to Paging
- Raspberry pi os This repository contains a step-by-step guide that teaches how to create a simple operating system (OS) kernel from scratch
- Sushi Roll: A CPU research kernel with minimal noise for cycle-by-cycle micro-architectural introspection
Related to that there are Hypervisors
- Hypervisor From Scratch – Part 1: Basic Concepts & Configure Testing Environment
- Learning KVM - implement your own Linux kernel
Unix quirkness
There are some aspects of UNIX
that are broken
- Epoll is broken
- POSIX close(2) is broken
- Eleven syscalls that suck
- Use mmap With Care
- signalfd is useless
Linux
- The definitive guide to linux system calls
- Syscalls table 32
- Syscalls table 64
- Hello from a libc-free world!
- Ftrace
- The Design and Implementation of Userland Exec
- How main() is executed on Linux
- __libc_start_main() specification
- What happens when you start a process on Linux?
- getauxval() and the auxiliary vector
- OOPS debugging with GDB
- slide on using
SPI
andI2C
in user space. - slide about kthreads
- Evolution of the x86 context switch in Linux
- Linux Capabilities In Practice
- Debugging network stalls on Kubernetes
- Eleven syscalls that rock the world
- An introduction to Linux kernel initcalls
- Static calls in Linux 5.10: changes on linux 5.10 to improve performances but avoid Spectre-like attacks
- From HDL to Linux Userland
- understanding thread stack sizes and how alpine is different
- How fast are Linux pipes anyway?
- random.c Inside the Linux kernel RNG
Networking
- Monitoring and Tuning the Linux Networking Stack: Sending Data
- Monitoring and Tuning the Linux Networking Stack: Receiving Data
Device tree
- Post about Linux implementation and history of the Device tree
- A TUTORIAL ON THE DEVICE TREE
Containers
- What even is a container: namespaces and cgroups
- p8952/bocker Docker implemented in around 100 lines of bash
- Demystifying Containers - Part I: Kernel Space
- Demystifying Containers - Part II: Container Runtimes
- containers/skopeo Work with remote images registries - retrieving information, images, signing content
- rootlesscontaine.rs/ Rootless containers refers to the ability for an unprivileged user to create, run and otherwise manage containers
- Lesser known Docker tips for advanced users
- Understanding how uid and gid work in Docker containers
- Connection refused? Docker networking and how it impacts your image
- A deep dive into Linux namespaces
- How to run Docker containers using common Linux tools (without Docker)
- Docker without Docker
Memory
- Why mmap is faster than system calls
- How The Kernel Manages Your Memory
- ARM32 Page Tables
- Kernel dynamic memory analysis
- SLUB
- SLUB debug
Gate
Clock
- Clock Framework User Guide
- Common clock framework: how to use it slide
Modules/drivers
- How does the Linux kernel determine the order of __init calls?
- Platform Device Driver - a practical approach
- Linux Kernel architecture for device drivers
- https://elinux.org/Device_drivers
- An Introduction to the Video4Linux Framework
- Linux media subsystem docs
- Linux kernel module cheat The perfect emulation setup to study and modify the Linux kernel, kernel modules, QEMU and gem5
- Writing USB Device Drivers
Tracing and debugging
- Linux kernel tracing from COSCUP 2016
- goldshtn/linux-tracing-workshop Examples and hands-on labs for Linux tracing tools workshops