Improving performance/Boot process

From ArchWiki
< Improving performance
Revision as of 03:40, 27 July 2011 by Filam (talk | contribs) (Comment out unused terminals: Many edits to improve clarity)
Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Template:Article summary start Template:Article summary text Template:Article summary end


Improving the boot performance of a system can provide reduced boot wait times and a means to learn more about how certain system files and scripts interact with one another. This article attempts to aggregate methods on how to improve the boot performance of a system.

Modifying boot files


Asynchronous startup

Note: Using this means there are no guarantees that daemons are all started before X. This can cause problems if your setup expects dbus to be running (ck-launch-session, gnome, kde, etc.).

The initscripts can be started asynchronously instead of running in a strict order.

# use once instead of wait
su:S:once:/sbin/sulogin -p

TTY terminal management

agetty is Arch Linux's default terminal manager. By default it will generate six terminals, which can be access by typing Ctrl+Alt+F[1-6]. To increase performance you can comment out unused terminals. It is important to not comment the first two terminals (i.e. tty1 and tty2). Template:File

Additionally, consider using a lighter terminal manager such as Template:Package Official, which consists of the minimal tty manager, mingetty, that has been stripped of printfs and compiled against Template:Package Official.

Note: fgetty doesn't support sha512 password hashing by default. (see SHA password hashes)
# pacman -S fgetty

Then replace agetty with fgett in Template:Filename on the following lines: Template:File


This file lets you modify the kernel command line at boot. A couple ways to speed up boot time using this file to modify the kernel commandline is to remove framebuffer entries, and set the kernel loglevel to a lowlevel of logging with quiet. For more kernel parameters and Template:Filename examples check out the archlinux page on GRUB. Remove existing vga= framebuffer resolution entries and logo.nologo, parameters to the desired kernel:

kernel /vmlinuz26 root=/dev/disk/by-uuid/UUID ro logo.nologo quiet


Delete the HOOKS you don't need, and consider using just base (sometimes udev is needed too) along with the MODULES you need for your root device (and keyboard, instead of usbinput).

Read more in the mkinitcpio article.


In the network section, make sure you only load the network interface you need. Manually configuring your network is also faster than using dhcp. Then find and remove all DAEMONS you don't need.

DAEMONS=(alsa network gdm)

Then move your Xdm to front, and background all DAEMONS.

DAEMONS=(@gdm @alsa @network)

Another thing you could do about daemons is finding the best, or rather, "sweetest" arrangement.

DAEMONS=(syslog-ng @acpid arptables iptables network pdnsd @alsa @dbus @mpd @crond @sensors @ntpd @dropboxd)

You should try to background as many DAEMONS as possible, making sure to start dependent DAEMONS after what they require (in the above example, pdnsd depends on network, ntpd and dropboxd depend on pdnsd and network, because is the dns server). You can still background daemons that are required by other things (dbus is required by the Xorg), but they need enough time to start (it can take some experimentation to get it all to work well).


This script is responsible for the majority of output you see during boot, meaning this is a system-critical configuration file which looks up other files like rc.conf and loads modules, sets up mounts, handles errors, and basically tries to be your best friend.

There are certain lines here which you may not need. Removing or commenting them out may save you a few seconds at most. Do this at your own risk. For example, if you do not have RAID, LVM or encryption, then you would not need any lines concerning that.

It's also possible to add some ampersands (&) to make it more asynchronous, but be careful - lots of things are expected to be finished during later parts of the script.

Compiling a Custom Kernel

To decrease boot time, a stripped kernel is a must. Read more about compiling a kernel.

Additional Resources