Winston

Written by Michael Anckaert
Published on
Posted in general

This article details the installation of Winston, my main machine.

Tech Specs

Since Winston is forever, his hardware changes from time to time.

Winston is currently (2021-04-14) a Lenovo Thinkpad T470p, featuring an i7-7700HQ cpu, 32Gb of memory and features a 1Tb NVME2 SSD.

Operating System

Winston runs Arch Linux!

Installation steps

These steps will install Arch Linux on an EFI system, using full disk encryption on a single root partition.

The steps below use the disk /dev/sda, make sure to use the device name of your system and don't blindly use the commands in this file.

Set correct keymap and enable NTP

loadkeys be-latin1
timedatectl set-ntp true

Create partitions (adjust sizes if desired)

Create the following partitions on your systems. You can change the size of the partions if you want / know what you're doing.

1: 512Mb EFI partition (type ef00)

2: 512Mb boot partition (type 8300)

3: 2G swap partition (type 8200)

4: 100% root partition (type 8300)

Setup encrypted disk

If you use another mapping name in the cryptsetup open step then make sure to update the step under Setup grub.

cryptsetup -c aes-xts-plain64 --use-random luksFormat /dev/sda4
cryptsetup open /dev/sda4 arch

Format partitions (adjust device names)

mkfs.vfat -F32 /dev/sda1
mkfs.ext2 /dev/sda2
mkswap /dev/sda3
mkfs.ext4 /dev/mapper/arch
swapon /dev/sda3

Mount all partitions

mount /dev/mapper/arch /mnt
mkdir /mnt/boot
mount /dev/sda2 /mnt/boot
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

Install base system

pacstrap /mnt base linux linux-firmware grub-efi-x86_64 zsh vim git efibootmgr dialog wpa_supplicant networkmanager dhclient

Setup fstab

genfstab -pU /mnt >> /mnt/etc/fstab

chroot

arch-chroot /mnt

Setup timezone and sync hardware lcock

ln -sf /usr/share/zoneinfo/Region/City /etc/localtime

Uncomment en_US.UTF-8 UTF-8 and other needed locales in /etc/locale.gen, and generate them with:

locale-gen

Create the locale.conf(5) file, and set the LANG variable accordingly:

LANG=en_US.UTF-8

If you set the keyboard layout, make the changes persistent in vconsole.conf(5):

KEYMAP=be-latin1

Set hostname (/etc/hostname) and /etc/hosts file

Set root password, add user

passwd
useradd -m -g users -G wheel -s /bin/zsh michael
passwd michael

Configure mkinitcpio with modules needed for the initrd image

vim /etc/mkinitcpio.conf
# Add 'ext4' to MODULES
# Add 'keymap' and 'encrypt' to HOOKS before filesystems, make sure keymap is before encrypt or the keymap specified in /etc/vconsole.conf won't load and you'll be stuck in Qwerty to type your passphrase.

Regenerate initrd image

mkinitcpio -p linux

Setup grub

If you chose another mapping name in the step Setup encrypted disk then make sure to adjust the arch in the GRUB_CMDLINE_LINUX below.

grub-install
# In /etc/default/grub edit the line GRUB_CMDLINE_LINUX to 
# GRUB_CMDLINE_LINUX="cryptdevice=/dev/sdX3:arch:allow-discards" then run:
grub-mkconfig -o /boot/grub/grub.cfg

Exit new system and go into the cd shell

exit

Unmount all partitions

umount -R /mnt
swapoff -a

Reboot into the new system, don't forget to remove the cd/usb

reboot

Post installation steps

These post installation steps will install some of my personally prefered software. You can skip these steps are they aren't required for a fully working system.

Install required software

pacman -S sway terminator man ssh