![](https://habrastorage.org/webt/tc/9n/oz/tc9noz0wqptrl4sikhpnjwd1xb8.png)
Изначально материал вышел в виде нескольких частей — в нашем блоге, и если у вас есть желание поучаствовать в комментариях к статьям — ниже представлен спойлер с ними:
Однако дальше нам стали поступать просьбы читателей, что очень нужна электронная версия, в виде единого справочника — недолго думая, мы быстро подготовили два формата, которыми сейчас с удовольствием с вами поделимся:Все части руководстваПрограммирование модулей ядра Linux. Ч.1
В первой части мы разберём, что такое модули ядра, рассмотрим необходимые подготовительные этапы для их создания и в завершении по традиции напишем первый простейший модуль «Hello world», попутно разобрав вопросы лицензирования, передачу аргументов командной строки и прочие нюансы.
Программирование модулей ядра Linux. Ч.2
В первой половине текущей части мы подробнее разберём структуру и принцип действия модулей, узнаем, чем отличается пространство пользователя от пространства ядра, а также немного поговорим об использовании памяти. Вторая же половина будет посвящена одному из типов модулей — драйверам устройств, основы работы с которыми мы также подробно рассмотрим.
Программирование модулей ядра Linux. Ч.3
Продолжаем серию статей по созданию модулей ядра. В текущей части мы разберём работу с файловой системой/proc
, взаимодействие с модулями при помощиsysfs
, а также работу с файлами устройств.
Программирование модулей ядра Linux. Ч.4
Тема этой части — системные вызовы. В ней вы познакомитесь с этим понятием на примере создания собственной функции для открытия файлов, которая будет подменять собой исходную sys_open, а также следить за конкретным пользователем, информируя нас об открываемых им файлах.
Программирование модулей ядра Linux. Ч.5
В ней мы разберёмся, как в ядре реализована совместная работа процессов и потоков, узнаем, какую роль в этом играет режим ожидания (sleep), рассмотрим возможные способы избежания коллизий и взаимных блокировок, а также познакомимся с назначением и использованием атомарных операций.
Программирование модулей ядра Linux. Ч.6
Познакомимся с понятием tty, представляющим альтернативу макросу print, напишем модуль для мигания светодиодами клавиатуры, а также разберём тему планирования задач с помощью тасклетов и очередей заданий.
Программирование модулей ядра Linux. Ч.7
Заключительная часть. Здесь мы рассмотрим обработку прерываний, криптографию, стандартизацию интерфейсов с помощью модели устройства, а также разберём принцип работы драйвера виртуального устройства ввода и возможность внесения в модуль некоторой оптимизации. В завершение же укажем на пару неявных, но важных нюансов, а также дадим рекомендации по дальнейшему погружению в тему программирования ядра.
- The Linux Kernel Module Programming Guide — PDF (Открывается сразу в браузере)
- The Linux Kernel Module Programming Guide — более нарядный FB2
Надеемся, что эта книга будет для вас полезна!
Telegram-канал и уютный чат
![](https://habrastorage.org/webt/sz/7j/pf/sz7jpfj8i1pa6ocj-eia09dev4q.png)