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.

.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 to be 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.

If it doesn't already exist, create /usr/src. ( mkdir /usr/src )
Change to that dir. ( cd /usr/src )
Untar your kernel image.
If you download the tar.gz package. ( tar xvzf /path-to-kernel-source.tar.gz )
If you downloaded the tar.bz2 package. ( tar xvjpf /path-to-kernel-source.tar.bz2 )
You should see the source expand without error of any kind. If there are any type of errors during the expansion phase, you should figure out what they are and eliminate them.
Once the expansion is complete, you will need to create a symbolic link to your new kernel source directory. ( ln -s /usr/src/linux-2.6.27.7 /usr/src/linux )


Next