Beginners' guide

From ArchWiki
Revision as of 13:26, 11 August 2012 by 2ManyDogs (talk | contribs) (→‎Grub)
Jump to navigation Jump to search

zh-CN:Beginners' Guide/Installation

Tip: This is part of a multi-page article for The Beginners' Guide. Click here if you would rather read the guide in its entirety.


After booting, the installation media automatically logs in as root and uses a US keyboard layout.

Changing the keymap

If you have a non-US keyboard layout you can interactively choose your keymap/console font with the command:

# loadkeys layout

where layout is your keyboard layout such as fr, uk or be-latin1

Keymaps are available for many countries and keyboard types. The keymap files can be found in /usr/share/kbd/keymaps/ (you can omit the keymap path and file extension when using loadkeys).

Setup network in the live installation environment

The installer need network connection to download and install packages. So network have to be setup first.

Automatic setup

The installer will try to automatically configure a wired connection if available. You may check this was successful by using /bin/ping:

# ping -c 3

If you get an answer that looks like this:

PING ( 56(84) bytes of data.
64 bytes from ( icmp_req=1 ttl=50 time=17.0 ms
64 bytes from ( icmp_req=2 ttl=50 time=18.2 ms
64 bytes from ( icmp_req=3 ttl=50 time=16.6 ms

--- ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 16.660/17.320/18.254/0.678 ms

then the network and Internet access have been properly configured. You may continue to #Prepare_hard_drive. Otherwise, if you get:

ping: unknown host

you will need to set up the network manually, as explained below.

Set up a wired connection

Follow this procedure if your computer is connected to an Ethernet network. In most cases, you will have one interface, called eth0. If you have additional ethernet interfaces (which may be additional cards or integrated to the motherboard), their name will follow the sequence eth1, ethX,...

Dynamic IP (DHCP)

Assuming a wired Ethernet connection and access to a DHCP server (e.g. using a router), run:

# dhcpcd

to get a lease. If you have several interfaces (such as several Ethernet cards), you may specify the interface with dhcpcd <interface>, e.g:

# dhcpcd eth0

Verify your connection as explained above and if successful jump to #Prepare_hard_drive.

Static IP

If you do not have access or are not using DHCP, you need to assign a static IP address. You need to know these settings:

  • Static IP address,
  • Subnet mask,
  • Gateway's IP address,
  • Name servers' (DNS) IP addresses,
  • Domain name (unless a local LAN, in which case you can make it up).

Activate the connected ethernet interface, e.g. for eth0:

# ip link set eth0 up

Add the address:

# ip addr add <ip address>/<subnetmask> dev <interface>

For example:

# ip addr add dev eth0

For more options, see: man ip

Add your gateway like so:

# ip route add default via <ip address>

(Substitute your own gateway's IP address)

For example:

# ip route add default via

Edit your /etc/resolv.conf like this, substituting your name servers' IP addresses and your local domain name:

nameserver 61.95.849.8
Note: Currently, you may include a maximum of 3 nameserver lines.
Note: For more in-depth information on network configration, visit configuring network.
Tip: If you do not need to configure ADSL or wireless, you may proceed to Prepare hard drive.

Setup wireless network

Follow this procedure if you need wireless connectivity (WiFi) during the installation process.

The wireless drivers and utilities are now available to you in the live environment of the installation media. A good knowledge of your wireless hardware will be of key importance to successful configuration. Note that the following quick-start procedure executed at this point in the installation will initialize your wireless hardware for use in the live environment of the installation media. These steps (or some other form of wireless management) must be repeated from the actual installed system after booting into it.

Also note that these steps are optional if wireless connectivity is unnecessary at this point in the installation; wireless functionality may always be established later.

Note: The following examples use wlan0 for the interface and linksys for the ESSID. Remember to change these values according to your setup.

The basic procedure will be:

  • (optional) Identify the wireless interface:
# lspci | grep -i net

or, if using a USB adapter:

# lsusb 
  • Ensure udev has loaded the driver, and that the driver has created a usable wireless kernel interface with /usr/sbin/iwconfig:
# iwconfig
 lo no wireless extensions.
 eth0 no wireless extensions.
 wlan0    unassociated  ESSID:""
          Mode:Managed  Channel=0  Access Point: Not-Associated
          Bit Rate:0 kb/s   Tx-Power=20 dBm   Sensitivity=8/0
          Retry limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

wlan0 is the available wireless interface in this example.

Note: If you do not see output similar to this, then your wireless driver has not been loaded. If this is the case, you must load the driver yourself. Please see Wireless Setup for more detailed information.
  • Bring the interface up with:
# ip link set wlan0 up

A small percentage of wireless chipsets also require firmware, in addition to a corresponding driver. If the wireless chipset requires firmware, you are likely to receive this error when bringing the interface up:

# ip link set wlan0 up
SIOCSIFFLAGS: No such file or directory

If unsure, invoke /usr/bin/dmesg to query the kernel log for a firmware request from the wireless chipset.

Example output from an Intel chipset which requires and has requested firmware from the kernel at boot:

$ dmesg | grep firmware
firmware: requesting iwlwifi-5000-1.ucode

If there is no output, it may be concluded that the system's wireless chipset does not require firmware.

Warning: Wireless chipset firmware packages (for cards which require them) are pre-installed under /usr/lib/firmware in the live environment (on CD/USB stick) but must be explicitly installed to your actual system to provide wireless functionality after you reboot into it! Package installation is covered later in this guide. Ensure installation of both your wireless module and firmware before rebooting! See Wireless Setup if you are unsure about the requirement of corresponding firmware installation for your particular chipset. This is a very common error.
  • If the ESSID has been forgotten or is unknown, use iwlist <interface> scan to scan for nearby networks:
# iwlist wlan0 scan
Cell 01 - Address: 04:25:10:6B:7F:9D
                    Frequency:2.417 GHz (Channel 2)
                    Quality=31/70  Signal level=-79 dBm  
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
                              36 Mb/s; 48 Mb/s; 54 Mb/s
  • If using WPA encryption:

Using WPA encryption requires that the key be encrypted and stored in a file, along with the ESSID, to be used later for connection via wpa_supplicant. Thus, a few extra steps are required:

For the purpose of simplifying and backup, rename the default wpa_supplicant.conf file:

# mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.original

Using wpa_passphrase, provide your wireless network name and WPA key to be encrypted and written to /etc/wpa_supplicant/wpa_supplicant.conf.

The following example encrypts the key "my_secret_passkey" of the "linksys" wireless network, generates a new configuration file (/etc/wpa_supplicant/wpa_supplicant.conf), and subsequently redirects the encrypted key, writing it to the file:

# wpa_passphrase linksys "my_secret_passkey" > /etc/wpa_supplicant/wpa_supplicant.conf
Note: If the above fails with a bash: event not found error, it may be due to special characters (e.g. !) used in your wireless network name. In that case try the following:
# tee /etc/wpa_supplicant/wpa_supplicant.conf < <(wpa_passphrase linksys "passphrase")

And if you are still having problems because of special characters in your network name or passphrase, you may try the following, where (~/mykey) is a temporary text file containing only your passphrase:

# cat ~/mykey | wpa_passphrase linksys > /etc/wpa_supplicant/wpa_supplicant.conf
Also, for security reasons, you may want to remove this file (~/mykey) after you setup your (/etc/wpa_supplicant.conf) file.

Check WPA Supplicant for more information and troubleshooting.

Note: /etc/wpa_supplicant/wpa_supplicant.conf is stored in plain text format. This is not risky in the installation environment, but when you reboot into your new system and reconfigure WPA, remember to change the permissions on /etc/wpa_supplicant/wpa_supplicant.conf (e.g. chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf to make it readable by root only).
  • Associate your wireless device with the access point you want to use. Depending on the encryption (none, WEP, or WPA), the procedure may differ. You need to know the name of the chosen wireless network (ESSID).
Encryption Command
No Encryption iwconfig wlan0 essid "linksys"
WEP w/ Hex Key iwconfig wlan0 essid "linksys" key "0241baf34c"
WEP w/ ASCII passphrase iwconfig wlan0 essid "linksys" key "s:pass1"
WPA wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
Note: The network connection process may be automated later by using the default Arch network daemon, netcfg, wicd, or another network manager of your choice.
Note: If connection to a wireless network is required, remember to select and install the wireless_tools package. Some wireless interfaces also need ndiswrapper and/or a specific firmware. If you plan to use WPA encryption, you will need wpa_supplicant. The Wireless Setup page will help you choose the correct packages for your wireless device. Also strongly consider installing netcfg, which will help you set up your network connection and profiles after you reboot into your new system.
Note: If you are booting from a live environment and have chrooted into your regular installation, you can start networkmanager from the commandline with /etc/rc.d/dbus start and /etc/rc.d/networkmanager start, list available connections with nmcli con list and use a connection with nmcli con up id NAME where NAME is the name of the connection.
  • After utilizing the appropriate association method outlined above, wait a few moments and confirm you have successfully associated to the access point before continuing, e.g.:
# iwconfig wlan0

Output should indicate the wireless network is associated with the interface.

  • Request an IP address with /sbin/dhcpcd <interface>, e.g.:
# dhcpcd wlan0

You should now have a working network connection. If you do not, check the detailed Wireless Setup page.

Set up Direct Modem Connection


Follow this procedure if you have a modem or router in bridge mode to connect to your ISP.


# pppoe-setup

If everything is well configured in the end, you can connect to your ISP with:

# pppoe-start
Analog Modem, ISDN

See Direct Modem Connection for detailed instructions.

Proxy Server

If you are behind a proxy server, you will need to export the http_proxy and ftp_proxy environment variables. Click here for more information.

Test network connection

Lastly, ensure you can route using /bin/ping:

# ping -c 3
PING ( 56(84) bytes of data.
64 bytes from ( icmp_req=1 ttl=50 time=17.0 ms
64 bytes from ( icmp_req=2 ttl=50 time=18.2 ms
64 bytes from ( icmp_req=3 ttl=50 time=16.6 ms

--- ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 16.660/17.320/18.254/0.678 ms

Prepare hard drive

Warning: Partitioning hard drives can destroy data. You are strongly cautioned and advised to backup any critical data before proceeding.
Note: Use any partitioning tool you prefer, such as GParted or other available tools. The current install media includes the disk partitioning tools fdisk, gdisk, and parted.

If you have already partitioned your hard disk, verify current disk identities and layout by invoking /sbin/fdisk with the -l (lower-case L) switch.

At the root prompt enter:

# fdisk -l

Take note of the disk(s) and/or partition(s) to utilize for the Arch installation. Each partition is identified with a number suffix. Example: sda1 specifies the first partition of a drive while sda designates the entire drive. You may now proceed to Configure block devices, filesystems, and mountpoints.

Note: If you are installing to a USB flash key, see Installing Arch Linux on a USB key.

The remainder of this section shows an example configuration for a beginner's Arch installation and uses the fdisk partitioning tool. You are not required to use this configuration or this tool; it is presented here only as an example.

For more information on partitioning your hard disk, see Partitioning.

For more information on possible file system types, see File Systems.

Manually partition hard drives

The current install media includes the disk partitioning tools fdisk, gdisk, and parted. gdisk supports only GPT partition tables; fdisk supports only MBR partition tables; parted supports both. This example uses fdisk.

Use fdisk to open the selected target disk for manual partitioning (if you have an SSD drive other choices like gdisk or GNU Parted may be preferable). This example uses the first hard disk, designated sda:

# fdisk /dev/sda

The example system will contain a 15GB root (/) partition, a 1GB swap partition, and a /home partition for the remaining disk space. It is emphasized again that partitioning is a personal choice and this example is only for illustration.

Choose New -> 'Primary' and enter the desired size (15.44 GB in this example) for the root (/) filesystem. The partition will be put at the beginning of the disk. Select the Type and designate it as 83 Linux. The created / partition will appear as sda1. Thereafter select "Bootable" to flag root as bootable.

Next, create a second partition for swap. Select an appropriate size (~1 GB here) and specify the Type as 82 (Linux swap / Solaris). The created swap partition will appear as sda2.

The remaining space is used to create a third partition for the /home directory. Identify it as a primary partition and set the size. Select the Type as 83 Linux. The created /home partition will appear as sda3.

This is how the example will look:

Name    Flags     Part Type    FS Type           [Label]         Size (MB)
sda1    Boot       Primary     Linux                             15440       #root
sda2               Primary     Linux swap / Solaris              1024        #swap
sda3               Primary     Linux                             133000      #/home

Choose Write and type yes. Be aware that this operation may destroy data on your disk. Choose Quit to leave the partitioner.

For more information on partitioning your hard disk, see Partitioning.

Note: Since the latest developments of the Linux kernel which include the libata and PATA modules, all IDE, SATA and SCSI drives have adopted the sdx naming scheme. This is perfectly normal and should not be a concern.
Note: If you are using (U)EFI you will most probably need another partition to host the UEFI System partition. Read this article.

Configure block devices, filesystems, and mountpoints

Use the mkfs utility to format the partitions into filesystems. In this example configuration, we are using the ext4 filesystem for both root and home partitions.

# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda3

Format and activate the swap partition:

# mkswap /dev/sda2 && swapon /dev/sda2

For more information on possible file system types, see File Systems.

Mount the partitions

Mount the root partition on /mnt.

# mount /dev/sda1 /mnt

Create a directory for the /home partition and mount it:

# mkdir /mnt/home && mount /dev/sda3 /mnt/home

Select installation mirror

Before installing, you may want to edit /etc/pacman.d/mirrorlist such that your preferred mirror is first. This copy of the mirrorlist will be installed on your new system by pacstrap as well, so it's worth getting it right.

Note: is throttled to 50KB/s.

Install the base system

The base system is installed using the pacstrap script. A minimal system requires the base package group; also installing the base-devel package group at this time is highly recommended. If you require other packages at this time, simply add them to the pacstrap command.

# pacstrap /mnt base base-devel
  • base: Software packages from the [core] repo to provide the minimal base environment.
  • base-devel: Extra tools from [core] such as make, and automake. Most beginners should choose to install it, as it will likely be needed to expand your new system. The base-devel group will be required to install software from the Arch User Repository.

This will give you a basic Arch system. Other packages can be installed later using pacman.

Note: If pacman fails to verify your packages, check your system time. If the system date is invalid (e.g. it shows year 2010), signing keys will be considered expired (or invalid), signature checks on packages will fail and installation will be interrupted. Make sure to correct the system time, either by doing so manually, or with ntp client, and retry running the pacstrap command. Refer to Time page for more information on correcting system time.

Generate fstab

Generate an fstab file with the following command. (If you prefer to use UUIDs or labels, add the -U or -L option, respectively.)

# genfstab -p /mnt >> /mnt/etc/fstab
Note: It is a good idea to check the auto-generated fstab file (/mnt/etc/fstab) before continuing. If you encounter errors running genfstab or later in the install process, do not run genfstab again; just edit the fstab file. Also, only the "/" partition needs "1" for the last field. Everything else should have "2" or "0" (see #Field definitions).

Chroot into system

Next we chroot into our newly installed system.

# arch-chroot /mnt
Tip: If you forgot to install packages with the pacstrap script, you may install them after the chroot with pacman -S <package>

Configure the system

Tip: Closely following and understanding these steps is of key importance to ensure a properly configured system.

At this stage of the installation, you will configure the primary configuration files of your Arch Linux base system.

Configuration files

/etc/rc.conf is the configuration file for Arch's initscripts, and in the past used to also contain configurations for other parts of the system. Unless you are using an alternate init system like systemd, /etc/rc.conf configures which daemons to start during boot-up and some networking and storage information.

Note: Using the legacy configuration options in /etc/rc.conf for system configuring still works (for now) with the default init system, but the new configuration files take precedence and using them is recommended. The new files will also work for configuring systemd.
Configuration Configuration file(s) Legacy /etc/rc.conf section
Hostname /etc/hostname


Console fonts and Keymap /etc/vconsole.conf LOCALIZATION
Locale /etc/locale.conf


Timezone /etc/timezone


Hardware clock /etc/adjtime LOCALIZATION
Kernel modules /etc/modules-load.d/ HARDWARE
Daemons /etc/rc.conf DAEMONS
Wired Network /etc/rc.conf NETWORKING

Configuration files can simply be created if they do not exist already and you wish to change the defaults. During this procedure you use the editor nano. For example to edit your hostname file in /etc/hostname you'll type:

# nano /etc/hostname

you press Template:Keypress to either save changes or close the file. When prompted to save changes, press Template:Keypress or Template:Keypress, and Template:Keypress to write the file


Add your hostname in /etc/hostname. Example:


Set it to your liking. This is the name of your computer.

Add also your hostname in /etc/hosts, coinciding with the one specified in /etc/hostname as an alias, so that it looks like this:   localhost.localdomain   localhost myhostname
::1         localhost.localdomain   localhost myhostname
Note: ::1 is the IPv6 equivalent of
Warning: This format, including the "localhost" and your actual host name, is required for program compatibility. Errors in this entry may cause poor network performance and/or certain programs to open very slowly, or not work at all.

If you use a static IP, add another line using the syntax: <static-IP> <> <hostname> e.g.: myhostname
Tip: For convenience, you may also use /etc/hosts aliases for hosts on your network, and/or on the Web, e.g.: media data
The above example would allow you access a media and data server on your network by name and without the need for typing out their respective IP addresses.

Console fonts and keymap

Edit /etc/vconsole.conf.

The available keymaps are in /usr/share/kbd/keymaps. Please note that this setting is only valid for your TTYs, not any graphical window managers or X.
Available alternate console fonts reside in /usr/share/kbd/consolefonts/. The default (blank) is safe.
Defines the console map to load with the setfont program at boot. Possible maps are found in /usr/share/kbd/consoletrans, if needed. The default (blank) is safe.


Note: For more information see: Console fonts and man vconsole.conf.


Available time zones and subzones can be found in the /usr/share/zoneinfo/<Zone>/<SubZone> directories.

To view the available <Zone>, check the directory /usr/share/zoneinfo/:

# ls /usr/share/zoneinfo/

Similarly, you can check the contents of directories belonging to a <SubZone>:

# ls /usr/share/zoneinfo/Europe

Create a symbolic link /etc/localtime to your zone file /usr/share/zoneinfo/<Zone>/<SubZone> using this command:

# ln -s /usr/share/zoneinfo/<Zone>/<SubZone> /etc/localtime


# ln -s /usr/share/zoneinfo/Europe/Minsk /etc/localtime

If you are using systemd's timedated, you might wish to also edit the file /etc/timezone and write your Zone/Subzone.



Read man 5 timezone for more options.

The need for /etc/timezone might go away in the future [1].


Enable locales

The /usr/sbin/locale-gen command reads from /etc/locale.gen to generate specific locales. They can then be used by glibc and any other locale-aware program or library for rendering text, correctly displaying regional monetary values, time and date formats, alphabetic idiosyncrasies, and other locale-specific standards:

# nano /etc/locale.gen

By default /etc/locale.gen is an empty file with commented documentation. Once edited, the file remains untouched. locale-gen runs on every glibc upgrade, generating all the locales specified in /etc/locale.gen.

Choose the locale(s) you need by removing the # in front of the lines you want, e.g.:

en_US.UTF-8 UTF-8
Note: see the list of the locales and what they stand for here [2].

Then run:

# locale-gen
Setting up system-wide locale

Set locale preferences in /etc/locale.conf.



Setting only LANG should be enough. It acts as the default value for all other locale settings.

You can override parts of a locale using LC_* variables – for example, setting LC_COLLATE=C disables locale-aware sorting, but keeps all other features. You can see all LC_* variables by running locale.

LC_ALL overrides all other settings. Because of that, you cannot set it from locale.conf. It is recommended that you use LC_ALL only when needed – do not put it in your default environment.

For the ramdisk creation that will follow later, you should now set the LANG variable. Example:

# export LANG=en_US.UTF-8

Hardware clock time

This is set in /etc/adjtime. Set the hardware clock mode uniformly between your operating systems on the same machine. Otherwise, they will overwrite the time and cause clock shifts (which can cause time drift correction to be miscalibrated).

You can generate /etc/adjtime automatically by using one of the following commands.

Note: Make sure HARDWARECLOCK in /etc/rc.conf is not set when using this method.
  • UTC (recommended)
# hwclock --systohc --utc
Note: Using UTC for the hardware clock does not mean time will be displayed in UTC in software.
  • localtime (discouraged) - Used by default in Windows
# hwclock --systohc --localtime
Warning: Using localtime may lead to several known and unfixable bugs. However, there are no plans to drop support for localtime.
Setting time in a Windows dual boot setup

If you are setting up a dual-boot with Windows on your system, you have two options:

  • Recommended: Set both Arch Linux and Windows to use UTC (a quick registry fix is needed, see this page for instructions). Also, be sure to prevent Windows from synchronizing the time with the Internet, as it will make the hardware clock use localtime again. If you want such functionality (NTP sync), you should use ntpd on your Arch Linux installation instead.
  • Not recommended: Set Arch Linux to localtime and later (in Configure the system) remove hwclock from the DAEMONS array in /etc/rc.conf (Windows will take care of hardware clock corrections).

Kernel modules

Tip: Normally all needed modules are automatically loaded by udev, so you will rarely need to add something here. Only add modules that you know are missing.

Edit /etc/modules-load.d/ to configure kernel modules to load during boot in a static list. Each configuration file is named in the style of /etc/modules-load.d/<program>.conf. The configuration files should simply contain a list of kernel module names to load, separated by newlines. Empty lines and lines whose first non-whitespace character is # or ; are ignored. Example:

# Load virtio-net.ko at boot


Tip: The daemons line need not be changed at this time, but it is useful to explain what daemons are, as they will be addressed later in this guide.

Daemons are programs that run in the background, waiting for events to occur and offering services. A good example is a web server that waits for a request to deliver a page (e.g.: httpd) or an SSH server waiting for a user login (e.g.: sshd). While these are full-featured applications, there are also daemons whose work is not that visible. Examples are a daemon which writes messages into a log file (e.g. syslog, metalog), and a daemon which provides a graphical login (e.g.: gdm, kdm).

These programs can be added to the DAEMONS line in /etc/rc.conf and will be started when the system boots. The DAEMONS array simply list the names of those scripts contained in /etc/rc.d/ which are to be started during the boot process, and the order in which they start. Asynchronous initialization by backgrounding is also supported and useful for speeding up boot:

DAEMONS=(network @syslog-ng netfs @crond)
  • If a script name is prefixed with a bang (!), it is not executed.
  • If a script is prefixed with an "at" symbol (@), it shall be executed in the background; the startup sequence will not wait for successful completion of each daemon before continuing to the next. (Useful for speeding up system boot). Do not background daemons that are needed by other daemons. For example mpd depends on network, therefore backgrounding network may cause mpd to break.
  • Edit this array whenever new system services are installed, if starting them automatically during boot is desired.
Tip: A list of available services (and their running status) can be found using this command: rc.d list.

Configure the network

You need to configure the network again, but this time for your newly installed environment. The procedure and prerequisites are very similar to the one described above, except we are going to make it persistent and automatically run at boot.

Note: For more in-depth information on network configration, visit configuring network and Wireless setup.

Wired Network

If you only use a single wired network connection, you can use the network daemon, a simple solution for both dynamic and static IP addressing. First, insure that the daemon is listed in the DAEMONS array:

DAEMONS=(... network ...)

Then configure the NETWORKING section of /etc/rc.conf as follows, depending on your IP addressing type.

Dynamic IP (DHCP)

Assuming the network interface to activate at start is eth0, use this configuration:


Your DNS server addresses will be automatically filled in by the dhcpcd daemon.

Static IP

If you need to use a static IP address, use this configuration:


You will also need to add your name servers' (DNS) IP addresses and your local domain name to your /etc/resolv.conf like this:

nameserver 61.95.849.8
Tip: The network daemon is suitable for systems connecting wired to a single network. For multiple network configurations (e.g. using a laptop), it is recommended to use a network manager program, such as netcfg, which has been designed to manage both wired and wireless connections.

Wireless network

The network daemon is not sufficient to handle Wireless networking, which requires additional configuration. You will need to install other programs to configure and manage wireless network profiles, such as netcfg. NetworkManager and Wicd are popular alternatives.

  • Exit the chroot environment:
# exit
  • Install the required packages:
# pacstrap /mnt wireless_tools netcfg
  • If you use WPA/WPA2 wireless encryption, install:
# pacstrap /mnt wpa_supplicant wpa_actiond
# pacstrap /mnt zd1211-firmware
  • Chroot back:
# arch-chroot /mnt
  • Create a network profile for your wireless connection in the /etc/network.d directory:
    • Copy and rename a configuration template from /etc/network.d/examples/ to /etc/network.d/mynetwork (mynetwork being an example; the name is not a network setting and does not need to match the wireless network name (SSID)). These templates are adapted to the type of your wireless connection, such as wireless-wep or wireless-wpa. See Netcfg#Configuration for a list of available templates and their usage.
    • Set INTERFACE to the correct wireless interface. This can be checked with iwconfig.
    • Ensure the ESSID and KEY (passkey) are set correctly for wireless connections. Typos in these fields are common errors.
      • Note that WEP string keys (not hex keys) must be specified with a leading s: (e.g. KEY="s:somepasskey").
      • For WPA-Personal, it is possible to specify the passkey in plain text or as an encoded hex.
  • Add net-auto-wireless to the DAEMONS array in /etc/rc.conf:
DAEMONS=(... net-auto-wireless ...)

And specify the desired wireless interface with the WIRELESS_INTERFACE variable in /etc/conf.d/netcfg:


It is also possible to define a list of network profiles that should be automatically connected with the AUTO_PROFILES variable in /etc/conf.d/netcfg. If AUTO_PROFILES is not set, all wireless networks will be tried.

Note: Netcfg also provides other daemons to connect automatically, including both wireless and wired networking. Refer to the netcfg article for more information.

Direct Modem Connection

For xDSL, analog modem (dial-up) and ISDN, see Direct Modem Connection for detailed instructions.

Create an initial ramdisk environment

Configure /etc/mkinitcpio.conf as needed (see mkinitcpio) and create an initial ramdisk with

# mkinitcpio -p linux
Tip: Most users can simply accept the defaults provided in the /etc/mkinitcpio.conf file.

Install and configure the bootloader

Install either Syslinux or Grub (you do not need to install both).

Note: If you have a separate /boot partition, make sure it is mounted before generating the bootloader's configuration file.


Use pacman to install syslinux:

# pacman -S syslinux

Edit /boot/syslinux/syslinux.cfg to point to the right / (root) partition. This step is vital. If it points to the wrong partition arch linux will not boot. Open syslinux.cfg and under LABEL arch find this line:

APPEND root=/dev/sda2 ro

change "sda2" to the designator for your root partition (if you partitioned your disk as we did in the example, your root partition is sda1). Do the same for LABEL archfallback.

Then type the following command to install (-i), set the boot flag (-a) and install the Master Boot Record (MBR) (-m).

# /usr/sbin/syslinux-install_update -iam

For more information on configuring and using syslinux, see Syslinux.


Grub for BIOS:

# pacman -S grub-bios
# grub-install --target=i386-pc --recheck /dev/sda

Or Grub for UEFI:

# pacman -S grub-efi-x86_64
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck

(in rare cases you may need grub-efi-i386 instead)

For most installs BIOS booting from a hard drive you will want to follow these instructions: Install to 440-byte MBR boot code region

To prevent a (harmless) error message at boot time:

# mkdir -p /boot/grub/locale
# cp /usr/share/locale/en\@quot/LC_MESSAGES/ /boot/grub/locale/

Create the grub.cfg file.

# grub-mkconfig -o /boot/grub/grub.cfg

For more information on configuring and using GRUB2, see GRUB2.

Root password

Set the root password with:

# passwd

Unmount the partitions and reboot

Exit from the chroot environment:

# exit

Since the partitions are mounted under /mnt, we use the following command to unmount them.

# umount /mnt/{boot,home,}

Exit the install, and reboot:

# reboot
Tip: Be sure to remove the installation media and change the boot preference in your BIOS (if you changed it to install); otherwise you may boot back into the installation media!

Template:Beginners' Guide navigation