Artix is a rolling release, Arch-based Linux distro whose main selling point is being completely
systemd-free. For my fellow casuals,
systemd is one of those controversial topics in the Linux community, one that I imagine many many flame wars were waged over. I’ll attempt to very briefly summarize the issue just for context.
systemd is software suite of tools that manage the system and services that essentially forms the backbone of a Linux system. In other words, it is the first process that runs, and from where all the other processes spawn. Critics of
systemd argue that
systemd creates bloat, is inefficient, and makes a system more vulnerable to attack. Seems like a problem for a specific set of people, but getting into the issue is beyond the scope of what I’m interested in doing here. Honestly, I think this will just be more of a personal experiment in what not having
systemd will be like, especially since every distro I’ve tried at this point has had guided installers and desktop environments baked in—it’s time for the kid gloves to come off and put on the big boy Linux pants.
- Which version of Artix to choose?
- Installing Artix
- Keymap and Network
- Installing the base system and kernel
- Preparing fstab:
- Configuring the system
- Setting the system clock
- Installing the Boot Loader
- Creating our user
- Network configuration
Which version of Artix to choose?
Artix comes in a few flavors:
- Base — allow for total customization, only having a terminal at your disposal and requiring all your Linux wits to survive.
- Graphical — provides a reconfigured desktop of your choice (LXQt, LXDE, MATE, Cinnamon, KDE/Plasma, Xfce, and a basic set of programs, like a file manager, web browser, and a graphical installer.
- Community — comes with a general suite of tools for desktop use, the full list can be found link here. It comes in either in GTK or Qt with either MATE, KDE, LXDE, and LXQt.
I’m gonna go all in and jump into base, but before that I have to make this decision: which
init system should I choose? Artix offers
suite66, for each of its editions:
|dependency based init system.||portable init system with dependency management.||tool suite that provides an init and daemon spawning.||a process supervision suite with init.||wrapper for s6 written for ease of use.||stand alone version of logind. *see note|
I chose OpenRC because it looks to be the most-well documented, and I’m a sucker for documentation. Having never installed a distro quite like this before I’m going to preform a dry run on a virtual machine before I attempt to install it on my actual desktop. I recommend having a glance over of the ArtixWiki’s installation guide, linked here, as it covers all the components and and provides a brief overview of its command syntax for each of the above
init managers. I’m not gonna lie, trying to use the ArtixWiki as a noob, might be challenging so make sure you have at least a couple of hours to sit down with and really tackle this installation, especially as a first-timer.
I created a virtual machine with 2 vCPUs, and 2GBs of RAM and a 30GB vHDD, if you want to follow along.
At boot you’ll want to select the option to boot from wherever is appropriate for you installation media, in my case, since this is a vm, I’ll be booting from an ISO file.
Keymap and Network
Use the following command to check the available keyboard layout types & select the one that is proper for your setup:
ls -R /usr/share/kbd/keymaps # use a pipe to make it more readable: | less loadkeys us #or your own region
Next test your network connection as the following steps requiring the internet in order to progress. Wired connections are automatically setup, but if you are on a wireless connection, you’ll have to jump through a few hoops to get it setup, using
To verify our network works we’ll just ping the artix website 4 times.
ping artixlinux.org -c 4
Before we install Artix, we need to partition the hard drive, you can use
cfdisk, but we’ll use
cfdisk here. When you first boot in from your installation media, you’ll want to login as root. The default username and password is:
First let’s check out the name of our harddrives using
Obviously if you are on a actual desktop or have more than one drive attached it’ll show up here. Once you know what your target installation media is going to be, select it using
cfdisk which will look like this:
You should see a window like this take over you command line:
If your hard drive exceeds 2TB than go with GPT as it is the modern standard and it supports disk drives over 2TB, otherwise it is safe to use DOS. the other 2 options are for compatibility with older SGI & SUN systems. As I am using a VM, and my disk drive is under 2TB so I’ll go with the
dos hard disk label. Once inside cfdisk, you’ll encounter this screen.
From here we’ll need to create our partition table, we’re going to be creating a relatively simple partition scheme of
/mnt/boot (for the bootloader),
/mnt (where our system files & packages will go) ,and
/home (for our user files). I’ll also be omitting the
/swap partition as I have a NVME drive and 16GBs of RAM, so I don’t really need a
/swap. According to the ArtixWiki, the boot partition is necessary on UEFI systems with a GPT disk and has to be created and mounted at
/mnt/boot with a suggested size of 512 MB.
512MB is a tad overkill, you could go as low as 128MB for modern boot partitions, but to follow the docs, we’ll just go ahead and use 512MB. To create this partition in
cfdisk select [ NEW ] with Free Space selected, and type 512M, choose primary and press enter. Once it’s created, use the arrow keys to select the bootable option and press enter to mark the current partition as bootable or press “b” on your keyboard.
Next create 2 more partitions as you see fit with the remaining disk space, I used 12GB for the partition I intend to use as
/mnt/ and the remaining 17GB for
Now using the arrow keys, select [ Write ] then press enter,
cfdisk will prompt you with “are you sure” then type yes and press enter. Finally exit
cfdisk by selecting [ Quit ].
If you need a swap partition go ahead a make one here before you write the changes and exit.
Reminder to use the output of
lsblk as reference, as the drive names will be different on an actual machine.
mkfs.ext4 -L BOOT /dev/vda1 # 128-512MB mkfs.ext4 -L ROOT /dev/vda2 # typically 15-25GB mkfs.ext4 -L HOME /dev/vda3 # The remainder for home #mkswap -L SWAP /dev/vda4 # swap partition (if created)
If you are doing a UEFI installation, the boot partition needs to be formatted as fat32, but since this is a VM, formatting as ex4 is okay.
mkfs.fat -F 32 /dev/sda4 fatlabel /dev/sda4 BOOT
Once that is done, we need to mount our newly minted partitions.
#swapon /dev/disk/vda4 (if created) mount /dev/vda2 /mnt mkdir /mnt/boot /mnt/home mount /dev/vda1 /mnt/boot mount /dev/vda3 /mnt/home
Installing the base system and kernel
Next is the real exiting part where we install the base Artix system. the
basestrap command will install to the
/mnt directory the base (main OS packages), base-devel (software compilers and other developer tools), the Linux kernel and firmware packages,
init system) &
elogind wrapper for
vim (a text editor). You may choose to sub
vim if you prefer. Go get a snack because this install might take a few minutes.
Optional: For a faster download, edit the
/etc/pacman.d/mirrorlistfile. This is the list of Artix repos that
pacmanuses to pull software from. Move the mirrors that are closer to you near the top and save the file.
basestrap /mnt base base-devel linux linux-firmware openrc elogind-openrc vim
Note that at this point you can install any
init system you want to, instead of
openrc. Artix also offers 3 different kernel options,
linux-zen, for you power users out there.
Quick Vim Tip! press
ato enter INSERT mode, the hit
ESCto exit INSERT mode and the type
:wqto save and exit.
vim , edit the
/etc/local.gen file, uncommentating whatever localizations you need.
#ONLY INSTALL ONE OF THESE! #runit basestrap /mnt base base-devel linux linux-firmware runit elogind-runit #s6 basestrap /mnt base base-devel linux linux-firmware s6-base elogind-s6 #suite66 basestrap /mnt base base-devel linux linux-firmware 66 elogind-suite66 #dinit basestrap /mnt base base-devel linux linux-firmware dinit elogind-dinit
Next generate the
fstab file which defines how disk partitions and other file systems are mounted by the system. The
-U flag will use UUIDs or you could use the
-L switch to instead use partition labels.
fstabgen -U /mnt >> /mnt/etc/fstab
Now the next following commands need to be done from Artix’s
Configuring the system
Setting the system clock
While in the
artix-chroot shell, set the timezone, you’ll find it helpful to check out the contents of
/usr/share/zoneinfo/ to find out the available regions.
#ln -sf /usr/share/zoneinfo/Region/City /etc/localtime # for example: ln -sf /usr/share/zoneinfo/America/Tijuana /etc/localtime
Next we run
hwclock to generate the /etc/adjtime, which if you run
cat it will give you a timestamp:
We next need to install the default language(s) on the system, to see the available options edit the
In my case I’ll uncomment lines
#179, for US English.
Next run the following command to generate your locales.
Finally create the
/etc/locale.conf file to create a system wide preference, just replaced
LANG= with your preferred locale.
touch /etc/locale.conf && echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
Installing the Boot Loader
We now must install grub and
os-prober (tool for detecting other installed operating systems, this is optional if on a vm). Following that, run the appropriate
grub-install command, (if I was on my desktop I’d use the one for UEFI. Finally we will run the
grub-mkconfig command to generate the correct boot entries in grub.
pacman -S grub os-prober efibootmgr #run ONLY 1 of these grub-install cmds NOT BOTH. #FOR BIOS grub-install --recheck /dev/vda #for UEFI grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB #generate the grub file grub-mkconfig -o /boot/grub/grub.cfg
You can safely ignore the warning messages regarding
os-prober for now.
Creating our user
passwd to set the root password, then create and configure a new user and add them to the
wheel group to give them
sudo privileges :
# set root pw passwd # add new user and set their password useradd -m linuxman passwd linuxman usermod -aG wheel linuxman
This next step is optional as it is just a quality of life setting. Visit the
/etc/sudoers file to uncomment line #82, to allow any user that is part of the wheel group able to execute any command or uncomment line #85 to execute any
sudo command without having to enter a password, but this results in a much less secure system so proceed with caution.
If using vim, exit with
:wq!to save a read only file, or with sudo privileges if you get an error saving your edits.
Next we need to create the hostname file and enter your desired hostname.
Then add matching entries to the
vim /etc/hosts # enter this 127.0.0.1 localhost ::1 localhost 127.0.0.1 myhostname.localdomain localhost
If you also chose to install
openrc you must add your hostname to
vim /etc/conf.d/hostname hostname='myhostname'
And install a network manager and a DHCP client. Failing to do so will result in a internet connection failure on reboot.
pacman -S networkmanager networkmanager-openrc #or respective oen for your init pacman -S dhcpcd # or dhclient
With that done, logout of the
chroot shell and
reboot. Congratulations you’ve just installed Artix!
If you’ve been following along on a virtual machine, here is where I recommend creating a snapshot so you can easily go back to a fresh Artix install in case something goes sideways installing a window manager or whatever. I also heavily recommend running this process a few times as needed to get comfortable with it, before you try installing it on any actual hardware. Post-installation set will need to be done, like setting up a window/display manager, etc, but that is a post for another day. Go get yourself a treat and pat yourself on the back because that was pretty involved! Way more in-depth and terminal heavy than any other distro installation I’ve ever done, for sure. Now excuse me, I think I need to go lay down…