I installed Arch from the 2019-02 image on 2019.03.10. I followed the official installation guide on the Arch wiki. I’m writing down my observations because I tripped up in a few places, because I learned a lot, and because I will inevitably refer to this when I install it again. ;)
I made the live USB using Etcher, verified the file integrity, and booted in (for future reference: my laptop’s boot menu launches on F12; it’s a Lenovo Ideapad).
- Verify the boot mode – I have a UEFI motherboard, so I ran
# ls /sys/firmware/efi/efivars
. - Connect to wifi using:
# wifi-menu
- Enable NTP:
timedatectl set-ntp true
- Previously, I had an Ubuntu install on this computer, so I didn’t have to
partition anything; the existing partitions were good enough.
- Output of
lsblk
at the time of writing, for reference:
- Output of
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /efi
└─sda2 8:2 0 931G 0 part /
sr0 11:0 1 1024M 0 rom
- I had a partition for EFI and one for the Linux filesystem. I chose to go with an ext4 filesystem for this install.
# mount /dev/sda2 /mnt
# mkdir /mnt/efi
# mount /dev/sda1 /mnt/efi
- Refresh keys. (I didn’t use the latest image so I needed this step.)
# pacman -S archlinux-keyring
# pacman-key --refresh-keys
- Reorder mirrors using
reflector
:
# pacman -S reflector
# reflector --verbose --sort rate --protocol https --fastest 50 --number 100 --save /etc/pacman.d/mirrorlist
- Then, using pacstrap, run:
# pacstrap /mnt base base-devel grub efibootmgr
- `base-devel` contains utilities like `sudo` which we need.
- `grub` and `efibootmgr` are required for booting -- don't forget to
install these just because the installation guide doesn't explicitly
specify it!
- Make fstab
- Chroot
- Configure GRUB. Note that /mnt is equivalent to / in this environment, so /mnt/efi becomes /efi.
# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
# grub-mkconfig -o /boot/grub/grub.cfg
The rest is straightforward and can be done following the official installation guide.
I set up my user following the User Management section of the General recommendations; installed display and touchpad drivers; installed all my dotfiles from Ubuntu (set up Oh My Zsh and Spaceship prompt, installed my Vim plugins); set up X and AwesomeWM.
It took me around 45 minutes to an hour to install Arch, then a couple more hours to get everything set up to my liking so that I could be somewhat productive.
Packages I installed
zsh vim \
iw dialog wpa_supplicant \
reflector \
xorg awesome \
openssh \
linux-headers linux-lts linux-lts-headers \
firefox wget ufw \
ristretto vlc pulseaudio pulseaudio-alsa \
xclip scrot cups sane redshift \
htop rsync git mercurial \
grub efibootmgr
zsh
andvim
, because once you get used to them you can’t go back tobash
andnano
iw
,dialog
, andwpa_supplicant
forwifi-menu
reflector
for updating mirrors as described above; I used it a fair bit travelling this summer too.xorg
display server- Awesome window manager instead of a desktop environment
openssh
for SSHlinux-headers
,linux-lts
,linux-lts-headers
, andbase-devel
because they were recommended to me. I don’t think I’d installlinux-lts*
if I were to install now.firefox
for obvious reasonswget
because I love the mirror option (wget -m some.website
)ufw
for configuring iptables rulesristretto
image viewervlc
pulseaudio
,pulseaudio-alsa
for soundxclip
because I like managing the clipboard from the commandlinescrot
for screenshotscups
for printingsane
for scanningredshift
, a red light filterhtop
because I use it often and because I read somewhere that it’s very satisfying to openhtop
after installing Arch and be able to understand everything (spoiler: it’s the best)rsync
– this will change your life if you don’t already use it. In short, it saves time by syncing the differences between files instead of copying/overwriting whole files. But it’s a very flexible tool and worth learning; I’d encourage you to read a good tutorial on it, such as this one from DigitalOcean.- Git and Mercurial for version control.
Where I stumbled:
- Couldn’t use
pacstrap
because I was using an older image – had to refresh keys - Didn’t know that lines after
exec ...
are ignored in.xinitrc
, so wasted some time reinstalling X. - Forgot to install GRUB.
- Forgot to generate GRUB config.
It was a productive afternoon; it was challenging, and I enjoyed it! Two months later, I’ve made many more tweaks and changes, which I’ll detail in a future post. In my experience, it has been a tremendous improvement over Ubuntu, partly because it only has things that I’ve set up and partly because I’m the one who set it up. And there’s a lot to love about being on a rolling-release distro. I couldn’t be happier with my OS :)