-
Необходимо перейти в директорию с нужным заданием и выполнить команду для сборки проекта
make
; -
Файл модуля ядра
xxx.ko
появится в той же директории; -
Для удаления всех файлов сборки необходимо выполнить команду
make clean
.
Задание: написать модуль ядра, который предоставляет механизм общения kernel space и user space посредством символьного файла устройства, а также виртуальных файловых систем sys и proc
Код представлен в директории Task. После сборки модуля установим его в ядро:
sudo insmod task1.ko
Выведем последние 10 сообщений ядра и увидим сообщения об успешной загрузке модуля:
sudo dmesg | tail -n10
Создадим файл устройства в /dev
, выполнив команду:
sudo mknod task1 c 511 0
Повысим права доступа к файлу:
sudo chmod +0666 task1
Выведем его содержимое:
sudo cat task1
Изменим содержимое:
sudo echo "123456789" > task1
Снова выведем содержимое:
sudo cat task1
Перейдем в /proc
и проведем аналогичное тестирование чтения и записи:
Теперь перейдем в sys/kernel/kobject_test
и проведем те же операции:
Note
В данном примере все три виртуальные файловые системы работают с одной и той же переменной. Именно поэтому результат записи в одной системе отображается при выводе в другой.
После проведения тестирования удалим файл устройства и выгрузим модуль из ядра:
sudo rm /dev/task1
sudo rmmod task1