Skip to content

Instantly share code, notes, and snippets.

@callunaborealis
Last active October 3, 2022 15:57
Show Gist options
  • Select an option

  • Save callunaborealis/3f68dd35637711d1e96ac1eb8e20b449 to your computer and use it in GitHub Desktop.

Select an option

Save callunaborealis/3f68dd35637711d1e96ac1eb8e20b449 to your computer and use it in GitHub Desktop.
Personal notes to set up Arch Linux

Downloading and Installing

  • Download Arch Linux distro, recommended via a torrent to prevent interception (I might be paranoid though)
Downloads
> archlinux-2022.04.05-x86_64.iso
  • Verify the install via GPG. Install via your package manager if need be
Downloads
> archlinux-2022.04.05-x86_64.iso
> archlinux-2022.04.05-x86_64.iso.sig # Signature file
$ gpg --keyserver-options auto-key-retrieve --verify archlinux-version-x86_64.iso.sig

gpg: assuming signed data in 'archlinux-2022.04.05-x86_64.iso'
gpg: Signature made Wed Apr  6 00:05:57 2022 +08
gpg:                using RSA key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
gpg:                issuer "pierre@archlinux.de"
gpg: Good signature from "Pierre Schmitz <pierre@archlinux.de>" [unknown]
gpg: WARNING: The key\'s User ID is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 4AA4 767B BC9C 4B1D 18AE  28B7 7F2D 434B 9741 E8AC
# macOS
df -h # Find disk name / partition name to write bootable drive
sudo dd if=/Users/calluna/Downloads/archlinux-2022.04.05-x86_64.iso of=/dev/disk2 bs=1m
  • Use CTRL+T to check
  • Now plug in your USB drive via any USB slot (not BIOS), and via your BIOS boot loader, load Arch Linux

Setting up Arch Linux on an old MacBook Pro 13"

Downloading and installing

See downloading_installing.md.

Booting up the live environment

  • Download rEFInd. Unzip it into a spare removable drive.
  • CTRL+R to load up the Recovery Partition
  • Open Terminal
csrutil disable
# Restart your computer FIRST before proceeding. Then reload the Recovery Partition terminal and return here
cd /Volumes/your_spare_removable_drive/refind-XXX
./refind-install
csrutil enable
  • Now you can restart the conputer
  • When you start your MacBook Pro for the first time, you'll load rEFInd on power on. However, the option to load the Recovery Partition directly does not seem to work as it always return a "no entry symbol" when selected. The only way to select the Recovery Partition is to hold CTRL+R on power on.

See https://www.ianmaddaus.com/post/refind/#automaticEnableSIP

  • Use Disk Utility to clear out the partition. Just one big empty space after the macOS related partitions. We will be changing this again later.

  • Start up EFI Boot on the removable drive

  • Set the timezone, time etc

  • Follow https://wiki.archlinux.org/title/mac#Option_1:_EFI to use cgdisk /dev/sda (Not /dev/sdaXX) to format the already created partitions. Buffer the first partition adjacent to the OSX partition by 128MB (by having first sector as +128M) (due to Apple's partition policy). See https://wiki.archlinux.org/title/mac#Option_1:_EFI

  • 128.0MB Free Space, 20.0 GiB Linux x86-64 root (/) "root" and 235.9 GiB Linux x86-64 /usr "home"

  • Proceed with formatting the swap via mkswap and root/home ext4 drives as per normal

  • swapon for the swap partition, mount root onto /mnt

  • pacstrap /mnt base linux linux-firmware

  • arch-chroot /mnt to enter your newly create Arch partition for the first time

  • vim /etc/locale.gen and uncomment all the language codes required. THEN run locale-gen. As not doing so will at least result in a perl-related locale warning when installing vim. If you deleted / modified locale.gen by mistake, deleting the corrupted locale.gen and reinstalling glibc will restore the file.

  • Install other essential packages, like vim, git, networkmanager, iw, iwd, wpa_supplicant, dhcp (for dynamic IP address unless you want to assign a static IP in the network yourself)

  • Reboot the system and re-enter the portable EFI Boot when done

  • Set up the Boot Loader as recommended for Macs: https://wiki.archlinux.org/title/mac#Using_the_native_Apple_boot_loader_with_systemd-boot_(Recommended). I started with an easier approach first

  • If this does not work, reinstall refind, which worked in my case.

  • Create a new user as root

