Ядро

Свой модуль ядра: hello world

Минимальный модуль показывает цикл загрузки, выгрузки и вывода в журнал ядра.

Команды и конфиги

// hello.c
#include <linux/module.h>
#include <linux/init.h>
static int __init hello_init(void){ pr_info("hello\n"); return 0; }
static void __exit hello_exit(void){ pr_info("bye\n"); }
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");

# Makefile
obj-m += hello.o
all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

sudo insmod hello.ko && dmesg | tail

На что обратить внимание

Тестируйте модули в виртуальной машине, чтобы ошибка не уронила рабочую систему.

Читайте также

Ядро

Сборка ядра Linux из исходников

Возьмите конфигурацию работающего ядра и пересоберите её под свои изменения.

Ядро

DKMS: модули, которые переживают обновление ядра

DKMS автоматически пересобирает внешние модули при установке нового ядра.

Ядро

bpftrace: трассировка ядра в одну строку

eBPF позволяет смотреть системные вызовы и функции ядра без перезагрузки и пересборки.