Official Installation Guide

From ArchWiki
Revision as of 18:59, 6 February 2009 by Phrakture (talk | contribs) (Protected "Official Arch Linux Install Guide": Official Docs [edit=sysop:move=sysop])
Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:Article summary heading Template:Article summary wiki (If you are new to Arch) Template:Article summary end


What is Arch Linux?

Arch Linux is an independently developed GNU/Linux distribution. Development is focused on a balance of simplicity, elegance, code-correctness and bleeding edge software. It's lightweight and simple design makes it easy to extend and mold into whatever kind of system you're building.

The Arch system and binary packages are compiled for i686 and x86-64 processors.


Arch Linux, pacman, documentation, and scripts are copyright ©2002-2007 by Judd Vinet, ©2007-2008 by Aaron Griffin and are licensed under the GNU General Public License Version 2.

Installing Arch Linux


Arch Linux is optimized for the i686 processor and therefore will not run on any lower or incompatible generations of x86 CPUs (i386,i486,i586). A Pentium II or AMD Athlon processor or higher is required. Modern VIA C3 processors are also supported. x86-64 architectures are also officially supported.

There is a community-driven project that provides packages for i586 and ppc. See this site for more information.

Before installing Arch Linux, you should decide which installation method you would like to use. Arch Linux provides two different bootable ISO images for a CD-ROM installation. Installing Arch from a USB stick or from within another already installed OS is also supported.

As the preferred method of installation is the flexible CD-ROM based installation, we offer you two variants of the installation medium which only differ in terms of supplied packages. You can instruct the installer to obtain the packages via FTP using any of these images, and all images can also be used as fully functional live cds.

  • The core iso (~300MB) is a live environment which contains a snapshot of the entire /core repository. Packages are divided into 4 categories: BASE, SUPPORT, DEVEL and LIB. RAID/LVM are fully supported; all necessary packages are included within /core. Installing from a medium created with this image results in a completely functional GNU/Linux system, without any frills, expecting to be used from the command line; the Linux kernel, GNU toolchain and a few extra modules and libraries. This image is ideally suited for those who have a rather slow or nonexistent internet connection on the candidate machine, making an FTP install unfeasible. The name of the iso will be "archlinux-i686-2008.xx-x.core.iso", according to your architecture
  • The FTP iso (~175MB) is a live environment, containing no packages at all, but rather pulls in all software over your internet connection. If you have access to a fast and easily setup internet connection, this method may be preferred, since the completed system will be completely up-to-date, without requiring further upgrades from the package versions included on the Core CD. Of course all packages you choose to install have to be downloaded from somewhere, but at least you don't have to update the system directly after installation, saving yourself some hassle. If your network connection is cheap and fast, choose this image.

Template:Box Note

If you do not have a CD-ROM drive attached to your computer, you may refer to this guide to install Arch Linux using a USB stick. If you do not have a USB stick, there are instructions for installing from a hard disk partition, such as a swap partition. If you want to use an existing distribution to install Arch Linux, please follow this guide.

You can also purchase a cd online from OSDisc, shipping nearly world-wide.

Using a dialup PPP connection to gain access to the internet during the install process is now supported. ppp utilities, rp-pppoe and the ISDN userspace utilities are included in the installation media.

Since version 2007.08, isos are true live systems and run like any installed arch system.

Some highlights:

  • pacman is included, to allow installation of any other needed packages for install environment.
  • complete /etc/rc.d/ and /etc/rc.conf support
  • complete Arch network support, including ssh,telnet and portmap services
  • custom config files support: any media with /config directory and files can be copied to /etc/ install environment
  • loading packages as addons during boot: any media with /packages directory including pacman packages can be installed during bootup.
  • links and naim included to be able to communicate over the internet.
  • complete kexec support

If, during the installation process, you find you require a more verbose guide or explanation, you may also find the Arch Linux Beginners Guide helpful.

