Saturday, June 02, 2007

Really Fast Boot, Is It Possible?

Just now, i browsed the KernelTrap's forum and i found this topic about REALLY FAST BOOT under Linux 2.7 Kernel category. I Think they are expecting to have faster boot at the next Linux kernel development cycle (2.7 is the development cycle which will output a stable 2.8 release, but unfortunately, Linus is now enjoying working with 2.6, so i don't know when will 2.7 will start). The thread started with a simple question:
I would like to see very fast boot under 10 sec. Is it possible ?
At first, i thought this guy is joking. I don't think a normal desktop/laptop could boot in less than 10 seconds (for now, but it's possible in the future), since it has to do lots of things in the background/foreground, such as initializing services, loading kernel modules, and do lots of things before your system is ready to be used. I give a bold statement on normal word, meaning that i assume you are using standard hardware specification that is available now for most home users, not a high class hardware specification that was designed for high end server/clusters.

Some people have responded with some options, such as enabling parallel startup (in Gentoo), using initng to replace the old sysvinit model, wait for hybrid drive, giving this article from IBM, and many more. In general, i predicts 20-40 seconds is required to boot until the login prompt. There's some ways to improve your boot time, though:
- Upgrade your hardware (RAM/Processors/Hard Disk) -- The easiest but most expensive solution
- Remove unneeded service at startup -- It could remove a few seconds since some script tends to wait for a few seconds, but be careful with dependency, since some service sometimes relies on other services
- Optimize startup script -- Don't do this if you don't know what you are doing, or you will end up messing up your system
- Run services in parallel -- By using & at the end of the command, you instructs the system to run the application in background, allowing next command to be executed without having to wait until the previous command finishes, but watch out for dependency (again)
- Reduce sleep call -- Sometimes scripts uses sleep call to wait for a few seconds to wait until certain condition is satisfied before it will be executed. If you know that the system is fast enough, you could reduce the value
- Optimize the kernel -- Kernel is the core of the operating system. By optimizing the kernel, you will gain more than you can expect. Start by modularizing kernel modules which isn't needed into modules and removing feature that isn't needed in your system. Please be very cautious, since removing important modules might take you into Kernel Panic mode, which in many cases, introduces you to User Panic mode :D