#linux #module #kernel #kernel-module
#linux #модуль #ядро #kernel-module
Вопрос:
Мне нужно переименовать модуль ядра (имя, которое отображается с помощью lsmod) уже существующего драйвера без изменения имени исходного файла.
например
# insmod xxx.ko
<<module loads successfully>>
# lsmod
Module Size Used by Tainted: P
xxx 191527 0
#
-
Я хочу переименовать xxx в yyy.
-
Теперь я знаю, что изменение имени исходного файла драйвера (когда речь идет об одном файле) изменяет имя модуля.
-
Но я не хочу менять имя исходного файла.
Ответ №1:
Переименуйте свой obj-m
в Makefile и установите зависимость от obj-m
исходного модуля.
Например, у меня есть файл hello.c
, содержащий весь мой исходный код. Но я хочу, чтобы модуль был mynewname
.
Вот весь Makefile, который делает это:
obj-m := mynewname.o
mynewname-objs := hello.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(PWD) clean
Я установил obj-m
значение mynewname.o
и делаю mynewname.o
зависимым от hello.o
. После вызова make вы получите mynewname.ko
.
Комментарии:
1. Можно ли задать имя модуля в самом коде модуля (hello.c)?
2. Я не пробовал, но вы можете попробовать использовать
MODULE_ALIAS
макрос, чтобы позволить modprobe загружать ваш модуль с другим именем.