Category: Linux programming, shell, C, kernel, embedded
An advanced training for programmers who wish to begin Linux kernel development (especially writing device drivers). During the course participants create drivers for real and emulated hardware and learn both theory and best practices of working with Linux kernel code. We also discuss the communication mechanisms between the driver and the applications and their limitations.
After the training: the participants will be able to start writing device drivers for Linux kernel on their own.
- Introduction to the Linux kernel
- The source code
- managing the source code
- how is the source code organized
- kernel development environment
- Kernel configuration and compilation
- booting the kernel
- the boot process: the whole system and the kernel itself
- kernel-side boot optimization
- Interfaces provided by the kernel
- /proc, /sys, sysctl,
- user-space view of the drivers
- Kernel modules
- managing modules-tools for modules service
- creating kernel modules (Makefile and Kconfig files)
- Hardware managing
- creating Linux device drivers
- the model of managing devices in Linux system
- hotplug mechanisms on kernel and application side
- character devices
- block devices
- syscalls (open, read, write, ioctl etc.)
- memory allocation
- interrupt handling
- concurrency, locking, preemption
- Kernel debugging techniques
- Documentation and cooperation
- using documentation and information available on the Internet,
- working with the kernel developers’ community
- introduction to working with Git revision control system.
On demand, we can prepare a customized training, including specific interface or interfaces suggested by the Client. In such cases we often suggest prolonging the training (typically making it last 3 days).
Audience and prerequisites
Participants should be fairly fluent in C programming and they should be familiar with using the Linux terminal.
Course participants receive completion certificates signed by ALX.