如何重命名内核模块名称,而不重命名传递给insmod的.ko。

我需要重命名已有驱动程序的内核模块(使用lsmod显示的名称),而不更改源文件的名称。

例如

# insmod xxx.ko <<module loads successfully>> # lsmod Module Size Used by Tainted: P xxx 191527 0 # 
  • 我想把xxx重命名为yyy

  • 现在我知道更改驱动程序源文件的名称(当涉及单个文件时)会更改模块的名称。

  • 但我不想更改源文件的名称。

Solutions Collecting From Web of "如何重命名内核模块名称,而不重命名传递给insmod的.ko。"

在Makefile中重命名obj-m ,并将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 。 调用后,你会得到mynewname.ko