Recently I got my hands on an ASUS K550V laptop with an Intel Core i7 CPU and NVIDIA GeForce GTX 950M GPU. Not exactly cutting edge technology, but hardly an antique either.
One small detail, the battery was "dead." And by "dead," I mean completely nonexistent. As if the concept of portable computing was merely theoretical to this machine's previous owner.
Furthermore, the ASPM (Active State Power Management) system was causing what one might generously call "heavy issues" in this ASUS motherboard. This produced an absolutely delightful kernel message flooding extravaganza featuring this specific pair of errors:
pcieport 0000:00:1d.0: AER: Correctable error message received from 0000:00:1d.0 pcieport 0000:00:1d.0: PCIe Bus Error: severity=Correctable, type=Physical Layer, (Receiver ID)
And in every SoystemD Linux distribution I tried, the messages
flooded journalctl
so aggressively that they would throttle
down the machine faster than I could update GRUB. Therefore, I resolved
to use a SystemD free distribution. Well, this is simply the reason I
told myself to use a SystemD free distribution. The real reason is that I
was fed up with SystemD's incessant meddling in my life, and I wanted to
escape its clutches. I am also switching to Artix on my workstation as well.
The first alternative that sprang to mind, one I've used extensively, was Artix. An Arch Linux fork offering a selection of init systems and wonderfully minimalist installation ISOs. Because who needs hand holding when you can have the pure joy of typing commands into a terminal?
I chose to use the Runit init system, a familiar friend. If you're somehow still attached to SystemD-like behavior, I would recommend OpenRC instead.
These initial steps largely follow the Artix Wiki installation guide. I'll spare you the tedium of repeating every single step and only highlight the places where my setup required deviation. READ THE WIKI.
Unless you're fortunate enough to be using a US keyboard layout (as all good computing citizens should), you'll need to set your keyboard layout. Being Croatian, I had to use the croat layout, which can be accomplished with this remarkably complex command:
loadkeys croat
Revolutionary, I know.
My system uses UEFI, which meant selecting an EFI partition. I've generously assigned 1GB to it. I settled on a grand total of 3 partitions:
The wiki offers different kernels and an "optional" linux-firmware package. But I highly recommend just installing the default linux kernel and the linux-firmware package to save yourself some headaches.
Since I'm living in Croatia, I set my timezone accordingly:
ln -sf /usr/share/zoneinfo/Europe/Zagreb /etc/localtime hwclock --systohc
I did not install nano (vim is better, don't @ me) or connman (I prefer iwd because it has a DHCP resolver built in):
pacman -S vim iwd iwd-runit openresolv grub efibootmgr
I edited the vconsole.conf file to include the Croatian keyboard layout (do this before setting up GRUB):
KEYBOARD=croat
The crowning achievement of this installation, the very reason I embarked on this journey, was adding the pcie_aspm=off parameter to /etc/default/grub file before the GRUB installation:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet pcie_aspm=off"
This gloriously disables the abhorrent ASPM, which also disables low power state. But I couldn't care less about power consumption since a properly configured Artix system barely uses any power anyway.
After adding my user account (as per the wiki's instructions), I added the user to the wheel group and granted members of said group the divine right to execute privileged commands:
# Add the user to the wheel group usermod -aG wheel USER # Remove comment from line which allows wheel group # to execute privileged commands vim /etc/sudoers
Since I'm using iwd for wireless connections (like a proper minimalist), I configured it to use resolvconf by adding these parameters to the /etc/iwd/main.conf file:
[General] EnableNetworkConfiguration=true [Network] NameResolvingService=resolvconf
I also immediately added my Wi-Fi password and SSID to the configuration files, which you can read about on the Arch Wiki
This concludes the initial setup, or rather, the ways in which my approach diverges from the wiki's instructions.
Since this is an NVIDIA laptop (I refuse to acknowledge the existence of the Intel integrated graphics), I installed the nvidia-utils drivers package. The elegant i3 window manager was used (desktop environments are for the weak) with xorg as the foundation (in the future xlibre), launching my WM with xorg-xinit. For my terminal emulator, I selected alacritty. I didn't use any display managers.
For audio, I chose pipewire and its associated packages:
pacman -S nvidia nvidia-utils \ xorg-server xorg-xinit xorg-xrandr \ i3 i3-blocks i3-sensible-terminal \ pipewire pipewire-pulse wireplumber pipewire-jack \ alacritty
After installing the NVIDIA drivers, I had to reconfigure GRUB and blacklist the open-source drivers.
I accomplished this by adding nvidia-drm.modeset=1 and nvidia-drm.fbdev=1 to the /etc/default/grub file, on the GRUB_CMDLINE_LINUX_DEFAULT flag.
Furthermore, I created the file blacklist-nvidia-nouveau.conf in the /etc/modprobe.d/ directory with these magic lines:
blacklist nouveau options nouveau modeset=0
Finally, I modified the /etc/mkinitcpio.conf file by transforming the innocuous MODULES=() into MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm) and removing the word kms from the HOOKS=(...) line.
With all that tedious configuration complete, I simply reconfigured initramfs and GRUB using these incantations:
sudo update-grub sudo mkinitcpio -P
For my user space, I maintain a minimalist approach. Below are the few carefully selected programs that make life marginally less unbearable:
pacman -S git mpv feh fzf aria2 firefox