Saturday Phone Service Interruption
There will be a brief pause in our phone service beginning at noon on Saturday, May 15 through May 16. For course emergencies, you may reach us at firstname.lastname@example.org.
Linux Kernel & Drivers | LINX.X411
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.
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.
Course Availability Notification
Please use this form to be notified when this course is open for enrollment.