I thought it would be interesting to explain the various things we tried to save some seconds when booting, since it is a hot topic these days, with impressive results from various people, including Arjan Van de Ven 5s boot on a EEE 901 PC, even if I don’t agree with all Arjan conclusions, mostly because it is not always possible to achieve the same kind of tuning with a flexible distribution which can run on many hardware platform, in contrast of a stripped installation and on a single (and now underpowered) hardware platform (Unfortunately, Mandriva folks couldn’t attend to LPC this year, because we were busy working on Mandriva 2009 release ; let’s hope new year LPC schedule won’t conflict with our own schedule).
Before continuing, boot time covers three different aspects (and timing) :
– full boot time : from kernel startup to text login being available
– perceived boot time : from kernel startup to graphical login being available (you’ll understand why I separate both later😉
– graphical desktop startup time : from graphical login to desktop environment up and running (all apps from the session running and correctly rendered)
Over the years, at Mandriva, we have worked on improving boot time but causing regressions in our distribution :
- In 2002 (yes, 6 years ago), we started reducing perceived boot time by starting X server (and display manager) before the entire boot was completed. This was the premise of “parallel boot” and gave good results, after some tuning (you must be sure all services needed when display manager starts have already been started).
- In 2006, Couriousous (from Mandriva community) developed a parallel init implementation, called PrcSys, which was based on initscript LSB headers to handle dependencies across services. This created a vertuous circle : by ensuring initscripts were LSB compliant, we had parallel init support as a bonus. When done properly, it allows full boot time reduction up to 12s (compared to standard boot), reduction of perceived boot time is often not as big.
For Mandriva Linux 2009.0, we decided to try to improve boot time again (mostly full boot time and perceived boot time) by trying to fix bottlenecks in boot time when we found some, after testing many different systems.