- •«Московский технический университет связи и информатики»
- •1. Задание 1. Ядро Linux 3
- •Задание 1. Ядро Linux
- •2. Задание 1.1. Анализ системных вызовов при выполнении команд с помощью утилиты strace
- •Задание 1.2. Сборка и загрузка модуля в ядро Linux
- •Задание 2. Функции получения системной информации
- •Задание 2.1. Получение системной информации.
Задание 1.2. Сборка и загрузка модуля в ядро Linux
Установите необходимые пакеты: apt-get install gcc make linux-headers-$(uname -r).
Создайте файл модуля: mkdir kmod-hello_world; cd kmod-hello_world/;
touch. /mhello.c c содержимым.
Создайте Makefile: touch. /Makefile c содержимым.
Соберите модуль и установите его с помощью insmod.
Выгрузите модуль с помощью команды rmmod.
Результаты выполнения выше перечисленных действий представлены на рисунках 8-22.
Первым делом установим пакет make gcc, используя команду sudo pacman –S make gcc. Утилита make, которая автоматизирует процесс сборки проекта, позволяя выполнить компиляцию и создание исполняемых файлов без выполнения всех команд вручную. GCC – компилятор. На рисунках 12 и 13 представлены команды для установки необходимых пакетов при сборке и загрузке модуля в ядро Linux
Рисунок 8 – Команда для установки утилиты make и компилятора gcc
Установим linux-headers-$(uname -r). Это пакет заголовочных файлов, предназначенных для разработки ядра Linux. Используя команду uname –r узнаем, версию нашего дистрибутива. После уставим пакет с помощью команды sudo pacman –S linux-headers=6.1.53.
Рисунок 9 – Команда для установки заголовочных файлов
Создадим файл модуля. Используем команду mkdir kmod-hello_world для создания директории, где будет создавать файл модуля. Через команду cd перейдем в эту категорию. На рисунке 14 представлены команды для создания и перехода в каталог модуля.
Рисунок 10 – Команды для создания и перехода в каталог модуля
Команда touch используется для создания файла mhello.c. Команда позволяет работать с текстовым редактором в Unix-подобных системах. На рисунке 15 представлены команды для создания файла mhello.c и его открытия в текстовом редакторе
Рисунок 11 – Команды для создания файла mhello.c и его открытия
На рисунке 12 представлено содержимое файла mhello.c
Рисунок 12 – Содержимое файла mhello.c
На рисунке 13 представлены команды для создания файла Makefile и его открытия в текстовом редакторе.
Рисунок 13 – Команды для создания файла Makefile и его открытия
На рисунке 14 представлено содержимое файла Makefile
Рисунок 14 - Содержимое файла Makefile
На рисунке 15 представлена сборка модуля ядра с помощью команды make
Рисунок 15 – Сборка модуля ядра
На рисунке 16 представлена команда для просмотра сборки модуля ядра, на рисунке 17 представлен результат её выполнения. Команда запускает слежение за выводом последних 10 строк команды "dmesg" с обновлением каждые 3 секунды.
Рисунок 16 – Команда для просмотра сборки модуля ядра
Рисунок 17 – Просмотр сборки модуля ядра
На рисунке 18 представлена команда для установки модуля ядра
Рисунок 18 – Команда для установки модуля ядра
На рисунке 19 представлена команда для просмотра установки модуля ядра, на рисунке 20 представлен результат её выполнения
Рисунок 19 – Команда для просмотра установки модуля ядра
Рисунок 20 – Просмотр установки модуля ядра
На рисунке 21 представлена команда для выгрузки модуля с помощью команды rmmod
Рисунок 21 – Команда для выгрузки модуля ядра
На рисунке 22 представлена команда для просмотра выгрузки модуля ядра и результат её выполнения
Рисунок 22 – Команда для просмотра выгрузки модуля ядра и результат её выполнения