I have seen many videos that make Ubuntu faster, but these methods only make desktop performance faster.

I am looking to make my computer boot faster. Is their anything I can do to make Ubuntu boot significantly faster?

  • 4
    Systems using systemd (since 15.04 IIRC) come with the tool systemd-analyze which can help you to analyse which process takes how long to boot. See man systemd-analyze to learn about all its options, the on you're probably going to use most is systemd-analyze blame though. – Byte Commander Aug 4 '16 at 18:27
  • @ByteCommander A step by step answer will do the job. – Anwar Aug 5 '16 at 13:59

12 Answers 12

up vote 27 down vote accepted

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.

  • you could add which service could be disabled which is not usefull normally? – Philippe Gachoud Sep 11 '15 at 6:56
  • @PhilippeGachoud I really can't remember now. This is from 2010! – RolandiXor Sep 11 '15 at 22:34
  • I am using a backward compatible SSD and my board is SATA. It boots crazy fast. – userDepth Aug 2 '16 at 22:04

I just ran across this the other day. Its "e4rat" Instructions Here

This little app is amazing.

I took an overtired single processor AMD sempron running at 2800+ which normaly boots Natty at 1.45 mins to 27.885 secs.

I have the boot-charts to prove it. Its crazy! enter image description here

  • 1
    This really helps!!! – user12164 Jun 21 '12 at 16:48
  • More people need to know about e4rat, it's a fantastic tool that made the biggest improvement of many different tips and tricks. – Victor Bjelkholm Mar 16 '13 at 22:14
  • 3
    Is it still legit for 12.04? I heard it would cause problems with ureadahead. Is this true? – user138784 Mar 27 '13 at 19:58
  • @user138784 as I understand, this is because ureadahead does alike job as the e4rat, so they're obviously conflicts. But e4rat for some reason seems to be better than ureadahead. Also, perhaps would be useful — the e4rat for some reason doesn't work by default, it needs some tweak, otherwise the log file isn't created. – Hi-Angel Jan 12 '16 at 11:40
  • e4rat didn't work in 16.04 – Anwar Aug 6 '16 at 15:33

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.

  • 6
    Disk speed is the current boot-bottleneck. – scottl Nov 2 '10 at 5:02
  • @scottl given my disks are SATA and my boot time is similar to the 1:45 min reported by @RobinJ, I doubt that there's any reason to point fingers to disk performance in particular. On thing I do see, however, is that mounting disks and shares is done in a synchronous fashion, despite 1.) using fastboot and 2.) those disks not being important for the boot process. – 0xC0000022L Nov 27 '17 at 21:47

Improving boot time is highly related with disabling/managing service, but the current answers lack details in disabling services which uses systemd.

What is systemd?

In short, systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. More about this can be read from official project page.

Check which services takes most time

Use the following command to check which service takes most of time

systemd-analyze blame

Disabling auto-start of services during boot

If you want to disable auto-starting of services during boot you can use the following command

sudo systemctl disable some-time-eater-service.service --now

However, you might want to see which other services needs the service in question. To check use the following command

systemctl list-dependencies some-time-eater-service.service --reverse

Note: Replace some-time-eater-service.service with actual service name like postgresql@9.5-main.service.

Note that, disabling auto-start doesn't make a service non-startable. The service can be started after boot when requirement arises. If you want to completely disable it, read the next section

Disabling services completely.

If you want to completely disable a service so that it can't be started, you should use mask instead of disable. Like this

sudo systemctl mask <SERVICE-NAME>

Replace the <SERVICE-NAME> with actual name of a service

The difference between mask and disable is mask make a service completely disable, you can't start it. You must unmask to start it with systemd (you can still start with service). But disable simply disable auto-start of a service, you can start it later.

For example, After masking my postgresql@9.5-main.service service, when I wanted to start it with systemctl the following message is shown

Failed to start postgresql@9.5-main.service: Unit postgresql@9.5-main.service is masked.

GUI Tool

One GUI Tool I particularly find interesting is systemd-manager, it is still in development stage and hasn't been made it's path to Official Ubuntu repository. However, you can install it very easily from Systemd-Manager's github page. The releases contain a .deb package, which is very easy to install. You need GTK-3.16 or higher though.

Once you download and install, you can start it with systemd-manager command. Start it.

The application has two main view. One is Systemd Units and other one is Systemd Analyze. You can switch it with the label in top-left corner. See the screenshot.

Swithch Between Views

And There are three types of units you can manage. Servcies, Sockets and Timers. You can switch between them. See the screenshot.

Switch between unit types

Displaying Information

