I ended up learning how to build my own kernel with Google, basically. I've learned about timers (HPET), chipset, sata controllers, the sata/pata drivers in linux, sound architecture (alsa/oss/pulseaudio), debugging file systems and messages, about the serial terminal (stty0), about kexec, DRM + KMS...

Just read the HELP pages (I use make menuconfig for configuration, but xconfig and gconfig should give you the help pages too) and when in doubt set the default option.