As I mentioned in my last post there is a lot of pressure at the moment to get Linux to boot up as fast as possible. This seems like such a simple task at the outset. Stop all the unneeded stuff from stating and do it all in parallel but it is not as simple as that.
The chaps that got the EEEPC to boot in five seconds did some mighty hacks to get to that stage. They created a custom kernel that also included patches to streamline the boot process. Starting the bear minimum that the EEEPC may need before starting X windows and then taking the user straight to the desktop, logged in and starting the screen saver so that the system could continue to settle in the background. I like their logic. They set a target of five seconds and pulled out all the stops to make it happen. Now there are some problems with this approach and these give a clue to the reason why the current boot process is so slow.
The current linux boot process can cope in nearly every situation. From a regular desktop that has it's disks on a local controller the type of which is not important as it will load the correct driver. To large servers with complex disk arrays and network services to start. It can boot if there are no local disks but the system is mounted over the network. After the inital boot it can load drivers for all your devices such as mouse, graphics card, networking or USB stapler. Then it starts up services that your systems needs to go about it's business be that something to manage the networking or notice when you plug in a USB drive, or your printing services.
I do like the flexibility that is gained from such a dynamic boot cycle but if you are trying to get to the desktop as fast as possible then it does tend to slow things down a little. It would be nice if there was a boot option for optimised or full boot. So for the most part it tries to speed up the boot cycle at every boot. When it is up and running and can know what devices it has then only load those and don't try and guess next time. If the ssh server is rarely used then why not delay it stating till the disks have gone quiet? Do we need to start networking right at the offset if there are no nfs mounts?All these little speed ups can be applied as the system learns what is best then if you have a problem you can hit the backout button or the full boot button to reset things if you have a new device.