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 non existent. 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.
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 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 sips electricity 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 WiFi 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 and creating 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
mpv
- The only acceptable program for playing music and videosgit
- Source control managementfeh
- Image viewer that also sets desktop backgrounds with minimal fussfzf
- A fuzzy finderaria2
- A download utility supporting multiple protocolsfirefox
- Not actually a burning fox, surprisingly