11 KiB
Arch with Gnome
Installation
Follow most of the instructions here: https://wiki.archlinux.org/title/Installation_guide
-
Download Arch
-
Verify the image
-
Create a bootable ISO
-
Disable secureboot (reenable later)
-
Boot into the live image
-
Check for network connectivity
# Check for internet ip a ping archlinux.org -
timedatectlto update system clock -
Create disk partitions
fdisk -l fdisk /dev/vda- +1G for /boot
- t EFI SYSTEM for /boot
- remaining for /
-
mkfs.fat -F 32 /dev/vda1(/mnt/boot partition) -
cryptsetup luksFormat /dev/vda2 -
cryptsetup luksOpen /dev/vda2 root -
mkfs.btrfs /dev/mapper/root(root partition) -
Mount the root partition with
mount /mnt -
Mount the boot partition with
mount --mkdir /mnt/boot -
pacstrap -K /mnt base linux linux-firmwareNote: linux-zen works, linux-hardened breaks appimages
-
genfstab -U /mnt >> /mnt/etc/fstab -
arch-chroot /mnt -
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime -
hwclock --systohc -
echo 'LANG=en_US.UTF-8' > /etc/locale.conf -
echo 'hostname' > /etc/hostname -
pacman -S grub -
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=BOOT(this will fail) -
Note: for some systems you'll have to move grubx64.efi into an expected location:
cp /boot/EFI/BOOT/grubx64.efi /boot/EFI/BOOT/bootx64.efi -
pacman -S vim -
Edit /etc/default/grub
GRUB_CMDLINE_LINUX="quiet splash rd.luks.uuid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" GRUB_ENABLE_CRYPTODISK=y GRUB_DISABLE_SUBMENU=y GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true -
Edit /etc/mkinitcpio.conf and set up systemd/sd-encrypt
HOOKS=(systemd autodetect modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck) -
mkinitcpio -P -
grub-mkconfig -o /boot/grub/grub.cfg -
pacman -S gdm gnome dhclient dhcpcd -
sudo systemctl enable gdm -
useradd ducoterra -
passwd ducoterra -
pacman -S sudo -
groupadd sudo -
Edit /etc/sudoers and uncomment the section allowing sudo and wheel group privilege
-
usermod -aG sudo ducoterra -
usermod -aG wheel ducoterra -
mkdir /home/ducoterra -
chown ducoterra:ducoterra /home/ducoterra -
exit -
reboot
Post Install
Set up locale with correct information (required for certain binaries like minecraft-launcher)
-
vim /etc/locale.genUncomment the line:
en_US.UTF-8 UTF-8
-
sudo locale-gen
TPM2 LUKS Decryption
pacman -S tpm2-tsssystemd-cryptenroll /dev/vda2 --wipe-slot=tpm2 --tpm2-device=auto --tpm2-pcrs=""
Fingerprint Reader Support
-
sudo pacman -S fprintd -
sudo systemctl enable --now fprintd -
Enable fingerprint terminal login but prompt for password first (enter switches to prompt for fingerprint)
sudo vim /etc/pam.d/sudo and at the top of the file:
# fingerprint auth auth sufficient pam_unix.so try_first_pass likeauth nullok auth sufficient pam_fprintd.so
AppImage Support
fuse is required to run most appimages.
Also chmod +x before running.
-
sudo pacman -S fuse -
`cp ~/Downloads/xxxxxxx.appimage ~/Applications
-
Write a .desktop entry at ~/.local/share/applications/
[Desktop Entry] Encoding=UTF-8 Name= Exec=/home/ducoterra/Applications/ Icon=/home/ducoterra/Applications/ Type=Application Categories=;
Bluetooth
sudo pacman -S bluez bluez-utilssudo systemctl enable --now bluetooth
Audio
Without pipewire-pulse the audio level/device will reset every reboot.
sudo pacman -S pipewire-pulse(remove conflicting packages)
RDP Remote Desktop
sudo pacman -S remmina freerdp
Virtualization
-
Install virtualization capabilties
sudo pacman -S qemu-full sudo pacman -S libvirt sudo pacman -S iptables-nft dnsmasq sudo pacman -S virt-manager qemu-desktop sudo usermod -aG libvirt ducoterra sudo virsh net-autostart default -
Edit /etc/libvirt/libvirtd.conf
... unix_sock_group = 'libvirt' ... unix_sock_rw_perms = '0770' ... -
Edit /etc/libvirt/qemu.conf
# Some examples of valid values are: # # user = "qemu" # A user named "qemu" # user = "+0" # Super user (uid=0) # user = "100" # A user named "100" or a user with uid=100 # user = "ducoterra" # The group for QEMU processes run by the system instance. It can be # specified in a similar way to user. group = "ducoterra" -
systemctl enable --now libvirtd
If you get a blank screen when launching windows VMs check that you've used a secboot loader.
CUPS Printing
-
sudo pacman -S cups avahi -
sudo vim /etc/nsswitch.confhosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns -
sudo systemctl start cups -
sudo systemctl start avahi-daemon
Steam
https://wiki.archlinux.org/title/Official_repositories#multilib
When prompted, use vulkan-radeon
XWayland
Provides compatibility with X server applications (like wine)
sudo pacman -S xorg-xwayland
Wireguard
sudo pacman -S wireguard-tools
btrbk
- Grab the btrbk binary from the github repo. Copy it to /usr/local/bin/btrbk.
- Create a snapshot config
/etc/btrbk/snapshots.conf
snapshot_preserve_min 24h
snapshot_preserve 14d
volume /mnt/btr_pools/root
subvolume root
snapshot_dir .snapshots
volume /mnt/btr_pools/root
subvolume home
snapshot_dir .snapshots
volume /mnt/btr_pools/root
subvolume libvirt
snapshot_dir .snapshots
volume /mnt/btr_pools/root
subvolume nextcloud
snapshot_dir .snapshots
- Then create a snapshot service at /etc/systemd/system/btrbk_snapshots.service
[Unit]
Description=Runs btrbk with config file at /etc/btrbk/snapshots.conf
[Service]
ExecStart=/usr/local/bin/btrbk -c /etc/btrbk/snapshots.conf -v run
- Then create a timer for the service at /etc/systemd/system/btrbk_snapshots.timer
[Unit]
Description=Run snapshots every hour
[Timer]
OnCalendar=hourly
AccuracySec=10min
Persistent=true
Unit=btrbk_snapshots.service
[Install]
WantedBy=timers.target
- Then enable the service
systemctl enable --now btrbk_snapshots.conf
Bashrc
~/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific binaries
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
# User specific aliases and functions (source .bashrc.d/)
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. "$rc"
fi
done
fi
# clear var used in for loop
unset rc
~/.bashrc.d/aliases.sh
# (Mostly) Taken from https://www.cyberciti.biz/tips/bash-aliases-mac-centos-linux-unix.html
# Author: Vivek Gite
## Colorize the ls output ##
alias ls="ls --color=auto"
## Colorize the grep command output for ease of use (good for log files)##
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
## Make mount human readable ##
alias mount='mount |column -t'
## show open ports ##
alias ports='ss -tulanp'
# do not delete / or prompt if deleting more than 3 files at a time #
alias rm='rm -I --preserve-root'
# confirmation #
alias mv='mv -i'
alias cp='cp -i'
alias ln='ln -i'
# Parenting changing perms on / #
alias chown='chown --preserve-root'
alias chmod='chmod --preserve-root'
alias chgrp='chgrp --preserve-root'
## pass options to free ##
alias meminfo='free -m -l -t'
## get top process eating memory
alias psmem='ps auxf | sort -nr -k 4'
alias psmem10='ps auxf | sort -nr -k 4 | head -10'
## get top process eating cpu ##
alias pscpu='ps auxf | sort -nr -k 3'
alias pscpu10='ps auxf | sort -nr -k 3 | head -10'
## this one saved by butt so many times ##
alias wget='wget -c'
## set some other defaults ##
alias df='df -H'
alias du='du -ch'
## ls but with file sizes, showing largest at the bottom ##
alias lst='ls --human-readable --size -1 -S --classify -r'
## ls show only directories
alias lsd='ls -d */'
## Count the number of files in a directory
alias lsc='find . -type f | wc -l'
Help
Update Grub
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=BOOTcp /boot/EFI/BOOT/grubx64.efi /boot/EFI/BOOT/bootx64.efi
Downgrading Kernel
cd /var/cache/pacman/pkgpacman -U linux-x.x.x.arch1-1-x86_64.pkg.tar.zst linux-headers-x.x.x.arch1-1-x86_64.pkg.tar.zstreboot
Packages
Official
| name | purpose |
|---|---|
| grub | boot loader |
| sudo | sudo privilege for non-root users |
| dhclient | dhcp client tool |
| dhcpcd | dhcp services |
| networkmanager | Gnome networking in settings |
| qemu-guest-agent | Auto resize |
| spice-vdagent | Clipboard |
| firefox | Firefox browser |
| gnome-browser-connector | Firefox gnome connector |
| base-devel | makepkg requirement |
| kubectl | kubernetes kubectl |
| wine | wine64 emulator |
| code | open source vscode |
| steam | steam |
| git | git |
| fprintd | fingerprint reader capability |
| tlp | power management |
| bluez | bluetooth |
| bluetoothctl | bluetooth |
| cups | cups printing daemon |
| avahi | .local address resolution |
| cups-pdf | ipp support for printers |
| xorg-xwayland | X server support |
| wireguard-tools | wireguard |
| iperf3 | iperf3 network speedtest |
AUR
| name | purpose |
|---|