The kernel I am focused on in this Wiki is 2.6.27.7.
In regard to network booting, any 2.6 kernel should technically work. Some where in the build chain of the 2.6 kernel there were some format changes.
If you go low enough in the 2.6 build chain, you may experience some problems. I will do my best to get more exact information on this issue as time goes on.



Obtain the kernel source code from http://www.kernel.org/pub/linux/kernel/v2.6/


The whole idea behind this kernel, is supposed to be small and mostly modular. Remember, you are along for a learning ride, so until further notice, these kernel configs will lack any real modular taste and be anything but small. As time goes on, I plan to tweak until I have the other end of the spectrum, a really small setup. Just STAY TUNED.

.config This is my current kernel config for 2.6.27.7 that boots.

There are some core changes that have to take place in order for a kernel to be able to boot over the network. They are simple.

This is one piece of software that has should be placed somewhere other than the /scratch directory. The reason for this is really simple, I want to remain as close to a standard as possible. Not only for personal sanity, but the sanity of packages that are built etc. It is extremely common for various build processes to look in /usr/src/linux ( the linux dir is usually a symbolic link to /usr/src/linux-x.x.x ) for kernel headers needed to build against. It just common sense to make things easier, follow the standard.