useradd -m you # Creates a "/home/you" account. You can replace you with whatever else.
passwd you
logout # Once password is confirmed

# Log in as your new home/you account

The account is locked due to 3 failed logins? Use faillock --user you to see the length of the lockout, then faillock --user you --reset to reset it.

  • Connect to the network. This is assuming you installed all the necessary network packages before switching to the actual Arch partition.

  • ip link to list all the network interfaces

  • ip link set <interface> up to activate the network interface (could be en / wlan)

  • iw dev <wlan_interface> scan | grep "SSD" to see all the wireless LAN access points available near your machine

  • lscpi -vnn -d 14e4 to detect Broadcom controllers. I had the BCM4331, so I installed broadcom-wl via AUR (although b43-firmware is also ok)

  • Add your user account you as a superuser group "sudo" so that yay can be built and installed next.

# As root...
pacman -S sudo

usermod -aG wheel you # Add your user to the existing "wheel" group

# Alternatively if you prefer "sudo"
groupadd sudo # Adds the sudo group. You can forgo this step to use the existing wheel group
usermod -aG sudo you

# Opens the sudo configuration
EDITOR=vim visudo

# Under the line "Uncomment to allow members of the group wheel to execute any command...
# Uncomment the line (the percentage is crucial to distinguish between a user and a group)
%wheel ALL=(ALL:ALL) ALL
# Or if you chose sudo earlier...
%sudo  ALL=(ALL:ALL) ALL

  • Reboot and login again as your new user account before proceeding.

  • Now install yay as your you account. You might need to do a sudo pacman -S --nneeded base-devel before proceeding, especially if an error regarding missing packages is thrown when doing a makepkg -si inside yay-git

git clone https://aur.archlinux.org/yay-git.git
sudo pacman -S --nneeded base-devel # Optional if you face problems with the next step
makepkg -si

# Just for reference, no need to install this package
yay -Syu # Update
yay -S gparted # Install a package
yay -Rns gparted # Remove a package

See https://low-orbit.net/arch-linux-how-to-install-yay

  • I also decided to go with Budgie as it is reportedly Gnome 2, but lightweight and productive.

Budgie is for Linux users who like the Gnome desktop look but can do without the bloat. It actually looks simpler than Gnome as it’s designed to help the users focus more on work. The main Budgie menu is both mouse and keyboard friendly. The system is easily configured using its all-in-one center called Raven. Budgie is simple and attractive and also lightweight as most of those in this list of best desktop environments for Arch. So, if you have an old system you want to revive and get work done, Budgie would be a nice desktop environment for Arch or any other distro that supports it.

  • Packages: pacman -S budgie-desktop gnome gnome-extra gdm gnome-control-center gnome-terminal. gnome-terminal is extremely important as there is no way without an external boot drive to install it without a terminal
  • systemctl enable gdm.service: This will enable GDM on arch boot with the Budgie Desktop environment
  • Other useful packages for Budgie
  • Everything in the Mac section for the keyboard lights
  • libinput-gestures: https://github.com/bulletmark/libinput-gestures

References

# root@archiso 

fdisk -l # List disk drives

mount /dev/XXXXX /mnt # Mount Linux root
mount /dev/XXXXX /mnt/efi # Mount Windows EFI Boot
mount /dev/XXXXX /mnt/efi # Mount XBOOTLDR (Linux extended boot)
swapon /dev/XXXX # Mount swap drives if any

arch-chroot /mnt
bootctl --esp-path=/efi --booth-path=/boot install # Generate EFI boot entry

Re-installing Arch onto a nvidia GPU and AMD CPU high end workstation PC

Uninstall the faulty Arch setup

Use the Arch installation media to boot the faulty Arch drive.

# root@archiso
# Nice to refer to all the available disks and partitions
fdisk -l
# List all available partitions and where they are mounted (if mounted)
lsblk
mount /dev/linux_root_part /mnt
mount /dev/windows_efi_part /mnt/efi # If any
mount /dev/xbootldr_part /mnt/boot
swapon /dev/linux_swap_part

