Задание

Создать модуль ядра - драйвер символьного устройства по своему варианту.

Ход работы

Сборка примеров тестировалась на Debian 11 (ядро 5.10.0-21-amd64) и Archlinux (ядро 6.2.11-arch1-1).

  1. Установите необходимые пакеты

Debian

sudo apt install build-essential kmod linux-headers-`uname -r`

Arch

sudo pacman -Sy base-devel kmod linux-headers
  1. Скачайте и распакуйте архив с примерами.

  2. Зайдите в директорию hello и соберите модуль командой:

make
  1. Для работы с модулями вам понадобятся следующие команды:
lsmod
lsmod | grep <название>
sudo modinfo <название>.ko
sudo insmod <название>.ko
sudo rmmod <название>
sudo journalctl --since "5 minutes ago" | grep kernel
  1. Удостоверьтесь что модуль коректно загружается и выгружается.

  2. Переходите к модулю chardev.

    • удостоверьтесь что модуль корректно работает
    • разберите код
  3. Приступайте к реализации собственного модуля.

Материалы:

Варианты заданий

Cимвольное устройство для:

  1. защиты конфиденциальных данных (шифрование по записи, дешифрование по чтению).
  2. межпроцессного взаимодействия - сохранять и извлекать данные по pid.
  3. генерации звуковых сигналов в соответствии с переданными на него данными.
  4. сортировки данных, отправленных на него (числовые и строковые данные).
  5. генерирования паролей с заданными параметрами.
  6. вычисления прошедшего временного промежутка - время заcекается по записи, по чтению - выводится прошедшее.
  7. мониторинга состояния системы - температура ЦП, объем используемой памяти, диска и т.п.
  8. хранения и выполнения очереди команд по запросу.
  9. генерирования псевдослучайных чисел - целые в заданном диапазоне, вещественные в заданном диапазоне.
  10. генерирования данных о содержимом заданной директории, включая поддиректории.
  11. преобразования данных в двоичное или шестнадчатиричное представление.
  12. конвертации указанного локального времени в заданный часовой пояс.