Why does my machine take so long to boot?

A Presentation by Matthew Wilcox

Every new machine seems to take longer to boot than the one it replaced.
This is annoying for kernel developers who have to reboot frequently
and are thus less productive. It also annoys users who like to turn
their machines off while they're not using them [1]. In environments
with 99.999% guaranteed uptimes, going from a 100 second boot time to a
160 second boot time makes the difference between three crashes permitted
a year and two crashes a year.

Some of the time-consuming things are dictated by hardware specifications.
For example, each SCSI device can take up to 15 seconds to probe (but
more typically around 20-30 seconds per bus). However, there is no
reason that we have to wait for scanning one thing to finish before
scanning the next one.

This paper will discuss various techniques being used to improve boot
time. I will cover the advantages and disadvantage of parallel pci driver
initialisation. I will also cover the asynchronous scsi scanning code.
Other possibilities for improving bootup time will also be presented,
including memory management initialisation and ACPI.

[1] To the point where Microsoft are saying things like "You can turn
on your Vista machine, go eat some cereal, while your machine is cold
booting and then this gentle sound will come out telling you that you
can log in. You won’t need to wait for your machine to startup."

Direct link to video