Plug in a removable drive and copy all existing user files you want to salvage before you do the wipe.

# root@archiso
# Work from inside the "faulty Arch drive" if possible. If not, mount it in the installation media directory
arch-chroot /mnt
# Using /media here just to use a common convention, you can mount the drive wherever you like on your drive
mkdir /media && mkdir /media/DRIVE_NAME
# Find the removable drive partition (assuming it's /dev/sdb1)
fdisk -l
mount /dev/sdb1 /media/DRIVE_NAME
# Just an example
cp -r /home/YOU/Pictures /media/DRIVE_NAME/Pictures
# Once done, unmount it all. Use lsblk to check what is currently mounted
exit
umount /mnt/efi
umount /mnt/boot
umount /mnt
swapoff -a

If you have GRUB, delete the entry using efibootmgr so we can regenerate it later.

# root@archiso
efibootmgr
# > This lists the boot order

efibootmgr # To list options
# Where 000X is the boot order value of "Linux Boot Manager" that we will replace later
efibootmgr --boot-num 000X --delete-bootnum
# Where 000X is the boot order value of "GRUB" that we will replace later
efibootmgr --boot-num 000Y --delete-bootnum

Caution before proceeding. You will not be able to go back after executing the following scripts. Next steps: Reformat the faulty extended boot, swap and root drives.

# root@archiso
swapoff -a
# POINT OF NO RETURN! Do not proceed unless you know what you are doing.
mkfs.ext4 /dev/root_part
mkfs.fat -F 32 /dev/xbootldr_part
mkswap -L "swap" /dev/swap_part
# To check if your root linux drive has been clearly wiped, you
# realise you will not be able to arch-chroot into the root drive now

We don't need to make changes to the partitions since we are just doing a clean re-install.

Setting up Arch again

Mount the root drive where Arch will be installed.

# root@archiso
mount --mkdir /dev/root_part /mnt
swapon /dev/swap_part
# Verify root partition mounted
lsblk

Install Arch onto /mnt.

# root@archiso
pacstrap /mnt base linux linux-firmware
genfstab -U /mnt >> /mnt/etc/fstab
more /mnt/etc/fstab # Verify file created with correct entries

Now we can enter the newly initialised /mnt and change some default configurations.

First, we ensure that time set normally as shown.

# root@archiso
# We ensure that time and date is set correctly before we change `/mnt` time and date settings
timedatectl set-ntp true
arch-chroot `/mnt`
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
more /etc/adjtime # Verify that the hardware clock is set to UTC
exit

Next we install dependencies that may be useful later.

# root@archiso
arch-chroot `/mnt`
pacman -Syu
pacman -S vim networkmanager
# Ensure default editor is vim. See https://wiki.archlinux.org/title/Environment_variables
echo 'EDITOR=vim' >> /etc/environment
# You need internet to install packages, including this package. So you must install networkmanager here
systemctl enable NetworkManager.service
# See https://wiki.archlinux.org/title/Microcode#Installation. This needs to be done before grub-mkconfig is run which adds the microcode files as `initrd` to GRUB later.
pacman -S amd-ucode
exit

Later in the Windows partition, we have to make sure it plays well with the existing Windows partition

Then we make sure that the locales are generated properly:

# root@archiso
arch-chroot `/mnt`
vim /etc/locale.gen
# Comment out en_US.UTF-8, UTF-8 and other required locales
locale-gen
echo 'LANG=en_US.UTF-8' >> /etc/locale.conf
exit

Add the hostname, which would be the name of the computer on a network.

If you are having trouble naming the computer, a good suggestion will be to avoid having an owner's name as part of the hostname. For example, Sam has a PC with a cute teal case they use for gaming. She could use a hostname like teal-gaming-pc, not sams-pc, so the user is added before the hostname like sam@teal-gaming-pc instead of sam@sams-pc.

# root@archiso
arch-chroot `/mnt`
echo 'your-computer-name' >> /etc/hostname
exit

