Я - программист ядра ядра Linux и думал, что смогу найти ответ для этого (так как это кажется очень простым), но еще не успел , Мне нужно сделать модуль ядра linux, который печатает номер версии ядра. Назначение требует, чтобы реализовал модуль, который отображает этот вид сообщения при загрузке:Как напечатать номер версии ядра linux в модуле ядра
«Привет, мастер. В настоящее время вы используете Linux (версия)», где (версия) - это версия ядра нет.
Как это сделать? Я пытался использовать uname (http://man7.org/linux/man-pages/man2/uname.2.html), но когда я включаю sys/utsname.h, я получаю фатальную ошибку при компиляции с моим make-файлом
«Невозможно открыть файл include: sys/utsname.h»: такого файла или каталога нет ».
Вот мой модуль
#undef __KERNEL__
#define __KERNEL__
#undef __MODULE__
#define __MODULE__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <sys/utsname.h>
struct utsname unameData;
static int __init config_init(void)
{
uname(&unameData);
printk(KERN_INFO "Version number is %s\n", unameData.version);
return 0;
}
static void __exit config_exit(void)
{
printk(KERN_INFO "config_exit executed with success\n");
return;
}
module_init(config_init);
module_exit(config_exit);
MODULE_LICENSE("GPL");
Makefile
obj-m := config.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
идеальный! Спасибо. Я не знал о «linux/utsname.h» .... Я пытался использовать «sys/utsname.h», но когда я переключил его, он работал нормально. –