Unix kernels have been designed to launch one and only one program since day one. It launches init (or, if that fails for some reason, sh). The reason that kernels shouldn't launch other programs is that it's difficult to synchronize those programs with userland occurrences. For instance, if you had to wait for /usr to be mounted, you'd have to put in some lousy hack to make sure it was mounted in the kernel. If you do it from userland, then you just make sure that the script that runs that program is run after the script that mounts /usr. Easy.

That isn't to say that it can't be done. Just that it's remarkably messy.
_________________________
Bitt Faulk