October 17, 2016

Arch Linux Installation Guide

I decided to give Arch Linux a try on my main desktop (Core i7-4790K, 16GB RAM, 256GB/1TB SSDs, GTX 1070). After quite a bit of research and information gleaned from multiple wikis, blog posts, and how-tos, I cobbled together a list of steps necessary to install the OS, a base set of core utilities, and the GNOME Desktop Environment (DE). I've been a Linux user since 1996, and anyone with Linux experience will likely find the steps fairly straightforward. It really isn't that difficult, but it does require a certain degree of patience.

Let's get started! Boot the Arch Linux ISO, and follow the steps below. Oh, and a side note -- stop using nano! Seriously, if you really want to learn Linux, teach yourself a real editor like Vi/VIM (or, God forbid, Emacs). If you're using iOS, check out Vimmy. It's a free Vi/VIM reference app I wrote that will be quite useful to you.

Check network connectivity and update the system clock:

ping google.com
timedatectl set-ntp true

Partition the drive with your tool of choice, normally as follows. Obviously, you may have to adjust this for your particular configuration:

- /dev/sda1  = EFI (512MB, FAT32)
- /dev/sda2  = Swap (dependent on RAM)
- /dev/sda3  = Root (remaining space, Ext4)

Format partitions and turn on swap:

mkfs.fat -F32 -nEFI /dev/sda1

mkswap /dev/sda2
swapon /dev/sda2

mkfs.ext4 –LRoot /dev/sda3

Mount partitions:

The order of these steps is critical. Mount the root file system first, then create /boot, then mount /boot.

mount /dev/sda3 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Find closest mirrors:

cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.backup
rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist

Install base packages:

pacstrap -i /mnt base base-devel

Generate fstab:

genfstab -U /mnt > /mnt/etc/fstab

Change root into new system:

arch-chroot /mnt /bin/bash

Install and configure boot loader and Intel ucode:

bootctl --path=/boot install
pacman –S intel-ucode

Obtain UUID of root file system:

blkid –s PARTUUID –o value /dev/sda3 > /boot/loader/entries/arch.conf

Now edit the new arch.conf you created above to look like this:

vi /boot/loader/entries/arch.conf

title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=PARTUUID=[UUID you wrote to the file in above step] rw

Set language and time zone:

vi /etc/locale.gen

Uncomment the following line:


… then run the following commands:

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

Run “tzselect” and create a symlink to the correct timezone:

ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

Sync hardware clock to UTC:

hwclock --systohc –-utc

Change hostname:

echo “myhostname” > /etc/hostname

Change root password and create user accounts:

useradd -m -G wheel,users -s /bin/bash username-here
passwd username-here

Enable Multilib and AUR:

vi /etc/pacman.conf

Uncomment the lines in the [multilib] section.
Then, add the following to the bottom of the file to enable AUR:

SigLevel = Never
Server = http://repo.archlinux.fr/$arch

Run pacman –Sy to process the changes…

Install YAOURT to pull from Arch User Repository (AUR):

pacman -S yaourt

Install GNOME and GNOME Software:

pacman -S gnome gnome-extra gnome-tweak-tool gnome-software gnome-shell-extensions

Install WPA Supplicant and Network Manager:

pacman -S iw wpa_supplicant dialog network-manager-applet networkmanager

Set GNOME Display Manager (GDM) and Network Manager to start at boot:

systemctl enable gdm.service
systemctl enable NetworkManager.service

Install NVIDIA proprietary drivers (with 32-bit support):

pacman –S nvidia nvidia-utils nvidia-libgl lib32-nvidia-libgl lib32-nvidia-utils

Install Bash Completion:

pacman -S bash-completion

Configure static IP address (optional):

Copy the /etc/netctl/examples/ethernet-static example profile to /etc/netctl and modify Interface, Address, Gateway and DNS as needed.

Exit chroot, Unmount, and reboot:

umount -R /mnt

Once the system is up, you'll notice the default fonts and font rendering are pretty poor. You can use the steps below to install additional recommended fonts, as well as the Infinality font rendering engine.

Add additional fonts:

pacman -S ttf-bitstream-vera ttf-inconsolata ttf-ubuntu-font-family ttf-dejavu ttf-freefont ttf-linux-libertine ttf-liberation

Disable bitmap fonts used as fallback:

ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d

Install Infinality to improve font rendering:

vi /etc/pacman.conf

Server = http://bohoomil.com/repo/$arch

Server = http://bohoomil.com/repo/multilib/$arch

Server = http://bohoomil.com/repo/fonts

pacman-key -r 962DDE58
pacman-key --lsign-key 962DDE58

pacman -Syy infinality-bundle infinality-bundle-multilib


At this point, the basic install of the OS is complete. The steps below involve installation of additional recommended packages from AUR, but they are completely optional.

[Optional AUR Packages]

Install Numix Circle Icons and Adapta Theme:

yaourt numix-circle-icon-theme-git
yaourt adapta-gtk-theme

Install Google Chrome, Dropbox, and Sublime Text 3:

yaourt google-chrome
yaourt dropbox
yaourt nautilus-dropbox
yaourt sublime-text-dev

To update all packages, including AUR:

yaourt -Syua

To update all packages, excluding AUR:

pacman –Syu

No comments:

Post a Comment