Next, we create a non root administrative user. Using the previous example, Sam has been using root@teal-gaming-pc, so they will now create a user account sam@teal-gaming-pc for normal use.

# root@archiso
arch-chroot `/mnt`
useradd -m you # Creates a "/home/you" account. You can replace you with whatever else.
passwd you

# Give yourself sudo privileges
pacman -S sudo
# The sudo group is "wheel"
# To add your user to the existing "wheel" group
usermod -aG wheel you

visudo
# Under the line "Uncomment to allow members of the group wheel to execute any command...
# ---
# # Uncomment the line (the percentage is crucial to distinguish between a user and a group)
# %wheel ALL=(ALL:ALL) ALL
# ---

su - you # Use you
exit # you@archiso on /mnt -> root@archiso on /mnt
exit # root@archiso on /mnt -> root@archiso on /

Install yay, which will allow you to install AUR packages maintained by the community. Once yay is installed, you will not be able to uninstall yay.

# root@archiso
arch-chroot /mnt
pacman -S --needed git base-devel
su - you
# Doesn't matter where this is installed, `~` is fine
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
exit
exit

See https://github.com/Jguer/yay#source.

Run mkinitcpio manually to check if there are any missing firmware. This is actually run when installing linux via pacstrap for the first time. Note the possible missing firmware, and you may install the packages listed on the wiki.

# root@archiso
arch-chroot /mnt
mkinitcpio -P
# Note missing packages, e.g. bfa, qed, qla2xxx
pacman -S linux-firmware-qlogic
# root@archiso
su - you
# Note AUR packages, e.g. xhci_pci, wd719x, aic94xx
# You can use the AUR meta package `mkinitcpio-firmware`, but it will install firmware packages not
# raised in the mkinitcpio warnings, which is likely to be unnecessary.
yay -S upd72020x-fw wd719x-firmware aic94xx-firmware
exit # you@archiso on /mnt -> root@archiso on /mnt
mkinitcpio -P
exit # root@archiso on /mnt -> root@archiso on /

Set the root password.

# root@archiso
arch-chroot /mnt
passwd
exit

Finally, we install the boot loader. We use GRUB due to its many advantages.

# root@archiso
arch-chroot /mnt
pacman -S grub efibootmgr os-prober
exit

Mount the drives, then run bootctl to create the boot entries.

# root@archiso
mount --mkdir /dev/windowsbootloader_part /mnt/efi
mount --mkdir /dev/xbootldr_part /mnt/boot
# Note: You can remove --mkdir flag on subsequent re-mountings
swapon /dev/swap_part
# Verify all mounted
lsblk
bootctl --esp-path=/mnt/efi --boot-path=/mnt/boot install
# Verify "Linux Boot Manager" is added as an entry to the boot order
efibootmgr
arch-chroot /mnt
exit

Once done, proceed with installing GRUB. We are assuming you are using an x86_64 system (64-bit).

# root@archiso
# Not recommended but if for some reason, you need to install it in the installation environment, add the
# --boot-directory flag pointing to the XBOOTLDR partition
# grub-install --target=x86_64-efi --boot-directory=/mnt/boot --efi-directory=/mnt/efi --bootloader-id=GRUB
arch-chroot /mnt
# Installs grub in /mnt/boot/grub
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
# There should be no errors
exit

Next, we generate the GRUB configuration file via grub-mkconfig.

# root@archiso
arch-chroot /mnt
# Modify default mkconfig options as the actual config file is generated after updating certain files
# so we need to specify any custom kernel parameters
vim /etc/default/grub
exit

We check if we are able to detect the other OSes you want as entries in GRUB via os-prober within arch-chroot.

# root@archiso
arch-chroot /mnt
os-prober # Check if Windows can be detected. If not, reboot the machine and try again.
# -----
# Change from 5 seconds (too short) to 60 seconds to choose the partition to load
# GRUB_TIMEOUT=60
# Add splash (and nvidia-drm.modeset=1 required for plasma-wayland-session)
# GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
# GRUB_DISABLE_OS_PROBER=false
# -----
grub-mkconfig -o /boot/grub/grub.cfg
exit

If we are not able to detect the other OSes, you can try to manually boot into the newly created partition (via BIOS) as root and check os-prober.

