User:Iaw4

From ArchWiki

Iaw4 Alternative Installation Guide

This document is a fork of the official Installation_guide for Arch Linux. It Is shorter than the Beginners' guide, but more detailed than the Installation_guide. To "fork" it further, select "edit" or "source" (not html source, but wiki source) and use copy-and-paste.

Before installing, you may want to look at the FAQ. If looking for a detailed, highly-explanatory, installation guide see the Beginners' guide, or Getting and installing Arch for specific installation cases.

Most help can be found on the wiki or through the various programs' man pages. For interactive help, the IRC channel and the forums are also available.


Download and Bootable Media Creation

Download the most recent Arch Linux installation ISO image from the Arch Linux download page. You probably want an image named something like archlinux-yyyy.mm.dd-dual.iso, around 500MB in size. This is a hybrid image that allows booting into an x86_64 or i686 (32-bit) live system, depending on the system's architecture and the user's choice. Make sure to check the md5 or sha hash sums of the image you just downloaded first. A corrupt image will lead to undiagnosable installation errors and significant hair loss. Repeat: once downloaded, verify the integrity of the image against the PGP signature

# pacman-key -v archlinux-yyyy.mm.dd-dual.iso.sig

or look at the checksums (e.g. md5sum archlinux-yyyy.mm.dd-dual.iso) which are provided on the download page.

Note that the arch packages themselves are not included in the image. Instead, the installation process will retrieve packages from a remote repository. Therefore a working internet connection will be required after the installation ISO boot to install arch on your disk. (You cannot install this on your isolated cabin computer, unlike the iso image of most other linux distros. On the plus side, this means that your initial install will be up to date.) A good part of the 500MB (or so) of the installation ISO image is taken up by the smarts to automate the connection to the internet. Warning: if the install image fails to boot with a working net connection, then you may have hardware that is not easily supported by or made to work under arch.

After downloading the image, you need to burn it to a medium that is bootable. This used to be CD's in the past, but nowadays almost everyone writes iso images to written to a USB stick instead. (Virtual machine emulators, like vmware or qemu, can boot directly from iso files.)

In brief, first unmount your usb stick (/dev/sd[usb]) and then write the image to the medium. On a linux host, you should be able to use

# umount /dev/sd[usb]
# dd if=archlinux-yyyy.mm.dd-dual.iso of=/dev/sd[usb]

where you probably have to replace both the if and the of appropriately. On a Mac OSX host, you require another interim step

# hdiutil convert -format UDRW -o ~/tmp/archlinux.img archlinux-yyyy.mm.dd-dual.iso
# diskutil unmountDisk /dev/disk[usb]
# dd if=archlinux.img of=/dev/rdisk[usb] bs=1m

