This post is right on the heels of my Void installation post. At the very end of that post is my explanation as to why I’m switching - suffice it to say that I get basically everything that Void offers but with more active development and more package options should I need them. I’m worried about development activity over the long-term for Void.

Now when I made this decision, I figured it’d mainly consist of these things:

  • Back up Void
    • Home directory (primarily my dotfiles and cleanup I’d done)
    • List of manually installed packages
  • Run through the Artix installation with full-disk encryption - I’d already reviewed the documentation for this
  • Figure out what packages need to replace the Void packages, when either 1) they are under different names or 2) they don’t have 1:1 replacements
  • Drag and drop config files and scripts, make minor edits when differences arise
  • Continue on my merry way

Now I think this would have happened how I outline it, except for one thing: I’m stupid and didn’t verify my backup, and I lost all my configurations. I deserved every bit of what I got.

It’s not very interesting to write out all my configuration again, since I went over the vast majority in the previous post, but I will write out a few things relating to the installation and some major differences or issues I ran into. I just made this a lot harder than it needed to be.

Initial installation

So this technically isn’t full-disk encryption this time. The root, home, and swap partitions are all encrypted, but the boot partition isn’t. When I installed Void, the entire disk was one physical partition, and all of it was encrypted. I had to unlock it via password, then the boot partition needed a keyfile to decrypt a second time. (At least I think that’s how it was working. The point is the entire disk was encrypted.)

This time, I opted for a slightly simpler and more robust route. A bonus is that Libreboot’s GRUB can recognize it now, so I don’t have to hit escape to get into the SeaBIOS menu every time I reboot. (It’s beside the point that Libreboot’s GRUB should be able to see the disk that’s fully encrypted…it doesn’t.)

I had to synthesize the above guides - both the installation via chroot, and installation with full-disk encryption. The guide for FDE says to use the GUI installer…then go back and verify or fix some things that it sets. I’d rather just do it manually, so I did.

  • Replace openrc with runit (since I was coming from Void). Mainly this involved 1) installing *-runit packages instead of their *-openrc versions (such as cryptsetup-runit instead of cryptsetup-openrc) and 2) enabling the associated services with the runit method instead of the openrc method. Fairly straightforward.
  • Don’t use the GUI installer as specified by the FDE guide; synthesize the configuration steps from the chroot installation guide.
  • Replace --type luks1 with --pbkdf pbkdf2 in the cryptsetup command to get around GRUB’s limitations but still use luks2.

If I had felt up to it I would have written my own guide; maybe I’ll do that in the future. But I got this first try (and was NOT expecting to), so I’ll probably be able to figure it out again should I need to.

I did need to rfkill and rfkill unblock 1 to get my WLAN card working. Also for future reference, because I seem to run into this a lot - here is how to add a static ip address and default route to a wired connection, if you boot into your new system and dhcpcd and wpa_supplicant somehow didn’t end up installed (yes, this happened to me):

ip addr add 10.0.10.99/24 dev etho
ip route add default via 10.0.10.1 dev eth0
ip link set eth0 down && ip link set eth0 up

Configuration

Not much to say here that I haven’t already said in the Void post, and I’ve already talked about my dumbass not backing up files properly.

Switching kernels, and switching from runit to openrc

Naturally, one of the first things I worked on after getting things 75% functional was to try to configure elogind for sleep and hibernate again.

First issue I ran into was that the hardened kernel just doesn’t support hibernation, full stop - and it took me a lot of digging to find one sentence on the Arch wiki that told me that. On a laptop, I’d like hibernate functionality, so I went ahead and replaced the kernel, reinstalled grub, and regenerated its config.

pacman -S linux linux-headers
pacman -Rs linux-hardened linux-hardened-headers

grub-install --target=i386-pc --boot-directory=/boot --bootloader-id=artix --recheck /dev/nvme0n1
grub-mkconfig -o /boot/grub/grub.cfg

Second issue was elogind, at this point the bane of my existence. I don’t even remember the exact issue I was having with it that I was trying to troubleshoot, but if I restarted the service with sv restart elogind, it would crash my window manager. I still don’t know what was causing it, and I don’t even thing Xorg crashed fully, just all my other programs. The Xorg logs in .local/share/xorg weren’t revealing, and after hours upon hours of research I still can’t figure out runit logging. I couldn’t find a single piece of information in a log anywhere regarding elogind. Artix’s documentation on runit also leaves a lot to be desired, and I had this issue previously on Void, so I said fuck it and decided to switch to openrc as that seems to be the default that Artix ships with.

It was easier than I thought:

# get a list of packages I installed with runit in the name
pacman -Qqe | grep runit 

# install the openrc equivalents
pacman -S openrc [*-openrc] # all services that 

# uninstall all runit packages - might have to fiddle with some dependencies first
pacman -Rs runit *-runit

# add services to the correct runlevel...need to make sure all the services for decryption are here in the boot runlevel
rc-update add cryptsetup boot
rc-update add lvm boot
rc-update add device-mapper boot

# reinstall grub and regenerate config for safety - unsure if necessary
grub-install --target=i386-pc --boot-directory=/boot --bootloader-id=artix --recheck /dev/nvme0n1
grub-mkconfig -o /boot/grub/grub.cfg

Reference for openrc: https://wiki.artixlinux.org/Main/OpenRC

Wrap-up

So far I’m largely back to where I was - which is fighting with elogind. The rest of my workflow is mostly there, although I have a lot of configuration work lost to the aether because of my poor life choices regarding backups.

We will see if I bite the bullet and go with a desktop environment for the sake of my own sanity, but I’m not there yet. Will keep forging ahead with configuration files.

EOF