Arch Linux Installation
UNDER CONSTRUCTION: The document is currently being modified! |
The following tutorial is a collection of notes on how to install the Arch Linux distribution. This guide is mainly suited for use with servers and embedded machines. This tutorial originally started as a YouTube video I had made in early 2012 called How to Install Arch Linux. I then remade this video in late 2012, due to major changes in the installation process, renamed as Arch Linux: System Installation. This tutorial is the spiritual successor to those videos and has been created via the recording notes from said videos.
Following the Arch Linux philosophy, these tutorials are geared at being simple and efficient.
Booting the Installation Media
Place the copy of the Arch Linux image you burned to a disc in your machine and reboot. Enter BIOS if necessary to modify the boot device order in order to boot from the media.
You should be looking at the EFI boot menu, which will auto boot the Arch Linux ISO in a few moments. When your system has finished the boot up process you will be at the console. You may also notice you have been automatically logged into the root account.
For the creation of this tutorial I used the following environment:
VirtualBox 5.1.22 r115126 archlinux-2017.07.01-x86_64.iso |
Pre-Installation
There are a few things that you may choose to go through before you begin your installation. None of these are required, but may be extremely useful.
To start sync the systems time and date.
root ~ # timedatectl status |
Verify Boot Mode
Verify that the motherboard has UEFI enabled. If this outputs a list of variables, the computer has successfully booted into EFI mode.
root ~ # efivar -l |
Keyboard Keymap
If using a non-US keymap, specify which keymap to load.
root ~ # ls /usr/share/kbd/keymaps/ |
Organization is laid out in directories as Machine Type / Keyboard Type, take the filename without the extension and plug it into the command loadkeys.
root ~ # loadkeys de-latin1 |
Networking/Wireless
Make sure the network is connected and internet access is working (for wired network connections, dhcp was loaded on boot).
root ~ # ping archlinux.org |
Performing the installation over wireless requires manual setup. To do so, get the name of the interface, usually wlan0, and then check to see if your wireless interface is activated.
root ~ # iw dev root ~ # ip link show wlan0 |
If the interface is in state DOWN bring it up first.
root ~ # ip link set wlan0 up |
With the interface activated, get a list of all available access points (AP) nearby.
root ~ # iw dev wlan0 scan | less |
Depending on what type of encryption the AP is using for the network, connect with one of the following methods:
- No Encryption
root ~ # iw dev wlan0 connect "YOUR_SSID" |
- WEP
root ~ # iw dev wlan0 connect "YOUR_SSID" key :YOUR_KEY |
- WPA/WPA2
root ~ # wpa_supplicant -i wlan0 -c <(wpa_passphrse "YOUR_SSID" "YOUR_KEY") |
Verify that the wireless network was brought up properly.
root ~ # iw dev wlan0 link |
Installation via SSH
Installing remotely from another computer using SSH can be a lot faster, but requires the use of another machine. Remember, copy and paste work over SSH.
To start ssh in the installation environment, start the openssh service with systemd and then set the root password.
root ~ # systemctl start sshd root ~ # passwd |
Use the ip addr command to find the IP address assigned to the machine. Logging in remotely as the root account with the password setup previously should now be possible.
Hard Drive Setup
If you are installing Arch in conjunction with Mac OS X and/or Windows, partitions will be Apple Core storage and HPFS/NTFS/exFAT respectively. |
Before we can begin the installation we must partition and format the hard drives that will be used in the installation. For this we use the GPT partition scheme. GPT (or GUID Partition Table) came about due to the inherit 32-bit limitation in MBR limiting the maximum addressable storage space to 232 x 512 bytes or 2TB. The operating systems (OS) that cannot boot from GPT are Windows XP and all prior versions. Given that GPT forms part of the UEFI standard it will be the defacto choice if you have UEFI enabled.[1]
Pull up a list of all of the disks in your system.
root ~ # lsblk |
We can safely ignore the ones mounted from /run/archiso as these are the live disc image we booting from.
Having located the drive we are going to be using for Arch, make note of the device node the disks uses.
Partitioning
Filesystem | Mountpoint | Size | Description |
---|---|---|---|
Linux | / | * | root partition |
EFI System | /boot | 200M | boot partition |
For the rest of this guide I will be referring to the hard drive you are installing to as sdX, yours will likely be sda, sdb, or some other such variant. |
Before we begin it is always good practice to zero the disk out.
# dd if=/dev/zero of=/dev/sdX bs=1k count=2048 |
WARNING: This will wipe the entire disk! Skip this step if you are only using part of the disk for Arch Linux. |
With that taken care of we can begin partitioning with sgdisk. Delete the current partition table, although dd should have taken care of this.
# sgdisk -z /dev/sdX |
Write a new GPT partition table with protected MBR.
# sgdisk -o /dev/sdX |
Create our Arch Linux partition (use everything but the last 200MB) and then our EFI System partition with the final 200MB; might as well setup the partition types in the same command.
# sgdisk -n 1:0:-200M /dev/sdX -n 2:-200M:-0 -t 1:8300 -t 2:ef00 /dev/sdX |
For posterity we can set some names to help identify the partitions.
# sgdisk -c 1:"Arch Linux" -c 2:"EFI Boot" /dev/sdX |
Just in case we want to boot in Legacy mode we will also set the legacy boot attribute.
# sgdisk -A 2:set 2 /dev/sdX |
If you are a keen observer, you will notice we have not made use of a swap partition. That is because we will be using a swap file instead.
If sgdisk has been complaining that the linux kernel is caching partition information, you should reboot before continuing.
Formatting/Mounting
With the partitions setup, they now need to be formatted.
For the root filesystem, using metadata_csum will enable metadata checksums for added protection against disk corruption.
# mkfs.ext4 -O metadata_csum /dev/sdX1 |
Format the EFI System partition with FAT32.
# mkfs.fat -F32 /dev/sdX2 |
Mount the partitions, take care of the order.
# mount /dev/sdX1 /mnt # mkdir /mnt/boot # mount /dev/sdX2 /mnt/boot |
Installation
Now that we have the disk(s) setup and mounted in the correct temporary directory we can begin installing Arch Linux and then configure it for its first boot.
Before you install Arch there is one last decision to be made and that is to choose the boot loader you want to use. If this is the only operating system on the computer feel free to choose the Syslinux option as it tends to be simple. If you are attempting to dual boot with another operating system you might want to look into using GRUB instead. In order to keep this article simple I will only be detailing the use of Syslinux, refer to Arch Linux Wiki for details on using GRUB instead.
Begin by installing the base package set and syslinux onto your new system.
# root@archiso ~ # pacstrap -i /mnt base syslinux |
This will install the base system for Arch, other packages will be installed later on after initial boot.
In order to get a working bootable Arch system you will next have to generate an fstab file. I will be using UUIDs given that they have certain advantages. Switch the -U for -L to use labels instead. Be sure to open the file in an editor afterwards to confirm it was generated correctly. If you are using an SSD as one of the disks then add in ,discard to the options of each of the SSD mount points.
# root@archiso ~ # genfstab -U -p /mnt >> /mnt/etc/fstab root@archiso ~ # nano /mnt/etc/fstab |
To proceed, change root into the new system and create the mkinitcpio or the initial RAM disk filesystem.
# root@archiso ~ # arch-chroot /mnt /bin/bash root@archiso ~ # mkinitcpio -p linux |
With that finished install the Syslinux bootloader.
# root@archiso ~ # syslinux-install_update -iam |
Set the root password and then exit out of the chroot environment.
# root@archiso ~ # passwd root@archiso ~ # exit |
Finally you can umount all of the mounted partitions and reboot into your new Arch Linux installation.
# root@archiso ~ # umount /mnt/{boot,home,var} /mnt root@archiso ~ # systemctl reboot |
Configuration
References
- ^ "ArchWiki". Partitioning: Choosing between GPT and MBR. https://wiki.archlinux.org/index.php/Partitioning#Choosing_between_GPT_and_MBR.