Note: Switching init is for advanced users who know what they are doing. In general, doing a fresh installation is the preferred way to install Artix. Ensure you have a bootable LiveISO, for example on a flash drive, ready in case if anything goes wrong and you can't boot your system.
For migration from systemd to one of init systems supported by Artix, see instead the article Migration.
Essentially, what needs to be done to switch init is to uninstall all packages containing init
, with init
replaced by your current init suffix (in other words: openrc
, runit
, s6
, or dinit
), and install corresponding packages containing newinit
instead, where newinit
is the init you want to switch to, followed by activating all the newly installed services and rebooting your system.
Since uninstalling init and related packages will crash a running X session and might render your computer effectively unusable, the first step is to stop your DM (if you are using one) and get to a text console (not the same as a terminal emulator!).
From this point on, this guide will assume switching from OpenRC to s6, using XFCE DE with lightdm as DM; it can easily be modified to accomodate other combinations of inits/DEs/DMs. Having this setup, stopping X to get to a text console is accomplished with:
sudo rc-service lightdm stop
(Refer to the documentation of your init for information related to other inits.) Your X session will end and you will see a login screen from a getty. If you see a blank screen instead, press Alt-F2 to go to tty2. Login as root with your root password.
Save a list of your active services to a file. This is done with the following command:
pacman -Qsq openrc > services.list
You should fetch the packages for the new init before removing the packages for the old init. This is not mandatory, but if you lose internet connection in the middle of the update, you might be left with a non-functional system. This is done by using the command:
pacman -Sw $(sed 's/openrc/s6/g' < services.list)
Check if there were any errors, and install the appropriate packages manually or modify the output.
pacman -Sw $(sed -e 's/openrc/s6/g' < services.list)
pacman -Rdd $(cat services.list)
Note: In s6, this command currently hangs. If you are switching init from s6, issue the commands from the chroot environment in LiveISO instead.
Finally, you can install the packages previously downloaded with pacman -Sw
:
pacman -S $(sed 's/openrc/s6/g' < services.list)
Important: If there are any errors, correct them before proceeding to the next step! Otherwise, your system might not boot.
You won't be able to reboot normally, as the symlinks to do that point to the newly installed init. Do a cold reboot instead (using the reset button on your computer or turning the power off, then on). Another method to cold reboot is using SysRq's b
option. sysrq does not unmount disks, so be careful with this approach. for more information, consult
MagicSysRq's Documentation.
To avoid possible data corruption from this abrupt reboot, it is essential that you synchronize any cached writes to the disk and remount your partitions read-only (below command only applies to / ):
sync mount / -o remount,ro
Alternatively, use SysRq magic to the same effect, for all disks and partitions:
echo s >| /proc/sysrq-trigger echo u >| /proc/sysrq-trigger
Finally
echo b >| /proc/sysrq-trigger
will trigger a cold reboot, and restart the host.
In case of any problems, you can use your LiveISO to boot and repair your system.