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
- depmod -e ip_tables.o
depmod: *** Unresolved symbols in ip_tables.o
- even though these symbols are in the kernel
- grep 'nf_.*register' /proc/ksyms
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.