MUNI FI Kernel Development Learning Pipeline Course Fall 2024 Information

Course Description

Linux is the most widely used operating system in the world. The core software component of the Linux operating system is the kernel. A couple of its roles include managing hardware interactions, virtualizing system resources, and enforcing security constraints. In effect, Linux kernel powers almost all of the world’s top supercomputers, android phones, and an innumerable variety of other computers. This course will introduce students to Linux kernel development by focusing on device driver development. This will give students hands-on experience working with internal Linux kernel APIs and provide an overview of some of the core features and components of the kernel. Gaining an understanding of the inner workings of the operating system and how to make changes to it will give students an invaluable perspective on how their computers work behind the scenes that will reveal a new layer of understanding to apply to any future software engineering practice.

Lecture Time

Teachers

Lecture Room

Prerequisites

Course enrollment

Language of Instruction

Objectives

Syllabus

Teaching Methods

Assessment Methods

Course Schedule

ID Date Lesson Presenter
1. Sep 23, 2024 Introduction, Development environment setup Izabela, Carlos, Rado, Vratislav
2. Sep 30, 2024 Basic intro to Linux Kernel Vratislav
3. Oct 7, 2024 PC and the x86 Rado
4. Oct 14, 2024 Process management Rado
5. Oct 21, 2024 Synchronization primitives Carlos
6. Nov 4, 2024 Memory Management Carlos
7. Nov 11, 2024 Filesystems Carlos
8. Nov 18, 2024 Networking stack Jirka
9. Nov 25, 2024 Device drivers and Linux Device Model Michal
10. Dec 2, 2024 Kernel Debugging 1 Vratislav
11. Dec 9, 2024 Kernel Debugging 2 Vratislav
12. Dec 16, 2024 GPG signing party! Izabela, Carlos, Rado, Vratislav

Assignments

ID Description Max points Due date
1. Compile Smallest Custom Kernel 10 Oct 6, 2024
2. Custom Syscall 20 Oct 27, 2024
3. Implement operations within the toyfs filesystem 25 Nov 24, 2024
4. Implement locking on the toyfs filesystem 10 Dec 8, 2024
5. Change inode management to use slab cache 15 Dec 8, 2024
6. Rewrite the metadata read/write paths to use proper endianess 10 Dec 8, 2024
7. Use crash tool to analyze a panicking kernel 10 Dec 22, 2024

Special Thanks

We would like to show our appreciation to the following people who have contributed to the course or without their help the course would not be existing: