[back]
Arch Linux installation steps
This is less of a guide, and more of a log of the steps I've taken to install Arch on few computers. I thought it might help me in the future if I ran into issues with this installation. I also thought it might show others the sequence of steps to get a working installation.

install Arch base archlinux-2022.01.01-x86_64.iso



// boot ISO

// find wlan0 with
iw dev

// find YOUR_NETWORK_SSID_HERE with
iwlist scan | grep ESSID

killall dhcpcd wpa_supplicant
wpa_passphrase YOUR_NETWORK_SSID_HERE 'YOUR_WPA_KEY_HERE' > /etc/wpa_supplicant/YOUR_NETWORK_SSID_HERE.conf
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/YOUR_NETWORK_SSID_HERE.conf
dhcpcd wlan0


timedatectl set-ntp true


fdisk -l

fdisk /dev/sda

p

// delete all partitions
d
d
d
d
d

// add EFI partition
n
+550M // size
y // remove ext2 signature
t
ef // change partition type to EFI

// CTRL+ALT+F2 to switch to second terminal and
// cat /proc/meminfo | grep MemTotal
// to find RAM size, to determine swap size

// add SWAP partition
n
+4G // size
t
82 // change partition type to Linux Swap

// add Linux partition
n
+120G // size
// type is default, 83: Linux




// format EFI partition with FAT32
mkfs.fat -F 32 /dev/sda1

// initialize swap partition
mkswap /dev/sda2

// format root patition
mkfs.ext4 /dev/sda3


// mount root partition
mount /dev/sda3 /mnt
// mount EFI partition
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
// start swap partition
swapon /dev/sda2



// install base package
pacstrap /mnt base linux linux-firmware

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

// change root to mounted root partition
arch-chroot /mnt

// change timezone
ln -sf /usr/share/zoneinfo/Canada/Eastern /etc/localtime

// set hardware clock to UTC
hwclock --systohc



// generate locale
locale-gen

// create locale configuration
touch /etc/locale.conf

// install nano
pacman -S nano

nano /etc/locale.conf
// add line LANG=en_US.UTF-8


// keyboard layout
touch /etc/vconsole.conf
nano /etc/vconsole.conf
// add line KEYMAP=us

// network configuration
touch /etc/hostname
nano /etc/hostname
// add line myhostname



// set root password
passwd


// install GRUB loader
pacman -S grub
pacman -S efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

// reboot

// bad! base installation doesn't have networking tools

// boot again from USB

// perform network bring-up again

arch-chroot /mnt

pacman -S iw
pacman -S wpa_supplicant
pacman -S dhcpcd

// list installed PCI kernel drivers
lspci -k
// adapter device is wlp2s0

killall dhcpcd wpa_supplicant
wpa_passphrase YOUR_NETWORK_SSID_HERE 'YOUR_WPA_KEY_HERE' > /etc/wpa_supplicant/YOUR_NETWORK_SSID_HERE.conf
wpa_supplicant -B -i wlp2s0 -c /etc/wpa_supplicant/YOUR_NETWORK_SSID_HERE.conf
dhcpcd wlp2s0

// works, but must be made automatic

// install network manager netctl
pacman -S netctl

cp /etc/netctl/examples/wireless-wpa /etc/netctl/mynetwork
nano /etc/netctl/mynetwork
Interface=wlp2s0
Connection=wireless
Security=wpa
IP=dhcp
ESSID='YOUR_NETWORK_SSID_HERE'
Key='YOUR_WPA_KEY_HERE'

// enable and connect wifi manually
netctl start mynetwork

// register profile for automatic startup
netctl enable mynetwork

// basically, netctl's configuration is used to invoke wpa_supplicant
// so the way I configured wpa_supplicant manually is no longer useful

// to prevent wifi connection by default, disable via
netctl disable mynetwork
// and only start it on-demand via
netctl start mynetwork

create user and allow sudo


pacman -S sudo
useradd -m myuser
passwd mypassword
EDITOR=nano visudo
// in User privilege specification
add line: myuser ALL=(ALL) ALL

auto-mount Windows shared partition


// add line to fstab:
// UUID=94DF-9821 /mnt/shared vfat rw,relatime,fmask=0,dmask=0,umask=0,codepage=437,iocharset=utf8,shortname=mixed,utf8,errors=remount-ro 0 3
// the "3" at the end is the order in which this partition is automatically fsck'd

install KDE


pacman -S xorg plasma plasma-wayland-session kde-applications
// when prompted for repository, pick core over all else, then extra, then community

systemctl enable sddm.service
shutdown now

// KDE shows no connections, but browser works with already configured wifi (via netctl)
// no need for: systemctl enable NetworkManager.service


configure KDE



// in the UI make login screen based on breeze (the default theme)
// then edit time formatting here to format time on login screen
/usr/shared/sddm/themes/breeze/components/Clock.qml
// add format argument: , "hh:mm ap"

// remove Hibernate button (and maybe others) on Logout screen here:
/usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/logout/Logout.qml

// remove Switch User option from lock screen
/usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/lockscreen/LockScreenUi.qml
// add to button: visible: false

// remove buttons from login screen
// careful: there are two sections of buttons: one for the "click on user face" view
// and one for the "enter user name" view
/usr/shared/sddm/themes/breeze/Main.qml


// clear widgets that come back after a computer restart
// (but first log out user)
~/.config/plasma-org.kde.plasma.desktop-appletsrc
// I removed any references to:
plugin=org.kde.plasma.notes