Why are we building a Linux from scratch? I've heard that ...
Surely, there exist many distributions, for workstations and for embedded devices, such as EmLinux or ucLinux. But they have a main lack: They won't run on the SEGA Dreamcast because these distributions support only boards with a large demand either from industry or community. SEGA Dreamcast has "only" a small demand of individualists (the IRC channel contains about ten people all the time I was there).
Another point of view is that these distributions are ready-to-run, i.e. you download or install it, burn a CD or transfer an image to a board of your choice and everything's down. A self-made Linux distribution does (or doesn't) only that what you want. Not more, not less. Furthermore, you can specify which compiling options of a software package you need. And finally you understand what your distribution is doing.
In spite of that, these distributions are also a good start for getting to know what we need.
Why aren't we using NetBSD? I've read that ...
Certainly, you can use NetBSD for building a software router. I was very surprised how faultless their userland compiles for the SEGA Dreamcast. But, a few remarks: The NetBSD kernel is about 3,3 MB without the userland. You've got only 16 MB in your SEGA Dreamcast. Some HowTos exist for connecting a SEGA Dreamcast running NetBSD with an NFS server, but I don't want to run another computer for using my SEGA Dreamcast as a software router.
So, these are the reasons I describe the process of building a Linux distribution.
While reading, you will build an embedded Linux from scratch, i.e. you are responsible for the steps directly after loading and executing the kernel.
But take in consideration that you're building a Linux for an embedded device. You want to maximize the functionality but have to minimize the need of bytes. Keep this trade-off in mind while selecting programs you want to run on an embedded device.
As a valuable start for building a complete Linux system directly from scratch, you probably would read the book "Linux from scratch" [Beekmans98]. This book describes the steps for building a Linux system from sources by yourself (this process is a cross compile, do you remember?).
Reverting to our main goal, that book is a great guide for a workstation with a hard disk drive and a lot of space for holding various programs. So, we have to build a really small Linux "distribution" for our software router.
The following table points out some really essential programs for running a kernel and a shell on your SEGA Dreamcast:
Two sources? Yes, you're right. You need only these two packages
for getting an embbed Linux distribution. But don't be glad too early,
it's much work for getting these both packages compiled and
loaded by the SEGA Dreamcast.