Is anyone here familiar with Amazon's EC2 AMI system? Basically, they are Linux-based images that run on their virtual instances.

The thing that confused me is that regardless of the distro you install, a Fedora core is used (the only way I can tell is there is a console, and you get Fedora comments in there, even though I was, for instance, using Ubuntu)

Now my knowledge of Linux kernels is extemely limited, so I've got a few questions if I may:

1) In the particular case above, why do you think the Fedora called is always used? Is it because, and I'm guessing here, that the support for the virtual hardware is compiled into this? Shouldn't any kernel be usable?

2) I've neither compiled my own kernel, nor mixed-and-matched kernels between distros. Presumably the core OS calls remain the same, but just new devices become available? Are extra methods added to the API? What I really don't undestand is why that's not just have separate driver binaries, as in Windows? Or how you can add devices to linux without compiling into the kernel?

3) If one were to make their own kernel, is there a set of tests you can do which can validate it?

4) I don't really understand the relationship between new kernels that Linus comes out with, and all the distro-specific ones. Is there some kernel within the kernel so to speak? I know that Linux is monolithic, I'm just talking more from a code/class structure perspective.

5) Do you have a 'Dummies Guide to Linux Kernels'?!