Artix re−installation
Last updated : 29/11/2025 (Initial commit − seems like author's not dropping stubs for once)
Introduction
News flash − my Artix installation was FUBAR at the start of November, causing me to reinstall it from scratch. However, this reinstallation also came with some changes, most of which can be nutshelled as the Chapman excuse (simplify and add lightness?).
- Replaced sudo with opendoas.
- Replaced GRUB with Limine.
- LightDM replaced by LXDM. I could've spun the Chapman excuse but lightdm decided to not boot (leaving me in tty to startx every time) and I couldn't be bothered to debug it so... yeah. pacman −R lightdm−openrc lightdm−gtk−greeter.
And while I'm at it, I also recorded the installation notes so I get to spin this newsflash thing as a guide for how I (re−)installed Artix. Though you may also want to read this alongside Artix's installation guide (and ArchWiki as well, even if few are relevant here) for more references.
For some additional references:
- Commands get bolded, simply because I couldn't bother myself to make dedicated boxes for commands.
- Italics applied to stuff you get to freely name.
- This install guide is aimed at my T470, which is on UEFI. Secure Boot is also disabled as I couldn't bother dealing with it.
Base installation
To start, I go from the base image, mostly because it gives me the most control over what I install and the dependencies I needed to install, freeing me from having to debloat and wasting more time with everything. Unfortunately, this approach requires internet access (though the workplace had a free ethernet setup that I used, alongside what little downtime I had to input things.).
After downloading and verifying the base image, I used Rufus to write it (the base image) into a USB drive in DD mode (from my Windows installation up in the abode; other methods are available for those refusing Windows). From there (and in the workplace), well... I plug that USB drive (and ethernet) up my T470 and booted that base image.
Pre−chroot
- Partitioning a 256GB (238.5GB) NVME stick (skip if already done, or if you have your own partitioning setup)
- lsblk
As only 1 NVME stick is stuck inside my T470, I get nvme0n1. Though it will be split into 4 parts in the next step.
- cfdisk /dev/nvme0n1 (cfdisk can be replaced with fdisk or some other partitioning tool)
- nvme0n1p1 − 512M (boot)
- nvme0n1p2 − 8G (swap)
- nvme0n1p3 − 30G (/)
- nvme0n1p4 − 200G (home)
- Formatting partitions
- mkfs.fat −F 32 /dev/nvme0n1p1
- fatlabel /dev/nvme0n1p1 ESP
- mkswap −L SWAP /dev/nvme0n1p2
- mkfs.ext4 −L ROOT /dev/nvme0n1p3
- mkfs.ext4 −L HOME /dev/nvme0n1p4
- This part should've been saved for disk encryptions (dm−crypt), but as I haven't got time to encrypt on my reinstallation (and I haven't learned it yet) I skipped it.
- Mounting stuff
- swapon /dev/nvme0n1p2
- mount /dev/nvme0n1p3 /mnt
- mkdir /mnt/boot
- mount /dev/nvme0n1p1 /mnt/boot
- mkdir /mnt/home
- mount /dev/nvme0n1p4 /mnt/home
- If done following this guide, lsblk on nvme0n1 should look a bit like this:
- nvme0n1p1 − 512M /boot
- nvme0n1p2 − 8G [SWAP]
- nvme0n1p3 − 30G /
- nvme0n1p4 − 200G /home
- Basestrap (installing base system, kernel, firmware, and tty text editor)
basestrap /mnt base elogind−$init intel−ucode linux−firmware linux−zen nano
- elogind−$init
- With elogind insisting on being installed before init, installing base without elogind enforces a random init to be installed alongside elogind. The last time it happened, I am stuck with dinit (which apparently is the lightest init system)
- As for the init, I settled on OpenRC out of familiarity (and the added possibility of finding fixes from Gentoo). Artix Wiki has resources for the other 3 provided init tools (dinit, runit, s6).
- intel−ucode
Replace with amd−ucode if you're on an AMD board. Or skip this if you know what you're doing.
- linux−zen
Can be replaced with other linux kernel packages you prefer. I personally didn't really bother with other kernels.
- Generate fstab (make sure to check it and note your root UUID for later)
fstabgen −U /mnt >> /mnt/etc/fstab
- chrooting (a.k.a. moving on to the next sections)
artix−chroot /mnt
Basic configurations
For everything else that is not as relevant as doas & Limine (at least when it comes to my priorities, because configs are smooth sailing after those 2... or before.)
- Locale
- nano /etc/locale.gen
- Uncomment your desired locales
- Generate your uncommented locales
locale−gen
- Networking
- pacman −S connman−openrc dhcpcd−openrc wpa_supplicant
- rc−update add connmand
- nano /etc/hostname
hostname
- nano /etc/hosts
127.0.1.1 (tab) hostname.localdomain hostname
- Because I used OpenRC, I should add hostname to /etc/conf.d/hostname
hostname ='hostname'
- Time setup
- ln −sf /usr/share/zoneinfo/region/city /etc/localtime
- hwclock −−systohc
- (insert something about network time setup?)
- Passwording root account and adding new basic user account (that you will use daily)
- passwd
- useradd −m username
- passwd username
Bootloader (Limine / efibootmgr)
For the bootloader, I originally tried rEFInd out; but I didn't have any luck booting into the system (it always ended with the system stuck in emergency shell, forcing me to manually shutdown the computer) and I didn't really like the splash screen (bright white as default?). So I ended up fucking around with Limine (and eventually succeeded in booting into system, freeing me from the bloat GRUB could've brought).
- pacman −S limine efibootmgr
- nano /etc/fstab (check fstab, note down root UUID)
- mkdir −p /boot/EFI/artixlimine
- cp /usr/share/limine/BOOTX64.EFI /boot/EFI/artixlimine
- Create a limine.conf file
nano /boot/EFI/artixlimine/limine.conf (personal limine.conf sample with some added notes)
- (optional) Make a pacman hook to redeploy Limine after it is updated
- mkdir −p /etc/pacman.d/hooks
- nano /etc/pacman.d/hooks/99−limine.hook (sample)
- Use efibootmgr to create an entry in NVRAM and allow system to boot, as Limine does not automatically do so.
efibootmgr −−create −−disk /dev/nvme0n1 −−part 1 −−label "Artix Limine" −−loader '\EFI\artixlimine\BOOTX64.EFI' −−unicode
- Additional notes
- I am aware that Limine also comes with its own limine−install command, though ArchWiki only recommends it for non−compliant UEFI boards that don't work with efibootmgr.
base−devel, but doas instead of sudo
- pacman −S opendoas autoconf automake bison debugedit fakeroot flex gcc git groff libtool m4 make patch pkgconf texinfo which
- Everything else aside from opendoas are basically base−devel, except we do not install base−devel because it forces sudo in.
- Set up makepkg so it asks for doas instead of the absent sudo or using su (and using the root account password instead of your user password)
- nano /etc/makepkg.conf
Find & uncomment #PACMAN_AUTH=(), then add doas between the parentheses. It should look like : PACMAN_AUTH=(doas)
- Configure doas.conf for username (sample .conf)
nano /etc/doas.conf
Post−chroot
At this point, Artix is configured and installed so you can enter your new system.
- exit
- umount −R /mnt
- reboot
Post install setup
In the new system, you can log in as the user account, if you made them.
- X(libre) and its accompanying drivers
- # pacman −S xlibre $video_drivers
- XFCE
- # pacman −S xfce4 $favorite_fonts $favorite_themes
By default, this also installs Thunar, which will be extended in file management.
- $ nano .xinitrc
exec startxfce4
- LXDM
- File management
- # pacman −S gvfs thunar−archive˒plugins xarchiver $archive_file
- Core (important) applications / apps / programs
- Audio (well, Pulseaudio for now since I haven't figured the others out)
- # pacman −S pulseaudio xfce4−pulseaudio−plugin
- PulseAudio configuration (sample)
nano ~/.config/pulse/daemon.conf
- Kernel hardening? (sample sysctl.conf)
Conclusion − entering the graphical environment
With all basic configurations done, now we boot to our graphical environment.
$ startx
And that's about it. If everything is done rightly, we're in the desktop, ready to tamper it to our specifications. And/or restore the old configurations copied over from the old installation if you had a copy.
Known issues
Limine issues?
- Not much... aside from several instances of M.S.I., such as kernel panics (typos in limine.conf) or system not booting (I pointed efibootmgr to wrong directories); all of which is my fault.
Issues with doas replacing sudo
- "Authorization is required but no authorization protocol specified" (or some similar−sounding report)
Consequently, you cannot open X apps using doas as access elevation (so no non−terminal system file alterations, which does impede manually adding big hosts files, among other examples). A workaround is to add permit setenv {XAUTHORITY LANG LC_ALL} to doas.conf (source).
Back to top
Main Page