Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Introduction to Linux Kernel Development
Bestseller
Rating: 4.5 out of 5(7 ratings)
45 students

Introduction to Linux Kernel Development

Demystifying the Linux Kernel: A Developer’s Roadmap to Linux Kernel Internals, Architecture and Development
Last updated 9/2024
English

What you'll learn

  • Learn how Linux kernel works with a high-level understanding of various kernel subsystems
  • Setup your own development environment for exploring Linux kernel development on a VirtualBox VM
  • Learn about important concepts related to modern operating systems
  • Learn how to custom compile and boot a binary image from official Linux kernel sources
  • Learn how to create a Linux bootable image with custom built Linux kernel and busybox as userspace
  • Learn how to create custom initramfs image with busybox as user-land
  • Learn how to navigate the kernel sources, learn new features and APIs
  • Learn how to create Linux kernel modules and understand development process of loadable kernel modules
  • Learn how to interface procfs and debugfs via Loadable Kernel Modules
  • Learn the tips, techniques and best practices to become a proficient Linux kernel developer
  • Learn how to create patches that can be submitted to the official Linux kernel community

Course content

8 sections32 lectures27h 30m total length
  • Course Overview6:31

    An overview of topics that will be covered in this course.

  • An overview on the Linux ecosystem and OS stack24:26

    In this lecture, you will learn about the Linux ecosystem and gain a high-level understanding of the Linux operating system stack. You will also learn about the relation of Linux and other UNIX-based operating systems.

  • Brief History of Linux55:56

    In this lecture, we will explore the history of Linux - starting from the early history of UNIX operating system and how Linux originated to how it evolved to the most widely deployed project today. You will also learn about the role of Linux distributions

    You can safely skip this lecture - if you are not interested in the history.

  • Key Features of the Linux Kernel16:36

    In this lecture, I will briefly summarize the key features of the Linux kernel in terms of the design and its development process.

  • The Linux Kernel Development Process57:03

    In this lecture, I will teach you about the overall development process of the Linux kernel. You will learn about the official Linux kernel development source trees and their development life-cycle.

Requirements

  • Programming skills using the C programming language
  • Knowledge on Linux command-line interface - using the bash shell, basic shell scripting and basic linux commands for managing files and processes
  • Basic understanding of the computer hardware architecture
  • A laptop / desktop based on x86 architecture (Intel / AMD) with enough memory (atleast 16 GB) and storage (atleast 128 GB) with support for running VirtualBox VMs
  • A working OS setup - either Windows 10+, MacOS (x86) or any desktop Linux distribution with latest version of VirtualBox installed.

Description

This course provides a comprehensive introduction to Linux kernel design and architecture, aimed at equipping you with both theoretical knowledge and practical skills. I will begin by covering essential operating system concepts and terminologies, ensuring that you have a strong foundation. From there, you'll dive into the intricate workings of the Linux kernel, learning how to build it from source code and create a fully functional, custom bootable Linux system. This includes setting up a BusyBox user-space environment to complete the operating system, giving you a hands-on understanding of the system's internals.

In addition to kernel building, this course will teach you how to develop your own Linux kernel modules, with a deep dive into loadable kernel modules (LKMs). You'll explore how to extend the kernel's functionality dynamically, enabling you to create, load, and debug modules efficiently. The course also delves into key features like kthreads, interfacing with the procfs (/proc) filesystem, allowing you to expose any module / kernel related statisitics to user-space, and also interfacing with debugfs (/sys/kernel/debug), allowing you to expose variables from within kernel-space to user-space for diagnostics and debugging.

Furthermore, you'll gain experience in contributing to the Linux kernel by learning how to create patches and apply them following the official Linux kernel development workflow. Upon completing this course, you will be proficient in exploring, managing, and modifying the Linux kernel source code, ready to embark on a path toward becoming a skilled Linux kernel developer.

Who this course is for:

  • Beginner level Linux enthusiasts interested on exploring into Linux kernel internals and development
  • Systems Engineers working on other operating systems and interested to explore on Linux kernel features
  • Linux kernel developers / Device driver developers interested in refreshing their knowledge on fundamental concepts of Linux kernel