Ещё относительно недавно программированием модулей ядра для Linux мало кого занимало. Во многом это было обусловлено и тем, что отсутствовала достаточная информация по вопросу. Когда я начал заниматься этим занятием, по необходимости, в реальных проектах (а было это где-то году в 2005-м), то оказалось, что из публикаций на то время в мире существовало два обстоятельных источника:
Самая старая, небольшая (112 стр.), очень известная и популярная книга, изданная, в том числе, и в переводе на русский язык: Ори Померанц, «Ядро Linux. Программирование модулей», издана в 2000 г. изд. Кудиц-Образ (ISBN 5-93378-008-1). Этот текст многократно растиражирован в сети, его неоднократно пытались адаптировать к последующим версиям ядра другие авторы, но дело не пошло дальше ядер 2.4.
Очень обстоятельное, но местами изрядно путанное, изложение от группы авторов Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman: «Linux Device Drivers» (1-я редакция - 1998г., 2-я редакция - 2001г., 3-я редакция - 2005г., ISBN: 0-596-00590-3). Этот текст также правился от редакции к редакции, но также не пошёл в описаниях дальше ядра 2.6.10. В сети выложен достаточно хороший полный перевод книги на русский язык: в формате для чтения, или для сохранения в PDF. Доступен полный архив кодов примеров к книге (архив лежит на самом сайте издательства O'Reilly, издавшего книгу, но находят его с трудом: авторы в самой книге не указали ссылку на архив, ни даже вообще не упомнили о его наличии). Оригинал книги может быть скачан здесь.
На сегодня мне известно ещё в литературе 2-3 издания относительно драйверов и модулей ядра, и ещё 3-4 книги по самому ядру, замечательно полезные при работе над модулями (позже я планирую находить и добавить ссылки в сети на эти издания, но делать это именно редактируя эту страницу).
Sreekrishnan Venkateswaran, «Essential Linux Device Drivers», Prentice Hall, 2008, стр.714. Ядро (согласно аннотации автора) до 2.6.23/2.6.24 включительно. Создан отдельный авторский сайт книги (откуда и взят вид обложки), и где могут быть взяты полные примеры программного кода к книге.
2-х томник одного из непосредственных участников команды разработки ядра Linux: Jerry Cooperstein, «Linux Device Drivers», 2009. 1-й том «A guide with exercises», стр. 372 - как понятно и из подзаголовка, это описательная часть, разбитая по темам.
Том 2: «Lab Solutions», стр. 259 - это параллельная 1-му тому лабораторная часть, иллюстрирующие примеры кода. Полный архив кодов доступен для скачивания свободно доступен здесь, что примечательно, что примеры кода обновляются автором регулярно, и последний (на сегодня) архив (13-Apr-2012) откорректирован под версию ядра Linux 3.3.
Оригиналы большинства изданий вы сможете найти и свободно скачать по ссылке к подборке материалов по ядру Linux. Там же можно взять для изучения одно из лучших изданий по 2-й из названных категорий (собственно по архитектуре ядра, не по модулям):
Поэтому, когда мне предложили подготовить и прочитать учебный курс по этому предмету для сотрудников одной из крупнейших международной компании по разработке программного обеспечения Global Logic, это не могло не вызвать встречного энтузиазма и интереса. Такой курс был сделан, и "прокатан" на нескольких учебных группах. Позже материалы курса были значительно расширены (до 2-х - 3-х раз по объёму) и дополнены соответствующими примерами. Так возник проект книги...
Для тех, кого может заинтересовать техника программирования модулей ядра, показываю общедоступные ссылки где я выложил результаты этой работы (последние результаты, они ещё дополняются)...
Это сам текст (в формате OpenOffice), и архив примеров к нему.
В первоначальном (и представленном) варианте текста полностью отсутствует раздел относительно программирования драйверов блочных устройств. Я до сих пор уверен, что программирование именно блочных устройств является частной, редко востребованной работой, свойственной, главным образом, самим разработчикам новых моделей таких накопительных устройств (вот пусть они и разрабатывают!). Тем не менее, ко мне, вопреки ожиданиям, несколько раз обращались разработчики с проблемами именно по таким устройствам. В итоге, новый большой раздел относительно блочных устройств был написан, а примеры к нему созданы, отлажены и выверены. Пока это совершенно сырой отдельный текст, не вошедший в общий объём книги. Но и он может быть взят здесь на рассмотрение. В самое ближайшее время этот материал будет ещё дополнен, и включен в общий текст книги (и, соответственно, примеры). Как только это произойдёт, я добавлю сюда в блог ссылки на обновлённый вариант.
(эта страница находится в правке, так что не обессудьте!)