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