# root@archiso
reboot
# Log in as root Arch Linux on your target drive.
# root@new-arch-partition
os-prober
# Hopefully it will print out:
# /dev/windows_efi_part/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi
grub-mkconfig -o /boot/grub/grub.cfg

Once done, you will be able to boot into the newly created Arch partition independently.

Setting up KDE Plasma

Install the xorg desktop environment. Optionally we can use wayland later, but it is known to be extremely glitchy on KDE running Arch.

# root@new-arch-partition
# This installs xorg-apps and xorg-server
pacman -S xorg
# Print the graphics card
lspci -k | grep -A 2 -E "(VGA|3D)"
# Check https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ if the card is listed.

We don't bother with Wayland for now until it works with SDDM.

If not, proceed with using nvidia proprietary drivers, which supports better optimisation.

# root@new-arch-partition
# Check https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/ if the card is listed. If not, proceed
# with using nvidia proprietary

# Enable multilib for pacman. See https://wiki.archlinux.org/title/official_repositories#Enabling_multilib
vim /etc/pacman.conf
# -----
## Uncomment both lines! The [multilib] line and the Include line
# [multilib]
# Include = /etc/pacman.d/mirrorlist
# ------
pacman -Syu # multilib should be now listed as a package database.


# We do not install lib32-nvidia-utils, no use for it yet
pacman -S nvidia nvidia-utils
# We need to run mkinitcpio -P after nvidia updates so we put this in a pacman hook
mkdir /etc/pacman.d/hooks
vim /etc/pacman.d/hooks/nvidia.hook
# /etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
Target=linux
# Change the linux part above and in the Exec line if a different kernel is used

[Action]
Description=Update NVIDIA module in initcpio
Depends=mkinitcpio
When=PostTransaction
## Uneecessary
# NeedsTargets
Exec=/usr/bin/mkinitcpio -P
## If you want it to run only once and not multiple times
# Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'

Also enable an early KMS start to prevent issues.

vim /etc/mkinitcpio.conf
##
# MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
## You can add shutdown to end of HOOKS=(... shutdown) to prevent long shutdown
# HOOKS=(... shutdown)
#
pacman -S plasma-meta

For providers for every dependency choice in plasma-meta:

Install KDE applications. There really is no need to install kde-applications-meta, just install the ones you need and add more later. Or just install the individual applications you remember.

pacman -S kde-accessibility-meta kde-graphics-meta kde-multimedia-meta kde-sdk-meta kde-system-meta kde-utilities-meta

For providers:

Now let's install sddm since we are using KDE.

pacman -S sddm
# To enable graphical login, enable the appropriate systemd service. For example, for SDDM, enable sddm.service.
systemctl enable sddm

It should have worked at this point, but I'm back to the original position. This sucks, so I might use another Desktop Manager.

Kindred spirits: https://bugs.archlinux.org/task/76074