The three main tabs are Files, Journal, Dependencies.

  • Files is the selected unit's configuration file.
  • Journal is the live systemd's output while enabling/disabling/starting/stopping units
  • Dependencies shows what other services or units must be enabled to start a selected service.

Status Indicators

There are two columns beside the name of units to indicate the Status. Left one indicates whether that unit is enabled to start at boot and the right one indicates whether that unit is currently running. See them in picture.

Enabled at boot status

Currently running status

Control Switches

To toogle enabled-at-boot or running status, there are two toogle buttons at the top-right corner. Enabled means the units will start and boot. See them in picture.

Toogle switches to enable/start

The complete view of the application is shown below

Complete View

Hope this will help. I get benefited from other answers about systemd, but really needed to gather the information in one Place.

More information:

To know more about systemd you can visit these links:

Other answers have different suggestions. Including buying SSD, increasing RAM etc. If you can afford, those will definitely help, particularly the SSD suggestion.

I assume you're talking about Ubuntu 11.04?
I have been trying this for a pretty long time now, without much succes. Anyway, these steps made a few seconds difference:

1. Removing unneeded packages

apt-get purge brltty brltty-x11 foo2zjs min12xxw ttf-indic-fonts-core ttf-kacst-one ttf-khmeros-core ttf-lao ttf-punjabi-fonts ttf-unfonts-core

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.

  • 3
    CONCURRENCY=shell is now obsolete and is aliased to 'makefile'. Since 2010-05-14 the default has been 'makefile'. – Jonathon Jul 16 '13 at 0:32
  • Is it possible to list (or give a short explanation) which packages you advice to remove? (first point in your explanation). Always mind that there are people that simply do copy-paste and all of a sudden are unable to read from terminal etc. – Willem Van Onsem Aug 25 '15 at 14:40
  • 1
    @CommuSoft Since this answer is about Ubuntu 11.04 anyway it would be unadvisable anyway to apply the same answer to more recent versions. Some of this stuff will not work anymore, and other things may break the system. – RobinJ Aug 25 '15 at 19:43

Use bootchart to produce detailed graphs of what takes time during boot. It might help in deciding what to tweak or remove. From https://wiki.ubuntu.com/BootCharting :

  • Install the bootchart and pybootchartgui packages, either through apt-get or Synaptic
  • Reboot your machine
  • The bootchart is in /var/log/bootchart as a .png file

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.

Replace your hard disk with a SSD is probably the only practical method. Example:

http://www.engadget.com/2011/08/17/samsungs-6gbps-ssd-gets-a-consumer-label-october-ship-date/

The time does sound a little excessive but you haven't posted any details.

  • 1
    To down voter, Disk speed is the major bottleneck and is always noteworthy answer as previously responded. – Steve-o Aug 29 '11 at 3:36

For anybody else struggling with this, just install BUM and start it s a root user (be careful to use gksudo instead of normal sudo). Then un-check the service you want to disable (I disabled Apache2, PostGreSQL daemon, MySQL, virtual box et al) and that is it! You can delete the service completely if you don't want it it there but disabling it is more than enough.

sudo apt-get install bum

enter image description here

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.

Try editing the "/etc/default/grub" file, like most blogs are pointing at. You probably know that one. First adding word "profile", then rebooting, then removing "profile" then rebooting again... it really does improve boot speed. Here is one example: http://lgjsheron.wordpress.com/2010/07/06/how-to-speed-up-boot-of-ubuntu-10-04-lucid-lynx/

Edit 25.10.2016: If you are not going to use hibernation because you can't or you prefer suspend/S3 then you can disable it in Grub by adding noresume to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub and run update-grub. Here is an example on a Chromebook N22 running GalliumOS:

livewire@zc01:~$ systemd-analyze
Startup finished in 8.580s (kernel) + 4.160s (userspace) = 12.740s

livewire@zc01:~$ systemd-analyze
Startup finished in 3.595s (kernel) + 4.254s (userspace) = 7.850s

I found this because I was curious about the "Running scripts local-premount" part during boot and investigated a bit in initramfs which led me to this option which I previously only used when my system couldn't wake up from hibernation.


Edit 06.08.2016: You should update to a recent version of your Linux distribution that comes with systemd.


Ingredients:

  • Get a UEFI system with bloat free UEFI code or Coreboot
  • Get a SSD
  • Install Ubuntu in UEFI mode
  • Bonus: Compress initramfs with xz lzop 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.
    • Example: btrfs' init job that is looking for pools to mount while there are no btrfs volumes on this device. This made me remove btrfs-tools from some of my installations.

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.

protected by Zanna Mar 26 '17 at 6:22

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.