Arch

Arch Linux is a lightweight and flexible Linux® distribution that tries to Keep It Simple. Arch Linux is used in both the home desktop computers .

The main reason for moving to Arch was to try the latest version of swaywm . After hesitating for a long time, moved to Arch using nwg-iso ↗ . Within few hours of using it, went to the proper Arch using instructions specificially tailored for BTRFS filesystem, the filesystem i’ve been using since Linux Mint days.

All Arch computers have been set up with BTRFS filesystem so that snapshots can be used. Backup tool btrbk and system restoration tool like Snapper are used to manage the snapshots.

Installed arduino-cli package on 2024-04-18 to learn arduino .

my gpg identify has been uploaded from this pc on 2024-07-16

System Maintenance

Since Arch is a rolling-release distribution, regularly updating the system is extremely important. On past observation of btrfs snapshots, change in data can be upto 3.5GB per month.

Upgrading packages

Arch only supports full system upgrades. Partial upgrades are unsupported. Pacman can update all packages on the system with just one command. This could take quite a while depending on how up-to-date the system is. The following command synchronizes the repository databases and updates the system’s packages, excluding “local” packages that are not in the configured repositories:

# pacman -Syu

Handling signing errors

Upgrading the system regularly pacman -Syu prevents most signing errors. If delay is unavoidable and system upgrade gets delayed for an extended period, manually sync the package database and upgrade the archlinux-keyring package before system upgrade:

# pacman -Sy --needed archlinux-keyring && pacman -Su

This command is not considered a partial upgrade since it syncs the package database and upgrades the keyring package first. Both must be processed just before starting system upgrade to ensure signatures of all upgraded packages can be properly verified.

