Bochs: bochs.sourceforge.net. Bochs is an x86 emulator you can use for developing kernel modules.
“Linux Kernel 2.4 Internals”: www.linuxdoc.org/guides.html. Tigran Aivazian wrote this excellent guide and uses it to teach VERITAS engineers about Linux. Useful and timely.
“Linux Kernel Module Programming Guide”: www.linuxdoc.org/guides.html. Ori Pomerantz wrote this useful HOWTO guide that covers writing device drivers and more.
“(Nearly) Complete Linux Loadable Kernel Modules”: packetstorm.securify.com/groups/thc/LKM_HACKING.html. Written by “pragmatic” from cracker group THC, this article is an excellent introduction to coding kernel modules for nefarious or unconventional purposes. The code is all for kernel 2.0, but most of it translates quite well to more modern kernels.
plex86: www.plex86.org. plex86 is an x86 virtualizer that makes it a faster option than Bochs for running Linux.
Understanding the Linux Kernel: (O'Reilly) This fine book by Daniel Bovet and Marco Cesati is an excellent reference to have on hand as you read kernel headers and source. It describes nearly every data structure, function and design decision in the Linux kernel.
User-Mode Linux: user-mode-linux.sourceforge.net. UML allows you to boot a Linux kernel as a user process, thus enabling you to test new kernels or modules.
VMware: www.vmware.com. VMware produces a good commercial x86 virtualizer that will run Linux.
xfs: linux-xfs.sgi.com. A great journaling filesystem from SGI that I use on my notebook (where I do most of my kernel hacking and inadvertent power-cycling), and I've never lost a byte due to asystem crash.