
Explore how Linux kernel development uses patches for incremental changes, adding features, enhancements, and fixes, with time-based releases every two to three months that are not blocked by new features.
Discover how Linux kernel maintainers organize subsystems and drivers, route patches via mailing lists, and use the maintainers file to gate changes into the mainline.
Explore the Linux kernel tree structure, including mainline, stable, next, and staging trees, and understand how subsystems maintain separate repositories, integration testing, and release processes.
Submit patches to the Linux kernel mailing list with a subject and attach the patch as text, CC the maintainer. Break changes into patches and explain details in the body.
Coordinate the Linux kernel release cycle by having subsystem maintainers collect patches during a two-week window and issue weekly release candidates in bug-fix mode until the three-month version ships.
Explore the Linux kernel chain, where subsystem maintainers submit changes through a two-week merge window toward Linus Torvalds. See how integration testing ensures updates don't break the source code.
Explains the Linux kernel release cycle, from a two-week merge window and weekly bug fixes to mainline stable releases, release candidates, and an eight-week cycle.
Examine the Linux kernel release cycle, where weekly release candidates lead to a seven-week path to a stable mainline release, with integration testing under Linus Torvalds' maintenance.
Identify the linux kernel release types, including release candidates, mainline, stable, and long term maintenance, and explain the development cycle, cadence, and update practices.
Kernel releases transition to a stable status, with weekly fixes and version progression, clarifying stable, long-term, and when updates stop after a new kernel ships.
Explore the need for a long term kernel release model to support five years of maintenance for diverse users, including Android devices, mobile phone manufacturers, and other Linux-based systems.
Explore the Linux kernel versions page to learn release dates, version numbers, and changelogs for release. See how stable branches and long-term support influence which version a distribution uses.
Discover where to download linux kernel source from dot org, including mainline, stable, and long-term releases; learn to create a folder and fetch the source using the provided command.
Examine how distribution channels and stable governance shape long-term support for Linux distributions like kubuntu, and learn to identify whether your system follows a distribution channel or a mainline.
Learn to build and compile your own kernel by fetching mainline sources from stable and long-term support repositories, and use both to mix and match kernel types.
Configure the kernel by creating or copying a default .config for your system, then run make all config to generate options, including new module choices, before building.
Learn how to compile the kernel by selecting a configuration from .config, building the kernel and required modules, and understanding the compilation and linking stages, warnings, and errors.
Explore how compiling the Linux kernel produces object files with architecture assembler code and how linking multiple objects shapes the build, including cc ld ar meanings and common mistakes.
Explore compiling the Linux kernel for different architectures by specifying the target architecture and using cross compilation toolchains with cross_compile variables.
Explore make targets and how to use make help to list cleaning, configuration, and generic targets; learn how architecture-specific and architecture-independent targets affect building an image and modules.
Learn how default configurations are created in Linux kernel development with defconfig and make, selecting architecture-specific contexts to copy options.
Compare .config and defconfig in the Linux kernel build. .config stores values for all options, including defaults, while defconfig contains only non-default values to guide conflict resolution.
Explore Linux kernel configuration workflows by using make all config and make config, a text-based, sequential prompt system with no backtracking, plus tips for saving and searching configurations.
Explore savedefconfig and how to create a minimal kernel configuration with only default values. Compare it with the default config and interpret warnings about conflicts and virtualization.
The diffconfig script compares kernel configuration files, copies the current config to .config_old, updates the active context, and highlights differences between configurations.
This lecture explains Linux kernel clean targets, including mccleen, improper, and macropod, and how each removes files differently, from preserving build support to deleting configurations, patches, and temporary files.
Install the built kernel modules by running make modules_install and make install, place modules in the proper filesystem locations, and update the bootloader (e.g., grub) before rebooting.
Configure the build to place output binaries and object files in a separate folder, enabling multiple configurations and architectures while keeping the source tree clean.
Learn to build only a specified portion or module of the kernel, using selective build steps, checking changes, and linking to create the module's static image.
Install the kernel by building and compiling the source, configuring options with menuconfig or oldconfig, then run make modules_install and make install to update the bootloader and system files.
Flash the latest Raspbian image onto a 32 GB microSD card for Raspberry Pi 3 by downloading the image from the Raspberry Pi site and writing it to the card.
Enable ssh on a Raspberry Pi 3 by mounting the boot partition, creating an empty ssh file, and accessing the device over the network via its IP for headless setup.
Demonstrates building the Linux kernel for Raspberry Pi 3 by preparing the cross-toolchain, configuring environment variables, compiling the kernel, creating an image, and updating boot and modules on the Pi.
Learn how to SSH into a Raspberry Pi 3 on a local network, handle password authentication, and access the device from a television-connected setup.
Expand the raspberry pi3 filesystem using rasberry config options to grow the filesystem when disk space is missing, noting that rebuilding your system may be required.
Discover how to cross compile a Linux kernel module using a makefile, configure architecture and cross compilers, and copy and install the build on a Raspberry Pi.
Update: Added Raspberrypi section on 10/10/20
In this course, you will gain a solid understanding of the Linux Kernel development process and the various roles involved, including developer, maintainer, and sub-maintainer. You’ll explore the different Linux Kernel trees and learn the essential practices to follow when sending patches to the community, ensuring that your contributions follow the accepted guidelines and standards.
We will cover the Linux Kernel release cycle in detail and explain the types of kernel releases, such as mainline, stable, and long-term versions, so you can understand how updates flow through the ecosystem. You’ll also learn how to configure, compile, and install your own Linux kernel from source, giving you hands-on experience in customizing the kernel for specific requirements and hardware.
The course includes comprehensive coverage of kernel configuration techniques, including tools like oldconfig, defconfig, savedefconfig, xconfig, and menuconfig. You will also learn how to cross-compile the Linux kernel for different architectures—an essential skill for embedded systems, IoT devices, and platform development.
In addition, we will demonstrate how to build only specific portions of the Linux kernel, allowing you to focus on targeted components and reduce build time. Throughout the course, you’ll gain practical knowledge, follow real workflows used by kernel developers, and build confidence to contribute effectively to the Linux kernel community.