Linux Kernel Timer Module
Лабораторная работа по написанию модуля ядра Linux.
Этот проект демонстрирует использование API таймеров в ядре Linux (timer_list). Модуль создает периодический таймер, который выводит сообщение в системный журнал (dmesg) каждые N секунд. Работа модуля автоматически прекращается через 5 минут после загрузки.
Также реализована опциональная часть: возможность динамически изменять интервал таймера через интерфейс sysfs. Описание функционала
Основной таймер: По умолчанию срабатывает каждые 30 секунд.
Лимит работы: Модуль автоматически останавливает таймер через 5 минут после загрузки, чтобы не засорять лог.
Динамический интервал (Опционально): Интервал таймера можно изменять "на лету" через файл в виртуальной файловой системе sysfs.
Сборка и установка
Для сборки модуля необходимы заголовочные файлы ядра и компилятор GCC.
Установите необходимые пакеты:
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r)
Соберите модуль:Перейдите в каталог проекта и выполните:
make
Запуск и проверка
Загрузите модуль в ядро:
sudo insmod timer_module.ko
Проверьте логи ядра: Вы увидите сообщения о загрузке и срабатываниях таймера.
sudo dmesg | tail -n 20
Проверьте работу через sysfs (Опционально):Интервал таймера (в секундах) хранится в файле /sys/kernel/timer_module/interval. Посмотреть текущий интервал:
cat /sys/kernel/timer_module/interval
Установить новый интервал (например, 10 секунд):
echo 10 | sudo tee /sys/kernel/timer_module/interval
Выгрузите модуль: После завершения работы выгрузите модуль:
sudo rmmod timer_module
Очистка
Для удаления скомпилированных файлов (.o, .ko, .mod.* и т.д.) выполните:
make clean
Файлы проекта
timer_module.c — Исходный код модуля ядра на языке C.
Makefile — Скрипт для автоматизации сборки, очистки и загрузки модуля.
Важные замечания
Код написан для современных версий ядра Linux (4.15+).
Для сборки используется make. Убедитесь, что у вас установлен пакет build-essential.
Для изменения интервала через sysfs убедитесь, что у вас есть права на запись в /sys/kernel/.
Таймер является программным (soft timer), поэтому при высокой нагрузке на систему возможна небольшая погрешность в интервалах.