Wouldn't we still need to wait for the HDDs to spin up? According to its SMART data, that's 10 seconds for my 2 TB HDD. I mean, Linux *could* boot up without the HDD, and just mount it when it's available, and do fsck on it then if needed, but it'd require a change in the Linux code too.
Well, not really delay the spinup as all harddrives spins up when you add power to them, but spin down again after some seconds if nothing is connected to the data-port (i.e. missing SATA/PATA-cable).
However most BIOS initiates the harddrives for lots of reasons (check if it is bootable, initiate SMART, present sizes for legacy OSs) and this takes time, mostly as most BIOSes is single threaded and does this one bus at a time, often also in a hardcoded order, not in the order of which the devices are ready/spun up.
Originally Posted by runeks
That's the most time-consuming part of the boot up of my computer, waiting for the HDDs to spin up. Restarts are pretty fast, when the HDDs are already spinning.
Restarts are not countable, as there are oftens very many tests the BIOS skips on a restart. Get yourself a verbose BIOS and you will see that nearly every BIOS on a warm-reset does very limited hardware-scanning (because some values like memory cannot on these machines be hot-swapped and get their size/clocks changed). For example with a ASUS Rampage II Extreme my BIOS is really slow on cold boot in the steps before initiating USB, and after that start scanning harddrives. However if it is a warm reboot the time before initiating USB is almost halved.
And this is not waiting for spin up, as if I have disks that does not spin during reboot (because power-saving OSs has turned them off) then they are spun up first when the BIOS tries to initiate them (which comes after USB-init).
In some BIOSes (most often OEMs, or laptops) you may see that the BIOS can start REALLY fast, but if it detects a change in the hardware, then the first boot can be much slower. This is because these BIOSes saves most of those values, and during boot does a very limited initiation, only enough to detect hardware-changes. If no changes detected, then it skips on to booting.
I have in another of my desktops one of those BIOSes, and it is REALLY fast if this is enabled in BIOS, unless I use AHCI/RAID since those are running off external BIOS-code and are not saved in nvram. In that case everything but disk-initiation is so fast my LCD does not have time to power up before the AHCI-bios.