Добавить в корзинуПозвонить
Найти в Дзене
SysAdmin_Tools

#Linux #Kernel

#Linux #Kernel Как создать свой модуль ядра? Погружаемся в код! 💻 🔍 Хочешь почувствовать себя разработчиком ?) Написание собственного модуля ядра — один из способов погрузиться в работу системы! Сегодня мы напишем простейший модуль, который просто говорит "Привет мир!" при загрузке. 😎 Что нужно для старта? Установленный Linux (например, Ubuntu). Пакеты для сборки ядра: sudo apt install build-essential linux-headers-$(uname -r). Немного магии на C! 🪄 Пример. Создай файл hello.c и добавь внутри него следующий код: <linux/module.h> #include <linux/kernel.h> int init_module(void) { printk(KERN_INFO "Привет мир от ядра Linux!\n"); return 0; } void cleanup_module(void) { printk(KERN_INFO "Пока мир!\n"); } MODULE_LICENSE("GPL"); MODULE_AUTHOR("Я)!"); MODULE_DESCRIPTION("Простой модуль ядра"); Как собрать и запустить? Создай файл с именем Makefile (рядом с hello.c) и добавь в него : += hello.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /l

#Linux #Kernel

Как создать свой модуль ядра? Погружаемся в код! 💻

🔍 Хочешь почувствовать себя разработчиком ?)

Написание собственного модуля ядра — один из способов погрузиться в работу системы! Сегодня мы напишем простейший модуль, который просто говорит "Привет мир!" при загрузке. 😎

Что нужно для старта?

Установленный Linux (например, Ubuntu).

Пакеты для сборки ядра: sudo apt install build-essential linux-headers-$(uname -r).

Немного магии на C! 🪄

Пример.

Создай файл hello.c и добавь внутри него следующий код:

<linux/module.h>

#include <linux/kernel.h>

int init_module(void) {

printk(KERN_INFO "Привет мир от ядра Linux!\n");

return 0;

}

void cleanup_module(void) {

printk(KERN_INFO "Пока мир!\n");

}

MODULE_LICENSE("GPL");

MODULE_AUTHOR("Я)!");

MODULE_DESCRIPTION("Простой модуль ядра");

Как собрать и запустить?

Создай файл с именем Makefile (рядом с hello.c) и добавь в него :

+= hello.o

all:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Собери модуль: make

Загрузи: sudo insmod hello.ko

Проверь вывод: dmesg | tail

Результат - в логе dmesg ты увидишь что то подобное:

Привет мир от ядра Linux!

🎉 Ты только что написал модуль ядра! В следующий раз мы разберем как модули взаимодействуют с устройствами! 🚀