我配置了 debian 内核 5.10.57 以添加 HSR/PRP 模块。我将其启用为内置<*>
.然后我分别使用make deb-pkg
和编译并安装了内核dpkg -i *.deb
。
新内核正在运行。
debian@debian:~$ uname -r
5.10.57
HSR/PRP 模块路径位于builtin.modules 文件中:
debian@debian:~$ cat /lib/modules/5.10.57/modules.builtin |grep hsr
kernel/net/hsr/hsr.ko
但 hsr 目录(和 .ko 文件)不存在。
debian@debian:~$ ls /lib/modules/5.10.57/kernel/net/ |grep hsr
debian@debian:~$
所以模块没有加载。
debian@debian:~$ lsmod |grep hsr
debian@debian:~$
在/usr/src/linux-5.10.57/
包含我编译的内核的文件夹中,hsr配置文件都在这里。
debian@debian:~$ ls /usr/src/linux-5.10.57/net/hsr/
hsr_debugfs.c hsr_forward.c hsr_framereg.h hsr_netlink.c hsr_slave.h
hsr_device.c hsr_forward.h hsr_main.c hsr_netlink.h Kconfig
hsr_device.h hsr_framereg.c hsr_main.h hsr_slave.c Makefile
debian@debian:~$
我尝试了一些命令来构建.ko
文件,但没有任何效果。
debian@debian:/usr/src/linux-5.10.57/net/hsr$ make
make: *** No targets. Stop.
debian@debian:/usr/src/linux-5.10.57/net/hsr$
debian@debian:/usr/src/linux-5.10.57/net/hsr$ make install
make: *** No rule to make target 'install'. Stop.
debian@debian:/usr/src/linux-5.10.57/net/hsr$
debian@debian:/usr/src/linux-5.10.57/net/hsr$ make modules
make: *** No rule to make target 'modules'. Stop.
debian@debian:/usr/src/linux-5.10.57/net/hsr$
debian@debian:/usr/src/linux-5.10.57/net/hsr$ make modules_install
make: *** No rule to make target 'modules_install'. Stop.
如果你想知道 Makefile 中有什么:
debian@debian:/usr/src/linux-5.10.57/net/hsr$ cat Makefile
# SPDX-License-Identifier: GPL-2.0-only
#
# Makefile for HSR
#
obj-$(CONFIG_HSR) += hsr.o
hsr-y := hsr_main.o hsr_framereg.o hsr_device.o \
hsr_netlink.o hsr_slave.o hsr_forward.o
hsr-$(CONFIG_DEBUG_FS) += hsr_debugfs.o
debian@debian:/usr/src/linux-5.10.57/net/hsr$
这是我的问题:
/lib/modules/5.10.57/modules.builtin
内置模块是否需要 .ko 文件位于要加载的文件所需的路径中?如果是,我如何生成或找到
hsr.ko
我需要的文件?
答案1
由于您将驱动程序配置为内置驱动程序,而不是模块(<M>
在内核配置中),因此它是内核二进制文件(bzImage
等)的一部分。每当启动特定的内核二进制文件时,它总是会被“加载”。
您不会将其视为单独的.ko
文件,也无法强制.ko
构建该文件。