Основы Linux .Часть 12 (Загружаемые модули ядра)

Модуль ядра Linux — это скомпилированный двоичный код, который вставляется непосредственно в ядро Linux, работая в кольце 0, внутреннем и наименее защищённом кольце выполнения команд в процессоре x86–64. Здесь код исполняется совершенно без всяких проверок, но зато на невероятной скорости и с доступом к любым ресурсам системы.

Не для простых смертных

Можно в основном забыть традиционные парадигмы разработки приложений. Кроме загрузки и выгрузки модуля, вы будете писать код, который реагирует на системные события, а не работает по последовательному шаблону. При работе с ядром вы пишете API, а не сами приложения.

Не для простых смертных

У вас также нет доступа к стандартной библиотеке. Хотя ядро предоставляет некоторые функции вроде printk (которая служит заменой printf) и kmalloc (работает похоже на malloc), в основном вы остаётесь наедине с железом. Вдобавок, после выгрузки модуля следует полностью почистить за собой. Здесь нет сборки мусора.

Не для простых смертных

Определитесь с дистрибутивом Linux

Начну с того, что скорее всего вам нужно скачать дистрибутив Linux. Потому что под общим словом Linux можно понимать, как ядро Linux, так и любой дистрибутив Linux. Позволю себе далее в статье иногда использовать оба этих слова как равнозначные. Вопрос выбора дистрибутива выходит за рамки данной заметки. Ознакомиться с дистрибутивами Linux можно в каталоге дистрибутивов Linux .

Предположим, что вы выбрали себе дистрибутив и хотите его скачать. Каждый дистрибутив Linux обычно можно скачать бесплатно в разных форматах. Обычно они представляют собой ISO файлы. ISO файл — это образ CD или DVD диска. Чаще всего CD или DVD версии отличаются только тем, что на DVD версиях больше различного программного обеспечения, которое вы можете установить прямо с диска либо в процессе установки Linux, либо после установки в любое время.

Читайте также:  Как восстановить Linux ubuntu 16.04 LTS до заводских конфигураций?

Как попробовать понравившуюся сборку Linux

1. Скачиваем и устанавливаем бесплатную утилиту Etcher. Она кроссплатформенная, можно установить на Windows, Linux и macOS.

2. Загружаем подходящий образ Linux, например, Ubuntu.

3. Запускаем приложение Etcher и подключаем к компьютеру флешку объемом 4 Гб или более.

Как попробовать понравившуюся сборку Linux

4. Выбираем флешку в качестве целевого диска и скачанный образ Linux в качестве источника.

Внимание! Все данные с флешки будут удалены при форматировании.

5. Ждем несколько минут, пока утилита не запишет образ на накопитель.

6. Подключаем флешку к компьютеру и перезагружаем его в режиме запуска с USB-диска. Это можно настроить в BIOS или зажать определенную клавишу при включении ПК.

7. После загрузки оболочки следует выбрать нужный язык и активировать ознакомительный режим Live-запуска Linux.

Как попробовать понравившуюся сборку Linux

Буквально через минуту-две увидите рабочий стол операционной системы с полным набором утилит и возможностей. Запускайте любые приложения, тестируйте систему, выходите в сеть и подбирайте подходящую сборку Linux.

Шаг Modprobe

Большинство новых дистрибутивов Linux, включая наш BackTrack 5v3, для управления загружаемыми модулями ядра получили команду modprobe. Чтобы узнать, какие модули уже установлены в нашем ядре, мы можем ввести:

modprobe -l

Шаг Modprobe

Чтобы удалить модуль, мы просто используем ключ -r с modprobe:

modprobe -r

Основным преимуществом modprobe является то, что она сама знает какие зависимости, параметры и процедуры установки и удаления нужны для наших модулей ядра.

Чтобы просмотреть файлы конфигурации для установленных модулей, выведем в консоль содержимое каталога /etc/modprobe.d/:

Шаг Modprobe

ls -l /etc/modprobe.d/

Помните, что загружаемые модули ядра — это не только удобство для пользователя или администратора Linux, но также и основная уязвимость в безопасности Linux, и каждый профессиональный хакер должен быть с этим хорошо знаком. Как мы уже говорили, модули ядра могут быть идеальным средством для внедрения руткита в ядро и нанесения атаки!

Читайте также:  Mandriva Linux. Полное руководство пользователя, страница 11

Различия

Есть несколько отличий, позволяющих понять, как узнать ядро Linux:

  • В первую очередь, стоит отметить возможность поддержки динамически загружаемых модулей. Несмотря на то, что ядро этой операционной системы является полностью монолитным, дополнительно поддерживается возможность динамической загрузки и выгрузки кода в случае такой необходимости. Данная возможность изначально появилась еще в версии , и поспособствовал этому Питер МакДональд.
  • Ядро способно поддерживать симметричную многопроцессорную обработку. В преимущественном большинстве коммерческих вариантов ОС Unix поддерживается данная функция, однако в традиционных реализациях такая поддержка чаще отсутствует.
  • Ядро ОС Linux является преемптивным, то есть оно может полностью вытеснить выполняющееся задание даже в том случае, если его работа осуществляется в режиме данного ядра. Среди большинства коммерческих реализаций преемптивное ядро ОС Unix имеет в составе только IRIX, Solaris и непосредственно сам Unix.
  • В Linux принято было использовать абсолютно другой подход к реализации потоков, вследствие чего они практически не отличаются от стандартных процессов. Рассматривая их с точки зрения ядра, можно сказать о том, что все процессы являются абсолютно одинаковыми, просто некоторые из них отличаются наличием общих ресурсов.
  • Ядро Linux, описание процесса разработки которого будет показано далее, не имеет определенных функций Unix, которые были признаны плохо реализованными. В частности, это относится к STREAMS и некоторым другим.

Как заказать диск с Linux

Если ни один из способов вам не подходит, то вы можете найти в своем городе энтузиастов, которые согласятся передать вам диск с Linux. Тем более различных Linux сообществ сейчас очень много.

В середине марта после почти двух месяцев разработки и семи release candidate Линус Торвальдс представил новую версию ядра 4.5. Кроме исправлений, в релизе действительно много нового. Изменения затронули все подсистемы — дисковую, работу с памятью, системные и сетевые сервисы, безопасность, и, конечно же, добавлены драйверы для новых устройств. Попробуем разобраться с некоторыми наиболее интересными.

Читайте также:  Как настроить iptables для защиты компьютера с Linux от взлома