为什么即使配置选项是 m,模块也会加载到内核中

为什么即使配置选项是 m,模块也会加载到内核中

决定udp_tunnel模块是否编译进内核的配置选项是CONFIG_NET_UDP_TUNNEL,而Ubuntu的.config中的CONFIG_NET_UDP_TUNNEL是M,应该不会自动加载进内核,但下面的结果却显示udp_tunnel已经加载进内核了,这让我很疑惑。

$ modinfo udp_tunnel
filename:       /lib/modules/5.3.0-51-generic/kernel/net/ipv4/udp_tunnel.ko
license:        GPL
srcversion:     0A315BA6124B0664F4D23FB
depends:        
retpoline:      Y
intree:         Y
name:           udp_tunnel
vermagic:       5.3.0-51-generic SMP mod_unload 
signat:         PKCS#7
signer:         
sig_key:        
sig_hashalgo:   md4

$ echo $?
0

显示模块 udp_tunnel 已加载到内核中,并且

答案1

查找有关模块的信息并不意味着它已被加载。modinfo 也会查找/lib/modules/version它。

如果您想知道它是否已加载,请使用 lsmod。例如:

doug@s18:/boot$ lsmod | grep udp
xt_tcpudp              20480  9
x_tables               45056  9 xt_conntrack,iptable_filter,xt_tcpudp,xt_CHECKSUM,ip6_tables,ipt_REJECT,ip_tables,xt_MASQUERADE,iptable_mangle

现在,如果强制加载模块:

doug@s18:/boot$ sudo modprobe udp_tunnel
[sudo] password for doug:
doug@s18:/boot$ lsmod | grep udp
udp_tunnel             16384  0
xt_tcpudp              20480  9
x_tables               45056  9 xt_conntrack,iptable_filter,xt_tcpudp,xt_CHECKSUM,ip6_tables,ipt_REJECT,ip_tables,xt_MASQUERADE,iptable_mangle

相关内容