CAVEAT: /boot/kernel.h & how not to clobber your kernel sources (Conectiva, Red Hat)
Recent Linux distributions place a file called kernel.h in the /boot directory. WARNING: this is NOT the same file as /usr/src/linux/include/linux/kernel.h! The file in /boot contains only a few #defines that say if the kernel supports SMP, bigmem and other kernel options. This file is generated at each boot and is needed for some compilations (I was trying to compile arping and ran into this problem).
If you make the mistake of symlinking it to /usr/src/linux/include/linux/kernel.h it will destroy the file contents.
In Conectiva 9, the init script that generates /boot/kernel.h is defective -- it only works if you're using an RPM kernel, not a compiled one. To fix this, copy the mkkerneldoth from a Red Hat 9 installation and use it instead (I altered the Conectiva script /etc/init.d/kernelheaders or something).