(If you run windows, it's your own fault.) If you find the above instructions too difficult, you should probably start with an easier linux distribution (like ubuntu, debian, or fedora), learn how to use its command line, and then return to arch. Arch is leaner, meaner, and better than those distros, but it assumes a lot more linux knowledge.


Installation After Booting The Installation Medium

After booting the installation image, the following steps are required to initialize the installation process.


Set the keyboard layout

The default keyboard layout is US. Alternative keyboard layouts can be loaded with loadkeys keymap_file: keymap files can be found in /usr/share/kbd/keymaps/ (path and file extension can be omitted).


Partition, Format, and Mount the Disk

See Partitioning for details; some special partitions may be needed, see EFI System Partition and GRUB BIOS boot partition. If you want to create any stacked block devices for LVM, disk encryption or RAID, do it now. In the remainder of this guide, we will assume that you are installing to the disk drive enumerated as sdx.

The below instructions assume you want one main root partition. An alternative to the single root partition is to have a separate /home/ partition, and to link /usr/local to /home/local. This makes it easier to update the operating system without touching the user files. However, this is never perfect, because a good number of files in /etc will have to be edited.

Assuming you have a 64-bit CPU, you have two main choices:

1. EFI+GPT (newer, safer, and better) or

2. BIOS+MBR (older and less trouble).

EFI was adopted in 2005, and should work on all modern PCs. [However, under qemu, the combination is still somewhat flaky (as of 2015-03).] You may have to enable EFI in your computer BIOS (startup screen). (GPT is a formatting scheme for the hard drive that you will set from the Arch installation disk.) Different combinations of the two (e.g., EFI+MBR) are asking for trouble.

See File systems. You do not need a swap partition. Swap partitions have been obsolete for at least 20 years. If need be, spend $20 on 2GB of RAM or create a swapfile later.

EFI+GPT Partition Setup Recommendation

To partition the disk with EFI+GPT, use gdisk on the device (not the partition).

# gdisk /dev/sdx

Unlike BIOS, EFI requires a dedicated boot partition. If you use EFI, then create the first EFI boot partition with the EFI system id partition type EF00 and at least 512MB as /dev/sdx1, and the second root partition with the default linux partition id 8300 as /dev/sdx2.

The most common EFI setup is one boot partition (which must be vfat with partition id EF00) and one linux partition. For example,

# mkfs.vfat /dev/sdx1
# mkfs.ext4 /dev/sdx2

Mount the root partition on /mnt. After that, create directories for and mount any other partitions (/mnt/boot, /mnt/home, ...) if you want them to be detected later by genfstab.

# mount /dev/sdx2 /mnt
# mkdir /mnt/boot
# mount /dev/sdx1 /mnt/boot

BIOS+MBR Partition Setup Recommendation

To partition the disk with BIOS+MBR, use fdisk. It is often most convenient to assign the entire drive to one big partition. Preferably use only primary (not logical) partitions. Logical partitions were an awful kludge to allow more than four partitions, and if you ever accidentally lose your MBR (unlike GPT, there is no secondary backup), finding the partition start becomes really, really difficult. For the BIOS+MBR way of life, just

 # fdisk /dev/sdx
 # mkfs.ext4 /dev/sdx1
 # mount /dev/sdx1 /mnt

Connect to the Internet

The installer iso image is pretty smart about its internet connectivity. On most computers and network, networking will work out of the box. Internet service via DHCP discovery is enabled on boot for supported wired devices; read more at Network configuration. For supported wireless devices run wifi-menu to set up the network; read more with Wireless network configuration. Few networks today require a static IP or further network management tools, but if you do, then you can stop the DHCP discovery service with systemctl stop dhcpcd.service, and read more Netctl. To check that your net connection is live, use

# ip a

ip is a new tool that replaces the more familiar ifconfig and iwconfig. Also, try

# ping www.google.com

However, although the install iso is smart about its internet connectivity, your newly created arch system will not be. More often than not, you will have to make sure your Internet connection will also work on your new system before you reboot. This will be explained below.


Set a Mirror

Although the original installation guide suggests setting the mirror already here pacman -Syyu, this has given me a lot of trouble. I would suggest relying on arch for the mirrors at this point.


Install the base packages

Use the pacstrap(8) script to install the base group:

# pacstrap /mnt base

Other packages or groups can be installed by appending their names to the above command (space seperated), possibly including the boot loader.


Configure the system (fstab, hostname, locale)

Generate an fstab file (use -U or -L to define by UUID or labels):

# genfstab -p /mnt >> /mnt/etc/fstab

Set the hostname:

# echo computer_name > /mnt/etc/hostname

Change root into the new system:

# arch-chroot /mnt

Set the time zone:

# ln -sf /usr/share/zoneinfo/zone/subzone /etc/localtime

For example

# ln -sf /usr/share/zoneinfo/US/Pacific-New /etc/localtime

If you need any further locales, uncomment the needed locales in /etc/locale.gen.

Next, generate locales with

# locale-gen

Set locale preferences in /etc/locale.conf and possibly $HOME/.config/locale.conf:

# echo LANG=en_US.UTF-8 > /etc/locale.conf

Make sure you do not misspell this. Errors are not reported at this stage, but may cause errors in the future that will be difficult to debug (e.g., in mkinitcpio).

If you want, you can add console keymap and font preferences in /etc/vconsole.conf. This file is read by systemd on startup, and helps create and cusomize pty's. If you don't know what this means, you probably don't care.

Create Networking for your new Arch system

Configure the network for the newly installed environment: see Network configuration and Wireless network configuration. The wifi-menu on the installation iso is great, but has not yet been installed on your new system. If you want the same easy wifi-menu when you boot your system, install it

# pacman -Si netcfg dialog wpa_supplicant ifplugd wpa_actiond wireless_tools ifenslave bridge-utils

([2015-04-03: netcfg has disappeared]

To have networking try to come up automatically at boot time, execute

# systemctl enable dhcpcd.service

Create an Initial RAM Disk

Configure /etc/mkinitcpio.conf if additional features are needed. Create the new initial RAM disk (needed for the linux kernel to get going before systemd takes over) with

# mkinitcpio -p linux

Ignore the error about the aic94xx driver not being found. Some other drivers may also not be found.

Root Password

Set the root password:

# passwd


Install a bootloader

See Boot loaders for the available choices and configuration.

For the less common but more modern GPT+EFI setup, if all you want to do is to boot this partition, you can use the EFI Stub manager

# pacman -S efibootmgr
# efibootmgr -d /dev/sdX -p 1 -c -L "Arch Linux" -l /vmlinuz-linux -u "root=/dev/sdx2 rw initrd=/initramfs-linux.img"

For the most common MBR+BIOS setups, the following grub installation should work

# pacman -S grub
# grub-install --target=i386-pc --recheck --debug /dev/sdx
# grub-mkconfig -o /boot/grub/grub.cfg

Unfortunately, short of a direct error message, the only way to learn whether the boot manager installation has succeeded is to reboot and pray. (Needless Editorial: This and the unwillingness of the kernel to search partitions when /etc/fstab is wrong have caused no pain on end to newbies and experienced admins alike. In a sane world, all file systems and partitions would have the first sector (4KB) reserved for a set of magic bytes that tells the OS that they want to be bootable, and at what offset the kernel starts.)

If you have difficulties in some cases, it helps to install a common linux distribution, such as ubuntu, on a third partition, and let ubuntu create the boot manager. It is usually a lot easier to modify the boot manager than to install it the first time. If nothing else, failure will be less catastrophic.


Reboot

Exit the chroot environment by typing exit or pressing Ctrl+D.

Optionally manually unmount all the partitions with umount -R /mnt: this allows noticing any "busy" partitions, and finding the cause with fuser.

Finally, restart the machine by typing reboot: any partitions still mounted will be automatically unmounted by systemd. Remember to remove the installation media and then login into the new system with the root account.


Post-installation

This is IMHO where you may want to choose better pacman mirrors. Edit /etc/pacman.d/mirrorlist and select a download mirror(s). Regional mirrors usually work best; however, other criteria may be necessary to discern, read more on Mirrors. This copy of the mirrorlist file will later be copied on the new system by pacstrap, so it is worth getting it right. However, this has tripped up some installations.

See General recommendations for system management directions and post-installation tutorials (Ilike setting up a graphical user interface, sound or a touchpad).

For a list of applications that may be of interest, see List of applications. I recommend at least the following:

# pacman -S mlocate make gdisk syslog-ng openssh rsync sudo

(Uncomment the relevant line in /etc/sudors.) Most users will also want their computers to update the time from the net

# pacman -S ntp
# systemctl enable ntpd.service

At this point, you should probably add a user account with

# useradd -m -d /home/me me

Give it a password, add the user to the wheel group, and disable the root account.

Next, you may want to install a better text editor (like emacs-nox) and a GUI (such as gnome or kde or mint).

Alternative Ways to Get Arch Running

A Virtual Machine Installed Image

The easiest way to try out an Arch install is to try it in a virtual machine. For a virtual machine image that results from the above instructions (using BIOS+MBR), go to [1]. It contains the image and md5 hash of a vmware virtual machine, created in mid-March 2015.

After you have downloaded it, first check the md5 (d66dd0e6daf3ca53a0525cd5efbb7bb3), then boot the virtual machine in vmware player (or vmware fusion on OSX).

Login as root (without a password), set a password, then login as me (without a password), and set another password.

Again, make sure to change the password on the root and me accounts. openssh is installed, and you do not want anyone over the Internet to invade you.

Update the image to the current Arch,

 # pacman -Syu

Enjoy!

Installation by GUI

Arch offers no arch GUI installer, as there are on ubuntu and most other linux distros. There are other distributions that build on arch and some have GUI installers. However, if you use them, then you are deemed not running Arch, but their distribution.


Installation by Script

Here I need to add some scripts that execute all of the above steps automatically. I plan on creating a script one of these days. If you have one, please email it to me.