Training > Linux Kernel Development > Linux Kernel Modules (LFWS308)
BERJAYA BERJAYA INSTRUCTOR-LED COURSE

Linux Kernel Modules (LFWS308)

Develop the expertise required to work confidently inside the Linux kernel. Learn how to safely build, load, and manage kernel modules. This course builds the skills essential for engineers responsible for drivers, low-level services, and maintaining stable, high-performance Linux systems.

BERJAYA
Who Is It For

For system and software developers who want to move beyond user space and work directly with the Linux kernel, building loadable modules for drivers, low-level services, and other system-level software.
read less read more
BERJAYA
What You’ll Learn

Understand how Linux kernel modules work and when they’re the right solution in production systems. Examine kernel vs. user space, required module entry points, and gain hands-on experience building, signing, loading, debugging, and interacting with custom kernel modules.
read less read more
BERJAYA
What It Prepares You For

Prepare for advanced Linux system roles where kernel-level work is part of the job. Equip yourself to build and manage kernel modules safely, supporting drivers and low-level services in production environments where stability and uptime matter.
read less read more
Course Outline
Expand All
Collapse All
BERJAYA Introduction
- Objectives
- Who You Are
- The Linux Foundation
- Copyright and No Confidential Information
- The Linux Foundation Training
- Certification Programs and Digital Badging
- The Linux Foundation THRIVE-ONE Subscriptions
- Linux Distributions
- Platforms
- Preparing Your System
- Using and Downloading a Virtual Machine
- Things Change in Linux and Open Source Projects
- Documentation and Links
BERJAYA Kernel Modules Introduction
- What does an operating system do?
- Aside: Additional Rings of Protection
- Virtual Memory
- Conceptual View of Page Tables
- Process Context Switching
- Performance Cost of Virtual Memory
- Virtual Memory Layout
- Linux Memory Map: 32-bit
- Linux Memory Map: 64-bit
- Process-to-Process Context Switches
- User mode/space restrictions
- How Does User Mode Interact with Kernel Mode?
- Summary
- Labs
BERJAYA How to Work in OSS Projects **
- Overview on How to Contribute Properly
- Know Where the Code is Coming From: DCO and CLA
- Stay Close to Mainline for Security and Quality
- Study and Understand the Project DNA
- Figure Out What Itch You Want to Scratch
- Identify Maintainers and Their Work Flows and Methods
- Get Early Input and Work in the Open
- Contribute Incremental Bits, Not Large Code Dumps
- Leave Your Ego at the Door: Don't Be Thin-Skinned
- Be Patient, Develop Long Term Relationships, Be Helpful
BERJAYA Kernel Modules Overview
- What is a Kernel Module?
- What are Kernel Modules Used For?
- Alternatives to Kernel Modules
- Security Concerns
- Kernel Module Signing
- Kernel Module Signing
- Are Signed Kernel Modules Required?
- Tainted Kernel
- Summary
- Labs
BERJAYA Building Kernel Modules
- How a Kernel Module is Built
- Installing Kernel Header Files
- Verify the Installation
- Structure of a Kernel Module
- Sample Code
- Compiling a kernel module
- How to install a kernel module
- Confirmation of module operation
- Tainted kernels
- Kernel module parameters
- Sample Parameter Code
- Working with parameters
- Summary
- Labs
BERJAYA Interaction with User Space
- User-to-Kernel Interactions
- Challenges of Kernel-to-User Interaction
- Comparing Interfaces
- procfs
- sysfs
- Module Parameters
- ioctl
- struct file_operations
- Typical Kernel Module Interactions
- Summary
- Labs
BERJAYA Closing and Evaluation Survey
- Evaluation Survey

Prerequisites
Knowledge/Skills Prerequisites:
Students should be familiar with Linux and C programming.

Lab Environment Prerequisites:
Labs can be run using cloud virtual machines (e.g., AWS EC2) or on standalone machines. It is recommended that students use Ubuntu 24.04 for lab execution.