What You Will Need

  • a working knowledge of GNU/Linux and the candidate machine's hardware
  • Arch Linux installation media (see the mirror list)
  • an i686 or x86-64 processor (PPro, Pentium 2 or higher, Athlon/Duron, etc. Note that AMD K6, Transmeta Crusoe, CyrixIII, and VIA-C3 are NOT supported.)
  • 160 MB RAM
  • some time to kill

Acquiring Arch Linux

You can download Arch Linux from any of the Arch Linux mirrors. Just follow the links into the "iso" directory and choose the version you wish to install. In general, you are advised to download the latest version as this helps avoid any difficulties during your initial update.

Preparing Installation Media

  • Download <mirror>/iso/<your_architecture>/archlinux-<version>.iso (path relative to mirror root)
  • Download <mirror>/iso/<your_architecture>/md5sum-<version>.txt
  • Verify the integrity of the .iso image using md5sum:
 md5sum archlinux-<version>.iso
  • Burn the .iso image to a blank CD-R (this step varies depending on the OS/software you're using). If you want to download the core, ftp or a beta ISO instead, use the appropriate filename, ie: arch-0.8-core.iso instead of arch-0.8.iso, likewise for the md5sum.
  • Write down all your network settings so you can enter them into setup later, if you want to install via FTP:
    • IP Address
    • Subnet Mask
    • Gateway
    • Ethernet Module for your network card (eg.: eepro100, 8139too, ne2k-pci, etc.)

Using the CD-ROM

If you are familiar with the boot process, you may skip this explanation and continue with Common Installation Procedure, which outlines the actual process of installing Arch Linux.

Reboot your computer with the Arch Linux Installation CD in the drive. Make sure your BIOS is configured to boot from your CD-ROM. Refer to your motherboard manual or system manufacturer documentation for details.

At the end of the boot procedure, you shall be dropped into a root shell. At this point you are ready to commence the actual installation.

Common Installation Procedure

Installation Steps:

  1. Loading a non-US Keymap
  2. Running Setup
  3. Configure Network (FTP Install only)
  4. Prepare Hard Drive
    1. Auto-Prepare
    2. Partition Hard Drives
    3. Set Filesystem Mountpoints
  5. Select Packages
  6. Install Packages
  7. Configure System
  8. Install Bootloader
  9. Exit Install

Using the available shell tools, experienced users are also able to prepare the hard drive or any devices needed for the installation before starting the installer. You may simply skip this paragraph if you don't see any immediate need for further manual interaction. Note that the Arch Linux installation media also contains a /arch/quickinst script for experienced users. This script installs the "base" set of packages to a user-specified destination directory. If you are doing an exotic install with fun things like RAID and LVM, or do not want to use the installer at all, you will probably want to use the quickinst script. All the cool kids are doing it.

Login and Loading a non-US Keymap

Login as 'root'. If you have a non-US keyboard layout do:


at the prompt.

Running Setup

Begin the installer script:


After an informational message you will be prompted for the installation method of your choice. If you have a fast internet connection, you might prefer the FTP installation to ensure you get the latest packages instead of using the potentially outdated CD contents.

When navigating the setup script, make sure to select DONE from the submenus after performing each step. This saves any settings you make in preparation for the next step. Further, avoid arbitrary steps throughout the installation process as this can also confuse the installer.

It's actually rather easy to set up your own FTP package mirror or create your own bootable installation CD with the packages you need, making the task of installing several instances of Arch Linux across multiple machines rather simple, while at the same time saving a lot of mirror bandwidth. Make your life and ours easier, and look into these alternatives!

When choosing a CD-ROM or OTHER SOURCE install you will only be able to install packages contained on the CD, which may be quite old, or packages stored on a medium you were able to mount (DVD, USB stick or similar) somewhere in the filesystem tree manually. Of course, it has the advantage of not needing an internet connection, and is therefore the recommended choice for dialup users or those unable or unwilling to download the entire package set via ftp.

Next, you will be presented with the installer menu, listing the necessary steps in the order in which they should be completed.

Virtual consoles 1-6 are active in the live environment. At any point in the install process, you can switch to your 5th virtual console (ALT-F5) to view the shell output from installer script. Use (ALT-F1) to get back to your first console where the installer is running.

Configure Network (FTP Install only)

Configure Network will allow you to install and configure your network device.

A list of all currently available network devices is presented to you. If no ethernet device is available, load the necessary modules manually from another virtual console. Alternatively, you may probe for a network module on the following screen by selecting the Probe command.

When the correct module is loaded, your network card will be listed. Select the ethernet device you wish to configure and you will be given the option to configure your network with DHCP. If you're connected to a DHCP server, hit YES and let the installer do the rest. If you select NO, you will be asked to enter the networking information manually. Either way, your network should be successfully configured, and if you're of the skeptical kind, you may check connectivity using standard tools like ping on another console.

As automations are not perfect, you may not be able to successfully use the installer to set up your network. In these rare cases, set up you network device manually in one of the consoles.

Prepare Hard Drive

Prepare Hard Drive presents a submenu offering two alternatives of preparing the target drive for installation.

The first choice is Auto-Prepare, which will automatically partition your hard drive into a /boot, swap, and root partition, and then create filesystems on all three. These partitions will also be automatically mounted in the proper place. To be exact, this option will create:

  • 32 MB ext2 /boot partition
  • 256 MB swap partition
  • root and /home partition with the remaining space. (Root and /home will share the same file system type if choosing the auto-prepare option).

Actual sizes may vary slightly, due to different hard disk geometries. You can choose this option if you don't know much about hard drive partitions, but be warned:

AUTO-PREPARE WILL ERASE ALL DATA ON THE CHOSEN HARD DRIVE! Read the warning presented by the installer very carefully, and make sure the correct device is about to be partitioned!

A way to verify your choice for a device to partition would be to open another terminal (ALT-F2, Enter) and enter

cfdisk -P s <name of device>

This will display the current partition table of the selected device, which should suffice to identify the hard disk.

If you prefer to do the partitioning manually, use Partition Hard Drives and Set Filesystem Mountpoints to prepare the target media according to your specifications, as outlined below. After successful preparation, choose Return to Main Menu.

Partition Hard Drives

Partition Hard Drives should be skipped if you chose Auto-Prepare already!

Otherwise you should select the disk(s) you want to partition, and you'll be dropped into the cfdisk program where you can freely modify the partitioning information until you [Write] and [Quit].

You will need at least a root partition to continue the installation, and it's helpful to note somewhere which partition you're going to mount where, as you'll be asked exactly that in the next step.

Set Filesystem Mountpoints

Set Filesystem Mountpoints should also be skipped if you chose to Auto-Prepare your hard drive. You should select this option once the partition information is edited to your liking with the previous menu selection, or already existent through whatever other means.

First, select the previously created swap partition from the list, or NONE, if you do not want to use a swap partition. Using a swap file is not directly supported by the installer; Instead choose NONE here, finish the mountpoint associations, and activate a swap file on your desired, formatted partition with the swapon command.

After setting up the swap partition, you will be asked to specify the partition to be used as the root partition. This is mandatory.

The association process is then repeated until you choose DONE from the list, ideally after all listed partitions have been associated with their intended mountpoints. The installer will suggest /boot for all following mountpoints after choosing swap and root.

Each time a partition to mount is specified, you will be asked if you want to create a filesystem on the respective partition. Selecting YES, will prompt you for the filesystem type to create. The partition will then be formatted with the chosen filesystem type, destroying all data in the process.

If additional mountpoints are desired, for example, a separate /boot or /home partition, you will be able to do so. Simply

  • select a partition to mount
  • choose a filesystem (if you want to create one instead of keeping existing data)
  • enter a unique mountpoint for the partition

Repeat these steps until satisfied, then select DONE to create any filesystems and mount the partitions in their respective places. Before the actual formatting is done, the installer will present to you a list of all choices for review. After formatting and mounting all partitions, you may return to the Main Menu and proceed with the next step.

Select Packages

Now we shall select packages to install in our system.

  • Core ISO: Choose CD as source and select the appropriate CD drive if you have more than one.
  • FTP ISO: Select an FTP/HTTP mirror. Note that is throttled to 50KB/s. Note also that some mirrors don't support resuming in case of download failure (e.g.

The installer will always install a basic working system. You are given the option to install some basic development tools, such as GCC, autoconf, automake, make and some other useful packages such as openssh, sudo, iptable and some wifi packages.

If you don't want to install any of the extra packages during the installation, you need to select the one and only package category BASE-DEVEL using the space bar.

The next screen will present you with the selected packages within BASE-DEVEL.

Once you're done selecting the packages you need, leave the selection screen and continue to the next step, Install Packages.

Install Packages

Install Packages will now install the base system and any other packages you selected with resolved dependencies onto your harddisk. Don't be surprised if more packages are installed than you selected! Those packages are dependencies for your selection, and the installer will not explicitly ask for permission to install these extra packages, as it assumes you know what you're doing.

After the package selection, the installer will not check for free space on the target! This seemingly trivial task would eat up considerable time, and therefore the installer simply assumes to have enough free space on the target partition(s). In case it doesn't, the installation will fail in various funny ways. A df -h in another terminal might show that one or more of the targets mounted below /mnt have been filled up, causing mischief. Consider repartitioning or selecting a smaller set of packages.

Error messages and debugging output is echoed to vc/5 (ALT-F5). After the packages have been installed, proceed to the next step, Configure System.

Pacman will ask you whether it should keep the installed packages in cache. As you can delete them later using 'pacman -Scc', selecting 'yes' is recommended.

Configure System

Configure System allows you to edit the configuration files crucial for your newly installed system. Initially you will be asked whether to allow the hwdetect script to try and detect your hardware, and produce some (even more) sensible defaults for your configuration files. Unless you're having problems/crashes, you should let it have its way, and work from what it generates.

Answer the following questions about RAID, LVM and encrypted volumes with Yes, if your root partition resides on a RAID, LVM or encrypted volume, respectively, to automatically add the necessary HOOKS to the mkinitcpio.conf. Otherwise you will get a kernel panic during boot, as your root partition will not be accessible at the time of boot. Most people will answer these questions with No, though, and not waste a second thought about it.

After this automatic preconfiguration you'll be asked for your favourite editor to use for manually fine-tuning the generated configuration files, either VIM or nano. When in doubt, choose nano.

Configuration Files

These are the core configuration files for Arch Linux, to be configured with a text-editor. Only the most basic configuration files are listed here. If you need help configuring a specific service, please read the appropriate manpage or refer to any online documentation you need. In many cases, the Arch Linux Wiki and forums are a rich source for help as well.

Template:Box Note

List of Configuration Files

  • Setup-relevant configuration files:
    • /etc/rc.conf
    • /etc/hosts
    • /etc/fstab
    • /etc/mkinitcpio.conf
    • /etc/modprobe.conf
    • /etc/resolv.conf
    • /etc/locale.gen
    • /boot/grub/menu.lst
    • /etc/lilo.conf
  • Additional configuration files:
    • /etc/conf.d/*
    • /etc/profile


This is the main configuration file for Arch Linux. It allows you to set your keyboard, timezone, hostname, network, daemons to run and modules to load at bootup, profiles, and more. You should read through all the settings in this file and make sure you understand them, and change them where appropriate:

LOCALE This sets your system language, which will be used by all i18n-friendly applications and utilities. See locale.gen below for available options. This setting's default is fine for US English users.

HARDWARECLOCK Either UTC if your BIOS clock is set to UTC, or localtime if your BIOS clock is set to your local time. If you have an OS installed which cannot handle UTC BIOS times correctly, like Windows, choose localtime here, otherwise you should prefer UTC, which makes daylight savings time a non-issue and has a few other positive aspects.

TIMEZONE Specifies your time zone. Possible time zones are the relative path to a zoneinfo file starting from the directory /usr/share/zoneinfo. For example, a german timezone would be Europe/Berlin, which refers to the file /usr/share/zoneinfo/Europe/Berlin. If you don't know the exact name of your timezone file, worry about it later.

KEYMAP Defines the keymap to load with the loadkeys program on bootup. Possible keymaps are found in /usr/share/kbd/keymaps. Please note that this setting is only valid for your TTYs, not any graphical window managers or X! Again, the default is fine for US users.

CONSOLEFONT Defines the console font to load with the setfont program on bootup. Possible fonts are found in /usr/share/kbd/consolefonts.

CONSOLEMAP Defines the console map to load with the setfont program on bootup. Possible maps are found in /usr/share/kbd/consoletrans. You will want to set this to a map suitable for your locale (8859-1 for Latin1, for example) if you're using an utf8 locale above, and use programs that generate 8-bit output. If you're using X11 for everyday work, don't bother, as it only affects the output of GNU/Linux console applications.

USECOLOR Enable (or disable) colorized status messages during boot-up.

MOD_AUTOLOAD If set to "yes", Arch will scan your hardware at bootup and attempt to automatically load the proper modules for your system. This is done with the hwdetect utility.

MOD_BLACKLIST This is an array of modules that you do not want to be loaded at bootup. For example, if you don't want that annoying PC speaker, you could blacklist the pcspkr module.

MODULES In this array you can list the names of modules you want to load during bootup without the need to bind them to a hardware device as in the modprobe.conf. Simply add the name of the module here, and put any options into the modprobe.conf if need be. Prepending a module with a bang ('!') will not load the module during bootup (this is not the same as MOD_BLACKLIST!), thus allowing to "comment out" certain modules if necessary. A benefit of specifying networking modules here is that ethernet cards covered by the listed modules will always be detected in the order the modules are listed. This prevents the dreaded interface confusion where your ethernet hardware is assigned to seemingly random interfaces after each boot. An even better way to handle this is using static interface labels by configuring udev appropriately, though.

USELVM Set to "YES" to run a vgchange during sysinit, thus activating any LVM groups. If you have no idea what this means, don't bother.

HOSTNAME Set this to the hostname of the machine, without the domain part. This is totally your choice, as long as you stick to letters, digits and a few common special characters like the dash. Don't be too creative here, though, and when in doubt, use the default.

INTERFACES Here you define the settings for your networking interfaces. The default lines and the included comments explain the setup well enough. If you use DHCP, 'eth0="dhcp"' should work for you. If you do not use DHCP to configure a device, just keep in mind that the value of the variable (whose name must be equal to the name of the device which is supposed to be configured) equals the line which would be appended to the ifconfig command if you were to configure the device manually in the shell.

ROUTES You can define your own static network routes with arbitrary names here. Look at the example for a default gateway to get the idea. Basically the quoted part is identical to what you'd pass to a manual route add command, therefore reading man route is recommended if you don't know what to write here, or simply leave this alone.

NET_PROFILES Enables certain network profiles at bootup. Network profiles provide a convenient way of managing multiple network configurations, and are intended to replace the standard INTERFACES/ROUTES setup that is still recommended for systems with only one network configuration. If your computer will be participating in various networks at various times (eg, a laptop) then you should take a look at the /etc/network-profiles/ directory to set up some profiles. There is a template file included there that can be used to create new profiles.

DAEMONS This array simply lists the names of those scripts contained in /etc/rc.d/ which are supposed to be started during the boot process, as well as the order in which they start. If a script name is prefixed with a bang (!), it is not executed. If a script is prefixed with an "at" symbol (@), then it will be executed in the background, ie. the startup sequence will not wait for successful completion before continuing. Usually you do not need to change the defaults to get a running system, but you are going to edit this array whenever you install system services like sshd, and want to start these automatically during bootup. This is basically Arch's way of handling what others handle with various symlinks to an init.d directory.


This is where you stick hostname/ip associations of computers on your network. If a hostname isn't known to your DNS, you can add it here to allow proper resolving, or override DNS replies. You usually don't need to change anything here, but you might want to add the hostname and hostname + domain of the local machine to this file, resolving to the IP of your network interface. Some services, postfix for example, will bomb otherwise. If you don't know what you're doing, leave this file alone until you read man hosts.


Your filesystem settings and mountpoints are configured here. The installer should have created the necessary entries for you, but you should look over it and make sure it's right, especially when using an encrypted root device, LVM or RAID.

With the current kernel, an important change has been introduced pertaining to the ATA/IDE subsystem. The new pata (Parallel ATA) drivers replace the legacy IDE subsystem, and one important change is that the naming scheme for IDE disks has changed from the old hda, hdb, etc. to also use device names of the type sda, sdb, etc, just like SCSI and SATA devices do. Because of this, when using the new pata driver in the HOOKS of the /etc/mkinitcpio.conf, remember to use the appropriate device names in your /etc/fstab and bootloader configuration! Alternatively, you could use the /dev/disk/by-uuid/... or /dev/disk/by-label/... representations of your disk drives where available to make absolutely sure you're referring to the right partitions, and save yourself the trouble of sorting out whether you're supposed to use sda or hda. If that's not an option, here's the rundown; If you're using pata instead of ide in the HOOKS array of the /etc/mkinitcpio.conf, you'll be using the sd? names. If not, use the old style hd? names. It is therefore crucial to check the HOOKS array in the /etc/mkinitcpio.conf, to be able to adapt the other files accordingly.


This file allows you to fine-tune the initial ramdisk (also commonly referred to as the "initrd") for your system. The initrd is a gzipped image that is read by the kernel during bootup. The purpose of the initrd is to bootstrap the system to the point where it can access the root filesystem. This means it has to load any modules that are required to "see" things like IDE, SCSI, or SATA drives (or USB/FW, if you are booting off a USB/FW drive). Once the initrd loads the proper modules, either manually or through udev, it passes control to the Arch system and your bootup continues. For this reason, the initrd only needs to contain the modules necessary to access the root filesystem. It does not need to contain every module you would ever want to use. The majority of your everyday modules will be loaded later on by udev, during the init process.

By default, mkinitcpio.conf is configured to provide all known modules for IDE, SCSI, or SATA systems through so-called HOOKS. This means the default initrd should work for almost everybody. The downside to this is that there are many modules loaded that you will not need. This is easily visible by examining your module table after booting up (with the lsmod command). While this doesn't actually hurt anything, some people find it annoying. To cull this list down to only what you actually need, you can edit mkinitcpio.conf and remove the subsystem HOOKS (ie, IDE, SCSI, RAID, USB, etc) that you don't need.

You can customize even further by specifying the exact modules you need in the MODULES array and remove even more of the hooks, but take heed to the comments in the file, as this is a touchy place to go crazy with removing entries!

If you're using RAID or encryption on your root filesystem, then you'll have to tweak the RAID/CRYPT settings near the bottom. See the wiki pages for RAID/LVM, filesystem encryption, and mkinitcpio for more info.

When you're finished tweaking mkinitcpio.conf, you must run mkinitcpio -p kernel26 as root to regenerate the images, unless you're still installing the system; In that case this step will be done automatically after choosing Install Kernel later in the process.

WARNING: If you fail to set up your mkinitcpio.conf correctly, your system will not boot! For this reason, you should be especially careful when tweaking this file.

If you do manage to render your system unbootable, you can try using the fallback image that is installed alongside the stock kernel. A boot option for this is included in the default GRUB and LILO configuration.

Read the warning about the pata transition problems elaborated in the fstab section carefully!


This tells the kernel which modules it needs to load for system devices, and what options to set. For example, to have the kernel load your Realtek 8139 ethernet module when it starts the network (ie. tries to setup eth0), use this line: alias eth0 8139too

The syntax of this file is nearly identical to the old modules.conf scheme, unless you use some of the more exotic options like post-install. Then you should invest a little time into reading man modprobe.conf.

Most people will not need to edit this file.


Use this file to manually setup your nameserver(s) that you want to use. It should basically look like this: search domain.tld nameserver nameserver

Replace domain.tld and the ip addresses with your settings. The so-called search domain specifies the default domain that is appended to unqualified hostnames automatically. By setting this, a ping myhost will effectively become a ping myhost.domain.tld with the above values. These settings usually aren't mighty important, though, and most people should leave them alone for now. If you use DHCP, this file will be replaced with the correct values automatically when networking is started, meaning you can and should happily ignore this file.


This file contains a list of all supported locales and charsets available to you. When choosing a LOCALE in your /etc/rc.conf or when starting a program, it is required to uncomment the respective locale in this file, to make a "compiled" version available to the system, and run the locale-gen command as root to generate all uncommented locales and put them in their place afterwards. You should uncomment all locales you intend to use.

During the installation process, you do not need to run locale-gen manually, this will be taken care of automatically after saving your changes to this file.

By default, all locales are commented out, including the default en_US.utf8 locale referred to in the /etc/rc.conf file. To make your system work smoothly, you must edit this file and uncomment at least the one locale you're using in your rc.conf.


GRUB is the default bootloader for Arch Linux. You should check and modify this file to accommodate your boot setup if you want to use GRUB, otherwise read on about the LILO configuration.

Make sure you read the warning regarding the pata transition elaborated on in the fstab section!

Configuring GRUB is quite easy, the biggest hurdle is that it uses yet another device naming scheme different from /dev; Your hard disks as a whole are referred to as (hd0), (hd1), etc., sequentially numbered in order of appearance on the IDE/SCSI bus, just like the hda, hdb, etc. names in GNU/Linux. The partitions of a disk are referred to with (hd0,0), (hd0,1) and so on, with 0 meaning the first partition. A few conversion examples are included in the default menu.lst to aid your understanding.

Once you grasped the concept of device naming, all you need to do is to choose a nice title for your boot section(s), supply the correct root partition device as a parameter to the root option to have it mounted as / on bootup, and create a kernel line that includes the partition and path where the kernel is located as well as any boot parameters. If using the stock Arch 2.6.x kernel, you'll also need an initrd line that points to the kernel26.img file in your /boot directory. The path you put on your initrd line should be the same as the path to vmlinuz26 that you provide on the kernel line. You should be fine with the defaults, just check whether the partition information is correct in the root and kernel lines, especially in regard to the pata issue!

To create a boot option that loads the bootsector of a different OS, the following example might be helpful. You will probably succeed in starting any Microsoft-based operating system with it, just add this block to the file after any other sections, and modify the partition device accordingly to refer to the partition containing the bootsector of the OS you are intending to boot.

 (1) Other OS
 title My Other OS
 rootnoverify (hd0,1)
 chainloader +1

For advanced configuration of other OSes, please refer to the online GRUB manual.

After checking your bootloader configuration for correctness, you'll be prompted for a partition to install the loader to. Unless you're using yet another boot loader, you should install GRUB to the MBR of the installation disk, which is usually represented by the appropriate device name without a number suffix.


This is the configuration file for the LILO bootloader. Make sure you check this one and get it right if you want to use LILO to boot your system. See LILO documentation for help on this.

Things you should check are the root= lines in the image sections and the boot= line right at the beginning of the file. The root lines specify the device which shall be mounted as the root filesystem on bootup. If you don't know what is supposed to be entered here, change to another terminal and type mount to see a list of all currently mounted drives, and look for the line which displays a device name mounted on /mnt type [...]. The device path at the beginning of this very line should be entered in the root lines of your lilo.conf. Change if necessary, and keep the pata issue in mind!

The boot line should be okay by default in most cases. Unless you have a weird boot manager setup in mind with multiple OSes, the device referenced here should be having the same prefix your root lines have, but not end with a number. For example, a root of /dev/hda3 means you probably want to install LILO into the Master Boot Record of the hard disk, so you would set boot to /dev/hda, which references the disk as a whole. During installation, the boot device must be the current name of the device where you want to write the boot sector to; This may differ from the name of the device after the first boot, thanks to the pata transition! Check carefully what device to write to during the installation stage, for example with the mount command.

To prevent some serious grief, you should make sure you know how to restore the bootsector of your other OSes, for example with Windows's FIXBOOT/FIXMBR tools.

To be on the safe side, you should keep the option lba32 listed. This will prevent some geometry issues from happening.

In some cases, depending on your BIOS, LILO will not run on bootup and spill out an error code infinitely. In most cases you either removed the lba32 option, or your hardware setup is a little special, meaning that maybe your CD-ROM drive is primary master and the hard disk you installed secondary slave. This can very well confuse your BIOS, and thus stop the boot process. To prevent that you can try and make the install drive the primary master on your IDE bus. If you've got a mixed IDE and SCSI system and the problem persists, you'll probably need some experimentation with the disk and bios options of LILO to provide a working mapping; The disk drives in your system are numbered sequentially by your BIOS, starting with 0x80. If you're lucky your SCSI controller tells you which drive has which BIOS ID, but usually you're not. How the drives are effectively numbered is depending on your BIOS, so in the worst case you can only guess until it works. A typical disk line would look like this:

 disk=/dev/hda bios=0x80

The disk option maps a BIOS ID to the disk device known to the system. Note that there is still no guarantee that things will work as other things can be wrong, so do not despair if all your tries fail, but rather try rearranging your hardware in a way that's not totally odd. In this area too much can go wrong and needs special handling to be explained here. In most cases the lba32 option will suffice anyway. Old hard drives will usually need a little more special care until they do as told.

Don't become fidgety when reading this section, I (Dennis) just happened to stumble over this problem when experimenting with a rather odd system, and figured it'd be a good idea to mention this show stopper and workarounds here. You probably won't ever experience this, as you should be using GRUB anyway.

How to recreate a LILO boot sector with only a rescue disk is explained later in this document.


During setup, this is totally unimportant. Consider this as reference for the interested.

Some daemon scripts will have a matching configuration file in this directory that contains some more-or-less useful default values. When a daemon is started, it will first source the settings from its config file within this directory, and then source the /etc/rc.conf. This means you can easily centralize all your daemon configuration options in your /etc/rc.conf simply by setting an appropriate variable value, or split up your configuration over multiple files if you prefer a decentralized approach to this issue. Isn't life great if it's all just simple scripting?


This script is run on each user login to initialize the system. It is kept quite simple under Arch Linux, as most things are. You may wish to edit or customize it to suit your needs.


The CD-ROM includes the latest kernel available at time of release. If you are using the FTP Installation method, the kernel about to be installed will be the current version waiting on your FTP source, and might therefore introduce changes and/or incompatibilities unknown at the present time. This is unlikely, but keep it in mind.

Install Bootloader

Install Bootloader will install a bootloader on your hard drive, either GRUB (recommended) or LILO, depending on your personal preference.

Before installing the bootloader, the setup script will want you to examine the appropriate configuration file to confirm the proper settings.

If you choose to install LILO, the bootloader will be automatically installed according to your settings in the configuration file, whilst GRUB demands the selection of a partition to install the bootloader to. Here you should choose what you would enter as the boot option of LILO, which is usually the entry named /dev/hda, as it refers the master boot record of the first hard disk. Detailed error messages can be found as usual on VC5 (virtual console 5), if anything goes wrong.

If you plan on setting up a multiboot system, you may wish to install the bootloader in your / or /boot partition, and refer to that boot sector from whatever other boot loader you want to reside in the master boot record. (chainloading)

Installing a boot loader in the MBR will relentlessly overwrite any existing bootloader! Make sure you understand the implications of that if you're running a multiboot system, or want to preserve an installed bootloader from another OS!

Exit Install

Exit the Installer, eject the CD, and:


Login as root and add a user as outlined in the User Management section, and set up your Internet Connection.

Congratulations! Welcome to your new Arch Linux base system!


See Official Arch Linux Install Guide Appendix