Boot-time improvements

Jonathan Carter (highvoltage) jonathan at
Tue Sep 9 18:31:33 UTC 2008


Some systems have been really successful at making it *appear* as if the 
system starts up faster. In my opinion, where the system can't be made 
to boot faster, it should be made to appear so.

Here are some ideas around improving boot speed and making it appear faster:

1. Have as few transitions in the boot process as possible

When a transition occurs, ie, the screen colour changes or flashes, it 
distracts the user, and gives an illusion that something is happening. 
It also makes it appear that more things are busy happening, and it 
makes the user notice the periods between the transitions (the 
watching-paint-dry effect). What happens before Ubuntu start is 
unfortunately not controllable. This is where Apple seems to have a very 
good advantage in their boot-up process. I think Ubuntu at least, should 
minimise all the transitions where it is possible.

2. Login dialog needs to be displayed as early as possible

Currently, the system does what it has to in order to start X and start 
up GDM. It would be nice if Usplash (or something) could have a field 
where you could enter a username and password so long, which could be 
passed on to GDM when it's good and ready. This way GDM doesn't have to 
load its interface and possibly not do so much as it does now. Having a 
username/password dialog as early as possible usually gives a good 
impression of boot-up time, and while the user types in their 
username/password, the system will be busy booting in the meantime.

The problem with both points above is the amount of integration that 
happens in the various boot phases. Usplash throws its graphics out on 
the framebuffer, while GDM uses X. We probably don't want to get rid of 
GDM entirely, or at all, since, from what I've seen in concept 
screenshots, GDM will be getting some real nice composited usability 
features, and most users would probably want to use it.

So in terms of getting boot speed as fast as possible, I've wandered a 
bit on the following:

1. Attempt to get an X server up much sooner

Perhaps the bare minimum X server files could be stored in the 
initramfs? I guess this could probably make the image too alrge which 
wouldn't make this option very viable. If it could be done, the program 
that would display an initial boot logo on this X server should also get 
support for detecting that a disk check is about to happen, and display 
the appropriate output. I think Red Hat once (or still does?) used an X 
server for their boot up display. I think they started up GDM seperately 
though (causing X to start twice during the boot-up process). The 
greeter should be started with the same X session, so that only one X 
session is started during the boot process. This may also allow 
composited effects to be displayed during the boot-up process. Users 
wouldn't want their boot-process to end too soon if it looks uber-cool :)

2. Remove the flashes and brown screens when starting Gnome

Personally, my biggest annoyance as a user is the brown screen that 
flashes between GDM and when Gnome starts. It would be much nicer if gdm 
displayed the greeter for half a second longer, and when Gnome has the 
desktop wallpaper ready, it would do some nice GL transition to the 
actual desktop environment. Where there has to be transitions, it would 
be good to keep it as smooth as possible.

 From a technical level, I guess it comes down to keeping the following 
to a minimum during boot:

  * CPU usage
  * Disk reads/writes (and probably more specific, disk seeks)

It seems that with the current process, it's close to as fast as it can 
be at the moment. Readahead avoids unnecessary disk seeks. Upstart gets 
the services started in an optimal (well, let's assume so for now) way 
so that the right services start at the right time. It seems that 
boot-up speeds on laptops and desktops are the most important. Servers 
shouldn't ideally be restarted unless there is security updates that 
require it or when hardware is added. Laptop users are probably less 
likely to care whether things like apache (some people run it on laptops 
for testing, etc) or cron are started immediately. A lot of things are 
probably safe to start way after the login dialog is displayed. Some 
things probably even far after the user is logged in. It would probably 
be nice if Upstart had some kind of inetd service support, so that if 
you happen to have a server (such as openssh-server) installed on your 
laptop or desktop, that the service will be started up when something 
(or someone) tries to access its associated port.

Perhaps making the boot-process longer, by loading any non-essential 
software as late as possible (even long after the user has logged on), 
but getting the user interface ready as early as possible, should be the 
target, instead of trying to get everything to complete as soon as possible.

If something like Usplash continues to be used, I think it's important 
that it transitions well into the next phase. Not sure if that's even 
possible when using X.

Sorry for the blabbering, I can't wait to see what ideas the Ubuntu crew 
comes up with to get the boot-speed super-fast :)


More information about the Ubuntu-devel-discuss mailing list