Do I need to know a lot about hardware to hack the kernel?
No, you do not need to study things in advance. Hardware knowledge will come in handy, but you can learn that at the same time you are studying the Linux kernel source code.
Most people working on the kernel do not know everything about hardware, either. This is because hardware is varied and has many different aspects, including:
- Cache coherency and reordering semantics
- I/O consistency
- I/O addressing
- Page table setup
- Memory and I/O permissions
- Privilege levels
Many of these details are similar, but slightly different, between different architectures.
Also, if you work on device drivers, you really do not need to know about many of the other hardware characteristics. Along the same lines, filesystem people do not need to know about the architecture specific low level I/O semantics.
If you want to learn about the kernel, just start with a small part of the system that interests you.
You can always learn about other things as you go. That's what #kernelnewbies is for, after all...