I’ve installed and reinstalled Arch Linux about 4 times now over the past 2-3 months since getting my ThinkPad x220. I’ve been an on and off Linux user for a few years now, but I hardly used the CLI except in cases where I couldn’t use a GUI to do what I needed to do. While setting up my R710 (which I need do a writeup on..) with ESXi and Windows, I’ve had plans in my head to fully convert to Linux for a while. I just didn’t have the balls to fully commit because it would leave my server in a state of chaos for months while I try and figure out how to fully utilize Linux. That’s where Arch came in. It was advertised as a Linux system I could build to meet whatever I needed and also forced the user to dive into the command line to install everything. Seems fitting to learn the inner workings of Linux.
I want to start out the installation guide by saying this is my setup and you shouldn’t follow it step by step because it probably won’t work for you. This is just a guide to see what I did so you can craft your own Arch Linux setup. Read the official installation guide, it’s the most complete guide on Arch you’ll ever read. It’ll go much more in-depth on topics than I ever will. That being said, when I did my first Arch install I had YouTube tutorials up and a bunch of other guides as references while following the guide and wrote notes along the way so I can go back on them to figure out what I did or what went wrong to fix it. It always helps to have references!
1. Dual Booting Windows 10
I use my x220 primarily for school so my setup involves dual booting Windows 10. I hardly use the Win10 partition, but Linux is obviously not widely adopted in the world so it’s comforting to know I have something else to fall back on ‘just in case’. I created a 100GB partition and installed Win10 on it. The rest of my 250GB SSD was for Arch.
Ensure that your ethernet cable is connected. Download the latest Arch ISO and create a bootable USB. You can use dd on Linux or Rufus if you’re on Windows. From your bios settings, select to boot from USB.
3. Verify the Boot Mode
If the output is normal and lists a bunch of UEFI variables, it is booted in UEFI mode.
4. Check if Connected to the Internet
[CTRL+C] to stop pinging
5. Update the System Clock
#timedatectl set-ntp true
6. Partitioning the Disks
mount /dev/sda6 /mnt
List out all the disks available. Make note of which disk you’re going to use – in my case it was /dev/sda. Create a partition for Arch & Swap File using cfdisk. mkfs.ext4 will format whatever partition you want to ext4 file format. Lastly, mount it to /mnt.
7. Swap File
The general ‘rule of thumb’ has been for the swap file to be half of however much ram you had. On most modern systems there is plenty of ram to go around and a swap file isn’t needed, but I included it anyways because why not? Allocating 2gb to swap won’t hurt and better safe than sorry.
mkswap -L "Linux Swap" /dev/sda5
Check if swap has been turned on.
8. Installing Base Packages
pacstrap /mnt base base-devel
9, Mount the EFI Partition
mkdir -p /mnt/boot/efi
fdisk -l /dev/sda
mount /dev/sda2 /mnt/boot/efi
Check which partition the EFI is on, in my case it was ‘2’
10. Generate the fstab file
genfstab -p /mnt >> /mnt/etc/fstab
sudo nano /mnt/etc/fstab
Use nano to check the fstab file just incase of errors
Chroot into your new system!
ln -sf /usr/share/zoneinfo/Canada/Eastern /etc/localtime
Set the time zone, then run hwclock to generate /etc/adjtime
Find ‘en_US.UTF-8 UTF-8’ and uncomment, then generate the locale
sudo nano /etc/hostname
Add your desired hostname.
15. Enable Networking
systemctl enable dhcpcd
16. Root Password
17. Generate initial RAM disk
mkinitcpio -p linux
18. GRUB – Bootloader
Since this system is being dual booted with Windows, we have to install a bootloader. My choice is GRUB.
pacman -Syu grub efibootmgr os-prober
grub-mkconfig -o /boot/grub/grub.cfg
ls -l /boot/efi/EFI/arch/
Generate the grub configuration, then confirm that grub has been installed
19. Create a User Account
useradd -m -g users -s /bin/bash 'nn'
sudo EDITOR=nano visudo
Add a user, in this case it’s ’nn’, create password for user, then add user to sudo. Scroll down to ‘Root’ and press insert, then type…
’nn ALL=(ALL) ALL’
20. Install terminator and sudo
Two basic packages need to be installed before rebooting into the system.
pacman -S terminator sudo
21. Add Windows to GRUB
Once rebooted into Arch, you should login as whatever user you made.
grub-mkconfig -o /boot/grub/grub.cfg
Log in as root, update Arch, then add Windows to GRUB.
22. Intel Microcode
As I have an Intel CPU, I need to enable microcode updates.
sudo pacman -S intel-ucode
sudo grub-mkconfig -o /boot/grub/grub.cfg
Verify that the microcode got updated on boot.
dmesg | grep microcode
And that’s it! You should have a fully functioning Arch install to play around in. This is an extremely barebones setup as it was just my basic installation notes. In future posts, I’ll explain how to setup other packages and my Arch setup more in depth.