Install
Personal installation notes for Yggdrasil(Desktop -> Server). UEFI install.
LiveUSB
Latest Arch ISO, booted into the live environment, going to follow the installation guide from the wiki.
Display
# echo 3 > /sys/class/graphics/fbcon/rotate_all to rotate clockwise, using monitor vertically
Disk Partition
# fdisk /dev/sda
because I order my own SATA ports every time I install new drives
docker uses /var -> more maintenance if separate.
- 1G EFI
/dev/sda1 -> "/boot" - 4G swap `/dev/sda2
- 920G root
/dev/sda3 -> "/"
"Savage installation."
passwdto create live account password for ssh access to install from remote.
tmux
<bind> + : resize-pane -R 20for pane sizing
Mirrorlist
reflector --verbose --latest 5 --sort rate --save /etc/pacman.d/mirrorlist
to overwrite mirrorlist with top 5 fast mirrors.
I was tempted to run hardened, but I'll save that for next install.
install base packages and other packages that you might need on the system, such as vim because I need something to get stuck in. I got the man-db, man-pages because those are essentials and some firmware related packaged.
linux-firmware-qlogic -> available from repo
missing modules from AUR =>
- aic94xx ->
aic94xx-firmware - ast ->
ast-firmware - xhci_pci ->
upd72020x-fw - wd719x ->
wd719x-firmware
Following the installation guide to generate fstab -> grabbing UUID from /etc/fstab to use with boot loader.
chroot - Installed System
after chroot-ing into the installed system, continued with the wiki.
Recycling hardware's hostname # echo yggdrasil > /etc/hostname
CPU microcode
Since I'm running an old intel chip I decided to download intel-ucode from the repo.
I totally didn't forget to install it earlier
Bootloader
I need to get a boot loader for the motherboard firmware to load the kernel, and more so because I wiped the pre-existing EFI partition that was created by Windows, because I didn't like that there was 2 recovery partitions in front of the EFI partition.
rEFInd
I like the simplicity of rEFInd, and I'm using UEFI installation so it should "just work".
# pacman -S refind
then running # refind-install was enough create an entry in /boot/refind_linux.conf, however it used my live usb, and used labels.
UUID from fstab earlier to specify "/" root disk mount point, UUID=e192a67b-b649-4fde-a673-92f99a9acca5, replaced USB label with this.
We could add initrd= entry for loading microcode before initial file system, but /etc/mkinitcpio.conf HOOKS array contains microcode which will generate a combined image. I'm pretty sure that I've read that rEFInd will find the correct initramfs automatically from /boot if nothing is specified, but I'll manually specify both in my refind_linux.conf
Reboot
unmounted following wiki, rebooted, unmounted live installation media, successful boot into bare system.
Networking
After booting didn't have network because i didn't get any managers and link was set to down.
ss -atuall TCP sockets with port numbers
ip li set enp8s0 updidn't get any ip because no DHCP installedip addr add 192.168.0.82/24 dev enp8s0manually assign ip to my ethernet device- Only able to reach local network
ip route show-> emptyip route add default via 192.168.0.1 dev enp8s0manual default gateway entry
- Still unable to resolve domain names
- manual entry in
/etc/resolv.confnameserver 9.9.9.9
- manual entry in
- Able to download network manager because mirrors are properly reached.
- (Optional)
# pacman -S networkmanageror some other network manager - (Optional)
# systemctl enable NetworkManager.service
- (Optional)
- Needed SSH to use it from my laptop
# pacman -S openssh# systemctl enable sshd
Side knowledge
When dealing with systemd services with
systemctl,enablemeans it will start on boot, whilestartdoesn't mean it will start on next boot
Set Up
After networking was persistent, I created a user account for daily use added it to /etc/sudoers, then I went to get a different shell because pretty colours on terminal go brrr (I wanted to set environment variables and didn't want to migrate them later).
Zsh
I like the out-of-box feature that Oh My Zsh offers, as well as the look of powerline, so I'll use Zsh as I normally do.
Since I'll be only using user over ssh there won't be a need to get supported fonts since a patched font is already installed on my laptop, and root prompt won't be messed up.
Powerlevel10k
~~Formerly known as Powerlevel9k~~ Clean modern prompt theme for the visually dry command line.
After setting the theme to ZSH_THEME="powerlevel10/powerlevel10k" in my .zshrc and running source ~/.zshrc it made me go through a setup wizard to choose my powerlevel theme, I chose something different from my laptop to visually set apart the environment.
Security
User
Following Arch Wiki, I added a 4 second delay between failed login attempts. Then I edited the pam_faillock.so to uncomment the default values just to make sure that they were being used, just for my own sanity.
From the Wiki...
To unlock a user, do:
$ faillock --user *username* --reset
I'll limit process counts later...
Same with setting up Wayland, I don't really need to use GUI yet, I do plan on trying valve's new deadlock, so maybe. I do remember the old choice of X11 + i3 vs Wayland + Sway, when Wayland was still brand new. I'll try out Sway this time, whenever I get around to installing a graphical environment.
I'm not sure if that's the best combo for gaming, but it's the oneI want, so whatever.
Before I restricted the root login, I wanted to make sure visudo would use rvim to edit, and I also enabled insults, because I thought it would be funny to have on my local system.
Wiki Says...
Always use
visudoto edit/etc/sudoersbecause it will error check before copying over.
Just had to make sure Defaults targetpw or rootpw was set in the /etc/sudoers
Tested by adding Defaults env_reset,timestamp_timeout=0, just so I can double check that it asks for my password instead of root password. Commented it because I will leave the default grace period.
I created a group named ssh, added my user to it, then edited /etc/ssh/sshd_config to only limit ssh login to users that only belong to this group.
There's more user & permission separation I can do, but I'll settle for disabling root account with the settings so far.
# passwd -l root
I'll need to setup other users to use with docker and other services later.
Package Management
I love pacman don't get me wrong, but picking a AUR helper was choice paralysis hell for me last time. It seems like yaourt has been removed, I'll build from source until I feel like I need to get a helper this time, and looks like pacman can be used to do most of the things now.
pacman
I'm going to come back to fine-tuning, for now mirrors are fast and I have all the space to let the cache build.
Wrapping Up
I'll finish setting up power management, GUI & multimedia, and networking and other optimizations such as enabling TRIM for my SSDs on a later post for optimizing the install, since this covers most of the installation part.