Skip to main content
Happy Holidays!

Our offices are closed Dec. 21 – Jan. 1 for winter break. We look forward to seeing you in the New Year!

Multiple code editors on computer screen showing code

Linux Kernel & Drivers | EMBD.X421


The growing popularity of Linux—the preferred operating system for servers, embedded systems, and mobile devices—is driving a huge demand for programmers who can modify the open-source kernel for optimal performance. In this course you will gain in-depth knowledge of the latest 5.x kernel so you can understand the architecture and write kernel code to achieve a desired output.

The course introduces kernel-level programming in Linux and writing kernel modules, covering core kernel with a hands-on coding approach. We will start with the kernel source code organization, learn how it functions and address various data structures and algorithms used in the Linux kernel. Students will explore making static and dynamic changes to the kernel as well as the underlying portability considerations.

We will explore the design and implementation of device drivers in Linux, such as the interfaces to the Linux kernel for writing device drivers, resource allocation paradigms and error-handling best practices. Other topics include understanding concurrency from a driver perspective, for example, the impact of CPU hyper-threading and task preemption.

The instructor will share code samples and real-world experiences of device and kernel porting to augment your learning. In your assignments you will get to analyze, develop, and debug different modules and kernel drivers. Any distribution is fine so long as the Linux kernel version is recent.


Learning Outcomes
At the conclusion of the course, you should be able to

  • Build a Linux kernel
  • Describe the implementation of system calls
  • Develop and build modules
  • Create and debug kernel and modules
  • Model Char, Block and Networking drivers
  • Design a fully-functional Char driver
  • Develop simple block and networking drivers


Skills Needed:

Proficiency of C programming language and knowledge of Linux Systems Programming or equivalent experience is recommended. You will need access to a Linux environment with root privileges. Options include VMWare, VirtualBox, LiveCD, disk partition or dualboot.

Have a question about this course?
Speak to a student services representative.
Call (408) 861-3860
FAQ
ENROLL EARLY!
This course is related to the following programs:

Prerequisite(s):

Sections Open for Enrollment:

Open Sections and Schedule
Start / End Date Quarter Units Cost Instructor
04-15-2025 to 06-17-2025 3.0 $750

Raghav Vinjamuri

Enroll

Final Date To Enroll: 04-15-2025

Schedule

Date: Start Time: End Time: Meeting Type: Location:
Tue, 04-15-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 04-22-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 04-29-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 05-06-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 05-13-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 05-20-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 05-27-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 06-03-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 06-10-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE
Tue, 06-17-2025 6:30 p.m. 9:30 p.m. Flexible SANTA CLARA / REMOTE