If anyone knows where we should start, please post a response.
This is basically the question I asked in my thread "IA-1/Midori development - what are you using?".
The best method is to use what is known as a "chroot'ed jail". If you aren't familiar with chroot, read the man page. It basically allows you to change your "root" directory to some subdirectory on your existing system. "chroot /home/mine/newroot", and voila! You now have what appears to be a new root filesystem. chroot would allow a complete "system" to be imbedded on a working system. You will, however, have to copy binaries, etc. to your chroot'ed environment. I was wondering what people were using (haven't gotten much response), and if there were any FAQ's, etc. that would give anyone a quick leg up.
Why would you use this kind of environment? Very simple. The "normal" development for a kernel is to first update your includes (i.e. /usr/include), for the particular kernel (2.4, 2.6, etc.). But what if you want to cross-compile a 2.4 kernel when your system is running 2.6? That's why you use chroot. You don't want to crossup using 2.4 includes on a 2.6 system, then compile something for 2.6. It probably ain't gonna work. This also allows you to have multiple systems you could create. It takes some work - but it works well.
The only other alternative is to first compile the same kernel targeted to the IA-1 or IO (the one you are currently running on your system), make the image for your IA/IO, etc. Then you can compile the various sources (just be sure to change the target processor type). Not bad, but maybe not what you want, especially if you are trying to create a smaller kernel for IA/IO to work with the internal flash. I'm not sure how much bigger the 2.6 kernel would be, but it might be a tad large (or you have to heave quite a bit over the side), to get it to fit on the internal flash.
I'm still trying to decide which way to go myself. I still run a 2.4.20 variant on my server......