The archlinux-keyring-wkd-sync.service and the associated systemd timer have been created and enabled by default, solving signature from “Some Developer <developer_ email@archlinux.org >” is marginal trust issues (e.g. BBS#278332) without requiring any user intervention, by fetching new signatures of already trusted keys once a week. But the system must be atleast running for the service to work before upgrade command is issued.

Importing keys manually for AUR

Manually download and import the key:

Go to a keyserver website such as keys.openpgp.org or pgp.mit.edu. Search for the key ID E25D679AF73C6D2F. This key will be in PKGBUILD file for aur. Download the key as a file (it will usually be a .asc file). Import the key file using gpg:

prabu@homepc2 ~/Downloads> ls -l *.asc
-rw-r--r-- 1 prabu prabu 3139 Jul 16 20:47 F4FDB18A9937358364B276E9E25D679AF73C6D2F.asc
prabu@homepc2 ~/Downloads> gpg --import F4FDB18A9937358364B276E9E25D679AF73C6D2F.asc
gpg: key E25D679AF73C6D2F: public key "Haden Collins <collinshaden@gmail.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Or alternatively use curl or wget to Download


$curl -o keyfile.asc https://keys.openpgp.org/vks/v1/by-fingerprint/F4FDB18A9937358364B276E9E25D679AF73C6D2F
$wget -O keyfile.asc https://keys.openpgp.org/vks/v1/by-fingerprint/F4FDB18A9937358364B276E9E25D679AF73C6D2F
$gpg --import keyfile.asc
$curl https://keys.openpgp.org/vks/v1/by-fingerprint/F4FDB18A9937358364B276E9E25D679AF73C6D2F | gpg --import

Rescue system

Using btrfs snapshots, a Arch based rescue OS has been configured. Necessary entries have been made to refind.conf so that the rescue OS can be mounted as read only(default) or as read write, when there is a need to fix issues in the main OS.

root@homepc2 /m/test_mnt# mount -o subvol=@rescue /dev/nvme0n1p3 /mnt/test_mnt
root@homepc2 /m/test_mnt# mount -o subvol=@home /dev/nvme0n1p3 /mnt/test_mnt/home
root@homepc2 /m/test_mnt# mount -o subvol=@pkg /dev/nvme0n1p3 /mnt/test_mnt/var/cache/pacman/pkg
root@homepc2 /m/test_mnt# mount -o subvol=@log /dev/nvme0n1p3 /mnt/test_mnt/var/log
root@homepc2 /m/test_mnt# mount /dev/nvme0n1p1 /mnt/test_mnt/boot/efi
root@homepc2 /m/test_mnt# cd /mnt/test_mnt/
root@homepc2 /m/test_mnt# mount -t proc /proc proc/
root@homepc2 /m/test_mnt# mount -t sysfs /sys sys/
root@homepc2 /m/test_mnt# mount --rbind /dev dev/
root@homepc2 /m/test_mnt# mount --rbind /run run/
root@homepc2 /m/test_mnt# cp /etc/resolv.conf etc/resolv.conf
root@homepc2 /m/test_mnt# chroot /mnt/test_mnt/ /bin/bash
[root@homepc2 /]# source /etc/profile
[root@homepc2 /]# source ~/.bashrc
[root@homepc2 /]# export PS1="(chroot) $PS1"
(chroot) [root@homepc2 /]# exit
root@homepc2 /# umount --recursive /mnt/test_mnt
umount: /mnt/test_mnt/run/user/1000: target is busy.

For the above case, a reboot unmounted the chroot without issues.

Package List

Arch homepc2

The below list updated as on 2024-04-20

prabu@homepc2 ~/.c/emacs (master)> pacman -Qe
anki-bin 23.12.1-1
arduino-cli 0.35.2-1
base 3-2
base-devel 1-1
beancount 2.3.6-1
btrbk 0.32.6-1
btrfs-progs 6.8-2
captdriver-git r170.6271924-1
celluloid 0.26-1
cinnamon 6.0.4-1
clipman 1.6.2-1
cmus 2.10.0-4
compsize 1.5-1
cups 1:2.4.7-2
cups-pdf 3.0.1-7
easytag 2.4.3-8
efibootmgr 18-3
emacs-wayland 29.3-2
eog 45.3-1
evince 46.0-1
fava 1.26.2-2
firefox 125.0.1-1
fish 3.7.1-2
foliate 3.1.1-1
foot 1.17.2-1
fzf 0.48.1-1
gcc 13.2.1-5
ghostscript 10.03.0-2
git 2.44.0-1
gnome-calculator 46.0-1
gnome-icon-theme-extras 3.12.0-5
gnome-screenshot 41.0+r25+g45f08f0-1
gnome-terminal 3.52.0-1
google-chrome 123.0.6312.86-1
graphviz 10.0.1-1
greetd 0.9.0-3
grim 1.4.1-1
gvfs-mtp 1.54.0-2
hugo 0.125.1-1
i3blocks 1.5-4
imagemagick 7.1.1.30-2
intel-ucode 20240312-1
iwd 2.17-2
iwgtk 0.9-1
jq 1.7.1-1
libmtp 1.1.21-1
libreoffice-still 7.6.6-2
linux-firmware 20240409.1addd7dc-1
linux-lts 6.6.28-1
mako 1.8.0-1
man-db 2.12.1-1
mbuffer 20240107-1
meson 1.4.0-2
mint-themes 2.1.6-1
mint-y-icons 1.7.2-1
mpv-mpris 1.1-1
nano 7.2-1
nemo 6.0.2-1
nemo-fileroller 6.0.1-1
neofetch 7.1.0-2
network-manager-applet 1.36.0-1
nfs-utils 2.6.4-1
ninja 1.11.1-3
nnn 4.9-1
nordic-darker-standard-buttons-theme 2.2.0-1
nordic-darker-theme 2.2.0-1
nordic-standard-buttons-theme 2.2.0-1
nordic-theme 2.2.0-1
nordzy-icon-theme-custom 1.8.6-1
noto-fonts-emoji 1:2.042-1
nvme-cli 2.8-1
nwg-hello 0.1.6-1
pacman-contrib 1.10.5-1
parted 3.6-1
pipewire 1:1.0.5-1
pipewire-audio 1:1.0.5-1
pipewire-pulse 1:1.0.5-1
playerctl 2.4.1-3
pv 1.8.5-2
python-lsp-server 1.11.0-1
qt6-wayland 6.7.0-1
rclone 1.66.0-1
redshift 1.12-8
refind 0.14.2-1
reflector 2023-1
rsync 3.3.0-1
scdoc 1.11.3-1
seatd 0.8.0-1
slurp 1.5.0-1
snap-pac 3.0.1-2
snapper 0.10.7-1
sudo 1.9.15.p5-1
swappy 1.5.1-1
sway 1:1.9-3
sway-contrib 1.9.0-1
swaybg 1.2.0-1
swayidle 1.8.0-1
swayimg 2.2-1
swaylock 1.7.2-1
terminus-font 4.49.1-6
tofi 0.9.1-2
ttf-caladea 20200113-3
ttf-carlito 20230509-1
ttf-croscore 20220810-2
ttf-font-awesome 6.5.2-1
ttf-hack 3.003-6
ttf-liberation 2.1.5-1
ttf-nerd-fonts-symbols 3.2.1-1
ufw 0.36.2-3
unzip 6.0-20
upd72020x-fw 1:1.0.0-2
usbutils 017-1
wayland-protocols 1.35-1
wget 1.24.5-1
which 2.21-6
wireplumber 0.5.1-2
wl-clipboard 1:2.2.1-1
wlogout 1.1.1-3
wlsunset 0.3.0-2
xed 3.4.5-1
xorg-server 21.1.13-1
xorg-xinit 1.4.2-1
zathura-pdf-poppler 0.3.2-4

© Prabu Anand K 2020-2026