Linux Internals
Course Number: L700
This 5-day course provides an introduction to the Linux Kernel and its internal mechanisms. Finding information about the Linux Kernel has always been a tedious task since it is a fast-moving target. This course is based on Kernel 2.4, and learning resources were quite limited at the moment this course was written. Nonetheless, Appendix A provides most documents that were used for the development of the Linux Internals course. Needless to say, most recent resources are available on the web.
Kernel development has historically been separated in various "subsets". For instance, developers working on the Ext2 filesystem may or may not know anything about network device drivers or symmetric multiprocessing. Linus Torvalds himself, even though he is the coordinator of the Linux Kernel, delegates the maintenance of large amount of code to other people due to complexity involved in understanding every single element of the Linux Kernel.
This course, even if it covers most aspects of the Kernel, does not aim at explaining everything. The Linux Kernel currently contains more than 1.5 million lines of code, so trying to entirely describe the code would definitely be a bad approach for a 5-day course. Rather, Linux Internals adopts an intermediate method that includes explaining code, but which also includes more qualitative descriptions of the Linux Kernel.
This course aims at being accessible to programmers who have never studied operating systems before. Moreover, even though a basic understanding of the C programming language is assumed, no extensive knowledge of the C language details should be necessary in order to complete and understand this course.
The Linux Internals course is designed as a 5-day training. This timing should be appropriate for classes composed of intermediate C programmers who have a basic understanding of the Linux operating system. Some labs contain elements that may be optional due to their complexity, depending on the students' experience prior to this course. What follows is the suggested schedule of the course:
Chapter 1. Introduction to Linux Internals
Chapter 2. Kernel Overview
Chapter 3. Memory Management
Lab 1: Kernel configuration and compilation
Chapter 4. Inter-Process Communication
Chapter 5. File System
Lab 2: Filesystems
Chapter 6. System Calls
Chapter 7. Kernel-Related Commands
Chapter 8. Device Drivers
Lab 3: System calls
Chapter 9. Module Management
Chapter 10. Networking
Lab 4: Device Drivers
Chapter 11. SCSI Subsystem
Chapter 12. Boot Process
Lab 5: Modules
Note that this timeline may be subject to modifications, depending on the background of your students. Don't hesitate to give more details on specific aspects of the course that students are more interested in.
|