如何在不重命名传递给insmod的.ko文件的情况下重命名内核模块名称?

6
我需要重命名一个内核模块(在使用lsmod命令时显示的名称),而不更改源文件的名称。例如:
# insmod xxx.ko
<<module loads successfully>>
# lsmod
Module                  Size  Used by    Tainted: P
xxx                   191527  0
#

我想将xxx重命名为yyy
现在我知道,更改驱动程序源文件的名称(当涉及单个文件时)会更改模块的名称。
但我不想更改源文件的名称。
1个回答

8
在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


在模块代码本身(hello.c)中设置模块名称是否可能? - Zibri
我没有尝试过,但你可以尝试使用MODULE_ALIAS宏来允许modprobe使用不同的名称加载你的模块。 - Alexander Dzyoba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接