It is possible to install any init system (openrc, runit, s6) from any ISO.
Artix can either be installed through the console or the GUI installer. The GUI install is quite straightforward, we'll focus on the console installation procedure here. The installation images are confirmed to work on both BIOS and UEFI systems.
To check the available layout types:
ls -R /usr/share/kbd/keymaps
Then type the name of the layout without the extension. For example, to set the Spanish(Spain) layout, type:
This only sets the selected keyboard layout in the current tty and only until reboot. To make the setting permanent, you have to edit
/etc/conf.d/keymaps in the installed system.
It's also useful to set up
/etc/vconsole.conf - it may look like this:
FONT_MAP=8859-1_to_uni FONT=lat1-16 KEYMAP=de-latin1
Partition your hard drive (
/dev/sda will be used in this guide) with fdisk or cfdisk, the partition numbers and order are at your discretion:
If you want to install side-by-side with other operating systems, you must make some space on the disk by resizing the existing partitions. You may use gparted for this, however detailed instructions are out of the scope of this guide. See the ArchWiki
NOTE: The BIOS boot partition is necessary on UEFI systems with a GPT-partitioned disk. EFI system partition has to be created and mounted at
/mnt/boot and the suggested size is around 512 MiB.
Next, format the new partitions, we will use ext4 in this example:
mkfs.ext4 -L ROOT /dev/sda2 <- root partition mkfs.ext4 -L HOME /dev/sda3 <- home partition, optional mkfs.ext4 -L BOOT /dev/sda4 <- boot partition, optional mkswap -L SWAP /dev/sda1 <- swap partition
The -L switch assigns labels to the partitions, which helps referring to them later through
/dev/disk/by-label without having to remember their numbers
If you are doing a UEFI installation, the boot partition is not optional and needs to be formatted as fat32.
mkfs.fat -F 32 /dev/sda4 fatlabel /dev/sda4 BOOT
Now, activate your swap space and mount your partitions:
swapon /dev/disk/by-label/SWAP (if created) mount /dev/disk/by-label/ROOT /mnt mkdir /mnt/boot mkdir /mnt/home mount /dev/disk/by-label/HOME /mnt/home (if created) mount /dev/disk/by-label/BOOT /mnt/boot (if created)
A working internet connection is required and assumed. A wired connection is setup automatically, if found. Wireless ones must be configured by the user. Verify your connection before you proceed. If you want connect through a wireless interface you should use wpa_supplicant and dhcpcd to set it up.
Use basestrap to install the base and optionally the base-devel package groups and your preferred init (currently available:
basestrap /mnt base base-devel openrc elogind-openrc
basestrap /mnt base base-devel runit elogind-runit
basestrap /mnt base base-devel s6-base elogind-s6
basestrap /mnt base base-devel 66 elogind-suite66
If you encounter errors, you can use the -i flag of basestrap ('interactive'). Example:
basestrap -i /mnt base
and you will be prompted to choose the respective elogind.
Artix provides three kernels:
linux-zen, but you can use any other kernel you like ('-ck, -pf' etc). It is very recommended to install
linux-firmware too. You can try not installing it, but some devices such as network cards may not work.
basestrap /mnt linux linux-firmware
basestrap /mnt linux-lts linux-firmware
Use fstabgen to generate
/etc/fstab, use -U for UUIDs as source identifiers and -L for partition labels:
fstabgen -U /mnt >> /mnt/etc/fstab <- edit and verify, also set root, swap, home and etc..
Check the resulting fstab for errors before rebooting. Now, you can chroot into your new Artix system with:
artix-chroot /mnt # formerly artools-chroot
Set the time zone:
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
Run hwclock to generate /etc/adjtime:
Note that this will default to UTC. If you use Windows and you want the time to be synchronized in both Artix and Windows, follow System_time#UTC_in_Windows:ArchWiki for instructions to enable UTC in there also.
Install a text editor of your choice (let's use nano here) and edit
/etc/locale.gen, uncommenting the locales you desire:
pacman -S nano nano /etc/locale.gen
Generate your desired locales running:
To set the locale systemwide, create or edit
/etc/locale.conf (which is sourced by
/etc/bash/bashrc.d/local.bashrc; user-specific changes may be made to their respective
~/.bashrc, for example:
export LANG="en_US.UTF-8" <-- localize in your languages export LC_COLLATE="C"
First, install grub and os-prober (for detecting other installed operating systems):
pacman -S grub os-prober efibootmgr grub-install --recheck /dev/sda (for BIOS systems) grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub (for UEFI systems) grub-mkconfig -o /boot/grub/grub.cfg
NOTE: On GPT-partitioned drives, refer to ArchWiki:Grub article.
Alternatively, you can use some other bootloaders or even the own kernel using EFISTUB. Bear in mind that we won't cover them here since most are not supported officially and the Arch Wiki already provides enough documentation. See the ArchWiki:Bootloader article if you want to view the alternatives. If you have an Intel or AMD CPU, enable microcode updates in addition.
First, set the root passwd:
Second, create a regular user and password:
useradd -m user passwd user
Create the hostname file:
nano /etc/hostname myhostname
Now add matching entries to hosts:
nano /etc/hosts 127.0.0.1 localhost ::1 localhost 127.0.1.1 myhostname.localdomain myhostname
If the system has a permanent IP address, it should be used instead of 127.0.1.1.
If you use OpenRC you should add your hostname to /etc/conf.d/hostname too:
And install your prefered DHCP client
pacman -S dhcpcd or dhclient
If you want to use a wireless connection, be sure to also install wpa_supplicant.
Note: In Runit and and s6, enabling a service by default at this step requires a different command than the normal one because both init systems rely on a /run (a tmpfs) to be created. That creation occurs when you actually boot into the new system. You can choose to skip these steps and and enable the services after a reboot if you wish using the commands listed on the Runit and s6 pages. Just be sure you have an internet daemon and its respective service script installed first.
66-tree -ncE default
In this example, we'll use connman:
Install connman and optionally a front-end:
pacman -S connman-openrc connman-gtk (or cmst for Qt-based DEs) rc-update add connmand
Install connman and optionally a front-end:
pacman -S connman-runit connman-gtk (or cmst for Qt-based DEs) ln -s /etc/runit/sv/connmand /etc/runit/runsvdir/default
Install connman and optionally a front-end:
pacman -S connman-s6 connman-gtk (or cmst for Qt-based DEs) s6-rc-bundle-update -c /etc/s6/rc/compiled add default connmand
install '"connman''' and optionally a front-end:
pacman -S connman-suite66 connman-gtk (or cmst for Qt-based DEs) Assuming your default tree is named "default" 66-enable -t default connmand
Alternatively, if you will use
openrc, Gentoo's netifrc modules can be used, these are located in /etc/init.d/ and work on a script-per-interface basis.
ip -s link <- Get the exact name of your interface nano /etc/conf.d/net <- Add
Now the parent script
/etc/init.d/net.lo should be symlinked to create additional scripts for each network interface and then loaded into an openrc runlevel.
ln -s /etc/init.d/net.lo /etc/init.d/net.<interface> rc-update add net.<interface> default
Now, you can reboot and enter into your new installation:
exit <- exit chroot environment umount -R /mnt reboot
Once shutdown is complete, remove your installation media. If all went well, you should boot into your new system. Log in as your root to complete the post-installation configuration. See Archlinux's general recommendations for system management directions and post-installation tutorials.
To get a graphical environment you need to install the xorg group:
pacman -S xorg
Read the Archlinux's Xorg wiki, for information on how Xorg chooses the best available video driver and which one is optimal for your hardware and how properly set Xorg server.
Install your favorite desktop environment, for example KDE, GNOME, MATE, XFCE4 or LXQt:
pacman -S plasma kde-applications pacman -S mate mate-extra system-config-printer blueman connman-gtk pacman -S xfce4 xfce4-goodies pacman -S lxqt
Each DM has its own openrc package, which brings openrc's DM setup in line with runit and s6 counterparts. Currently we support XDM, LightDM, GDM, SDDM and LXDM.
pacman -S sddm-openrc or sddm-runit or sddm-s6 or sddm-suite66
Be sure to add the service to start automatically at boot time.
Or you can use .xinitrc to launch your DE manually; edit (or create)
~/.xinitrc and add exec mate-session.
Notice: mate-session and quite a few other packages from the Arch repositories are compiled against systemd even if they don't actually use it, at least not as PID1; to satisfy the library link you may install elogind and its services files elogind-openrc, elogind-runit, elogind-s6, or elogind-suite66.
pacman -S elogind
66 uses it's own configuration to set things such as hostname, if you are using BTRFS and other options. First, if you have not done so yet, a boot tree must be created:
66-tree -n boot
Next is to create initial boot config
66-enable -t boot [email protected]
To change 66's config run:
66-env -t boot -e $EDITOR [email protected]
Change options from
!yes if your system will use BTRFS, ZFS, etc
Then to enable the changes:
66-enable -t boot -F [email protected]