This document provides an introduction to Linux kernel development. It discusses the basics of the kernel including its responsibilities and types. It covers the process of building the kernel using Kconfig and Makefiles. It also describes the kernel API and common data structures used for threading, modules, and devices. Finally, it discusses best practices for patching the kernel including code style checks and signing off on changes.