Penguin

Modules / Problems with modules

Problems with ip_tables compiled as a module

Lots of unresolved symbols such as

nf_register_hook, nf_unregister_hook, nf_register_sockopt, nf_unregister_sockopt and nf_hook_slow in the ip_* modules, or
  1. depmod -e ip_tables.o

depmod: *** Unresolved symbols in ip_tables.o depmod: nf_unregister_sockopt depmod: nf_register_sockopt

even though these symbols are in the kernel
  1. grep 'nf_.*register' /proc/ksyms

c01a55b0 nf_register_hook_Rver_nf_register_hook c01a561c nf_unregister_hook_Rver_nf_unregister_hook c01a5658 nf_register_sockopt_Rver_nf_register_sockopt c01a5730 nf_unregister_sockopt_Rver_nf_unregister_sockopt ...

and even after doing a make mrproper to clean the kernel sources, you still have versioning problems. The problem is that when you booted your new kernel, you forgot to update the System.map that the kernel is using to resolve symbol names. For some reason the netfilter/ip_tables stuff seems to be much more sensitive to this than many other modules. (Incidentally this is why some people reported this being fixed by running lilo). Make sure your kernel is using a correct System.map and reboot.

Can't locate module char-major-...

Normally this means that you don't have a required module compiled, or you are missing an alias to tell the kernel which real module to load for a device type.

If you get syslog or console messages like
modprobe: modprobe: Can't locate module char-major-4 last message repeated 3 times init: Id "1" respawning too fast: disabled for 5 minutes

Then this seems to be caused by the System.map problem described in the previous section. (At least, re-compiling and installing fixed it).

Some useful aliases for your /etc/modules.conf file
alias char-major-10-135 rtc # real-time clock alias char-major-10-144 nvram alias char-major-10-175 agpgart alias char-major-10-200 tun alias char-major-81 videodev # for tv tuner card alias char-major-81-0 bttv # for tv tuner card alias char-major-108 ppp_generic alias char-major-116 <your sound card module> alias sound-slot-0 <sound card module> alias char-major-195 nvidia # binary graphics card driver

Debian users should add these to a file in /etc/modutils/ and run update-modules(8) to create/update the /etc/modules.conf file. other messages you might see:

"Can't locate module net-pf-10"
This is the network protocol family for IPv6. This means that some process tried to do something with an ipv6 address, and the kernel tried to see if ipv6 support was around. If you don't have an ipv6-enabled kernel you can add another alias to /etc/modules.conf:

alias net-pf-10 off

You can find out what type of device the kernel is looking for in the file /usr/src/linux/Documentation/devices.txt, assuming you have the kernel sources installed.

See also the modules.conf(5) man page.


CategoryKernel CategoryErrors