11 Answers
11

Generally, the less programs you have loading on bootup, the faster your system should be. Try BUM (from software center) to disable some unneeded services, and also ensure you don't have any unnecessary programs installed that will be loaded when booting. Finally, using a solid state drive (SSD) as your boot device should significantly improve bootime.

Oh one more thing, your filesystem type makes a difference as well. EXT4 has suffered some performance regressions (according to phoronix) but I've still found EXT4 to be great for booting fast.

Garbagecollector is right. Proceed with caution. But some of the programs you can safely disable are email popping utilities such as Evolution, especially if you are not using Evolution at first. Also, anything related to printing can be disabled if you do not print at all. Same for Wireless if you are wired.

Switch from a magnetic drive to a Solid State Drive, or a Magnetic & Solid State Hybrid drive. That will make any OS boot a lot faster. Hybrid drives are not that much more expensive. If you don't want to go that far, then just get a 7200 or 10K RPM hard drive.

My machine booted WAY faster if I did an alternate install and added the GUI packages manually. Of course, it just strips out things I don't need that I am capable of adding myself. If you are going to come back with "how do I compile/install X,Y, and Z apps" this might not be a good idea.

1. Removing unneeded packages

2. Using both cores/CPU's during the boot process

ONLY DO THIS IF YOU ARE SURE YOUR COMPUTER HAS MULTIPLE CPU'S/CORES!
Open /etc/init.d/rc (you'll need root privileges) and replace CONCURRENCY=none by CONCURRENCY=shell. Then save the file.

Update

"CONCURRENCY=shell is now obsolete and is aliased to 'makefile'. Since
2010-05-14 the default has been 'makefile'." ~Jonathon

3. Disabling unneeded daemons

This is a bit more advanced, so best not to do it if you don't know what this means.
Install bum, and start it with root privileges. Then just untick the boxes in front of the daemons you are sure you don't need. For instance, when you don't have a scanner, you can disable saned. And if you never use bluetooth, you can disable bluetooth as well.
When you're done, hit the Apply button and click either yes or no (it doesn't matter much).

After completing these steps, reboot twice. FOr some reason the first reboot after changing all these options takes much longer than the other ones, but you should notice some difference during the second reboot.

For anybody else struggling with this, just install BUM and start it s a root user. Then un check the service you want (I disabled Apache2, PostGreSQL daemon, MySQL, virtual box et al) and it will be a bit faster. You can enable it back anytime if you do not delete!

Bonus: Compress initramfs with xz and only include the modules needed. (You should really know what you're doing before attempting to do that.)

Bonus: Remove unnecessary daemons or configure them to start up faster. Though the default install is already good enough.

I have to say 32 seconds is actually good enough. It won't get much faster with traditional hardware. My new Lenovo T530 takes the same amount of time to boot in legacy mode. With the new micro SSD I recently installed and Ubuntu in UEFI mode it is down to 15 seconds from pressing the power button to login. It still feels like it is wasting 5 seconds during post, but it is absolutely not wasting time starting the actual operating system. The micro SSD has transfer speeds of 280 MB/s, may be a 500 MB/s SSD might make it to 7 seconds. But it is really up to manufacturers to reduce pre OS boot time (POST and what not).

Regarding boot profiling and shell concurrency. Those information can be seen as dated or eventually myth. I remember that automatic boot profiling or something that made boot profiling absolutely superfluous was added to Linux or the core system years ago, since then I didn't used boot profiling anymore after a new kernel package was installed. The shell concurrency setting was said to break things, but with Systemd and Upstart it should be superfluous too, and should have no positive effect.