References

  • Use ls /sys/firmware to check if it will support EFI (which it didn't in my case). You can also use parted -l. Check under "Partition Table". If it shows "msdos", it is using MBR. If it shows "gpt", then it will work with UEFI.
  • You can use sgdisk -g /dev/sda to convert the partition table into GPT from MBR. See https://wiki.archlinux.org/title/GPT_fdisk#Convert_between_MBR_and_GPT
  • I created 2M BIOS (as it is a MBR -> GPT convert), 300M EFI System Partition, 5 GB Swap (As the RAM stated it was 10GB). To ensure it plays nicely with systemd-boot (reportedly, never experienced this first hand), mount it under /boot
mount /dev/sda4 /mnt
swapon /dev/sda3
mount --mkdir /dev/sda2 /mnt/boot
  • I installed GRUB due to its flexibility and familiarity
  • Next, installed the i3 desktop environment, which claims to be light and performant, which appealed to the 12 year old netbook, which did not fare well even under Gnome.
    • Install i3-wm
    • Add "exec i3" into a new file ~/.xinitrc
    • Run startx to run and start i3-wm

More options

Maintain user i3 configuration

  • cp /etc/i3/config ~/.config/i3/config: Copy sample i3 Config to home directory for your current user. Warning! This overrides the settings set by the i3 Wizard
  • Replace all Mod1 values to $mod in ~/.config/i3/config:
set $mod Mod4 # or Mod1
  • Using vim substitution (i.e. :%s/Mod1/$mod/ => [n] (Will find the next one) => [.] Confirm change for highlighted one )

Using ttf-fira-code to replace the default font

  • sudo pacman -S ttf-fira-code ttf-fira-mono
  • sudo vim ~/.config/i3/config
  • font pango:Fira Code Medium 9
  • $mod+Shift+R to reload i3-wm and see the changes made to the i3 DE

Install rofi to replace dmenu_run

Replacing XTerm default font

  • fc-list | grep "Mono" - List all installed fonts
  • xterm -fa "IBM Plex Mono SmBld" -fs 9 - To preview how the shell emulator will look like
  • sudo vim ~/.Xresources
xterm*faceName: Fira Mono Medium
xterm*faceSize: 9
  • xrdb -merge ~/.Xresources

References

Setting up Arch Linux on a brand new workstation PC

This guide is meant to ramble to myself how to install Arch Linux on my own PC. If you have stumbled onto this guide, please check out the Arch Linux Wiki in combination with the Farhan Hasin Chowdhury's user friendly step by step guide instead.

Downloading and installing

See downloading_installing.md.

Booting the live environment

See https://wiki.archlinux.org/title/mac#Installation for what to replace for the standard Arch installation

See https://wiki.archlinux.org/title/Installation_guide#Boot_the_live_environment

  • If you restart at any point, all settings will be reset.
  • This brings you to root, which has almost nothing.
  • Set timezone to your local timezone
  • Select hard drive partition to install Arch Linux on. If you have a dual boot Windows on the same physical drive, systemctl reboot and go back to Windows
  • Run GWMI on PowerShell to load the partition UUIDs so you can tell which partition is the one you want to install Arch Linux on
GWMI -namespace root\cimv2 -class win32_volume | FL -property Label,DriveLetter,DeviceID,SystemVolume,Capacity,Freespace
  • Ensure the space is "Unallocated" via Disk Partition on Windows or deleted. Otherwise you'll be able to access that drive.
  • Choosing a partition. You can watch this: https://www.youtube.com/watch?v=bnr_DhPU_JM. I chose GPT as I use a 2 TB SSD (as MBR doesn't support my disk)
  • Follow UEFI/GPT layout example
  • Inside fdisk, choose all primary partitions. No need to create EFI partition, Windows already did that, and its 100 MB and too small for other boot loaders.
  • Follow https://wiki.archlinux.org/title/Systemd-boot#Installation_using_XBOOTLDR to get around that
  • So three partitions extra minimum:
    • around 500M for Linux extended boot (Code 136)
    • around 8GB for Linux swap (Code 19) - As I have 32GB total RAM, and this is recommended. See https://opensource.com/article/19/2/swap-space-poll
    • remaining for the Linux root partition x86-64 (Code 23)
    • home partition (if ever needed), will be installed in the other 2TB SSD
  • Format the root drive with Ext4
mkfs.ext4 /dev/root_part_nr
  • Format the XBOOTLDR drive with FAT32
mkfs.fat -F 32 /dev/XBOOTLDR_PART
  • Make swap for the swap partition
  • Clear swaps first
swapoff -a
  • Mount root to /mnt
  • Mount existing Windows EFI to /efi, and then the EXBOOTLDR to /boot
bootctl --esp-path=/efi --boot-path=/boot install
  • Install GRUB as a bootloader.
arch-chroot /mnt # To enter your root partition
pacman -S grub efibootmgr
# https://linuxhint.com/use_network_manager_arch_linux/
systemctl enable NetworkManager.service
  • Now install a Desktop Environment. I went with KDE Plasma, as I'm running a high end desktop with lots of memory space. I followed the instructions to the letter. Used plasma-meta, try not to use wayland, used the Noto fonts, gstreamer instead of vlc (after researching, VLC has some licensing issues and stability issues).
  • If you use Wayland and run into issues starting plasma-wayland-session, remember modify the DRM kernel mode setting:
    # /boot/grub/grub.cfg
    # I added nvidia-drm.modeset=1 to the end in order to enable the DRM kernel mode setting
    # It's important to note that UUID value will already be in the document
    # YOU SHOULD NOT REPEAT THIS LINE. Only add nvidia-drm.modeset=1 to the end of the existing line!!
    echo 'DRM Kernel Mode Setting has been enabled for Wayland to be used as a session manager.'
    linux /boot/vmlinuz-linux root=UUID=XXXX-XXXX-XXXX rw quiet splash nvidia-drm.modeset=1

Shutting down taking too long and only shutting down immediately after seeing some terminal logs mentioning "oldroot"? It is likely that mkinitcpio needs to be run for all presets, especially now that I'm using Nvidia and switched DRM Kernal Mode Setting on for Wayland. See https://wiki.archlinux.org/title/NVIDIA#pacman_hook for more details. Steps:

sudo vim /etc/mkinitcpio.conf
# Inside vim, add `shutdown` to the end of the HOOKS value
sudo mkinitcpio -P
sudo grub-mkconfig -o /boot/grub/grub.cfg
vim /boot/grub/grub.cfg
# Inside vim, restore nvidia-drm.modeset=1 so you can use Wayland as a session manager. See above
# I'm using SDDM as the Desktop Manager
pacman -S sddm
systemctl enable sddm
  • If you are having trouble playing web videos on Firefox / Chromium, play the video, go to Terminator and pulseaudio --kill and the video should play normally. Once confirmed PulseAudio is the issue, ensure that you replace pulseaudio with pipewire-pulse. Remember to install pulseaudio-alsa (Even though I had pipewire-pulse), alsa-firmware, lib32-libpulse and lib32-alsa-plugins then reboot, this is how I got Amnesia: Rebirth and Fear Equation working.

  • Remember to install KDE applications too: kde-applications-meta

  • I installed yay as well in order to download AUR applications. I should proceed with caution though. Needed to add my user account to the sudoers list first though, that involved adding it via export EDITOR=vim && visudo (cause the default editor is a whack vim-like editor) and adding my user to root and enabling sudo group. Then logging in with su - {my_user} and using that shell session.

  • Steam seems to work, i.e. pacman -S steam. Apps are located in /home/{username}/.local/share/Steam. When looking for an answer to fix this, I also discovered I'm using OpenGL 3.2 (i.e. glxinfo | grep "3\."). I suspect that there needs to be additional plugin support for 3D rendering.

    • Games that did work: Software Inc (works on both X11 and Wayland), Space Haven, Space Station 14 Playtest
    • Games that did not work:
      • Alien Isolation
        • Could not open application
      • Amnesia: Rebirth
        • Encountered a FDisk cannot be initialized!! popup and the game shut down immediately. I'm assuming this will be the same for any Frictional Game built with the same game engine. Does not work on either X11 or Wayland. Turns out I needed some extra packages: pulseaudio-alsa, alsa-firmware, lib32-libpulse and lib32-alsa-plugins.
      • Fear Equation
        • This was the first 3D game I did manage to get running. However, there was no audio. I did manage to fix this by installing pulseaudio-alsa (Even though I had pipewire-pulse), alsa-firmware, lib32-libpulse and lib32-alsa-plugins. Then I rebooted the computer and reopened the game via Steam.
      • Stellaris
        • Was able to open the game and interact with the pre-game menu UI. However, upon loading the game properly up to 100%, the game crashed.
  • I was not successful in setting up officially built discord from pacman for Wayland, though discord works perfectly with the x11 desktop session. discord_arch_electron AUR dependency did work on Wayland desktop sessions though.

  • To view .webp image formats on applications like Gwenview, install qt5-imageformats

Cool themes

Repairing pacman files

# Update pacman registry locally
pacman -Syu
# List only packages with missing files
pacman -Qk 2>/dev/null | grep -v ' 0 missing files'
pacman -S package_1_with_missing_files package_2_with_missing_files

This helped me to find and restore missing files that were in amd-ucode and sddm which crashed on system start, but it did not help with the black screen on startup incident of late Sept / early Oct 2022. I did need to delete the distro and start from scratch.

Other references

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment