Skip to content

Instantly share code, notes, and snippets.

@artixnous
Last active July 27, 2017 22:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save artixnous/aec84543cf96eaf177b70bf7d09f7a3c to your computer and use it in GitHub Desktop.
Save artixnous/aec84543cf96eaf177b70bf7d09f7a3c to your computer and use it in GitHub Desktop.
<h1 id="170727"><span itemprop="name">2017-07-27 -- Return of the Jedi</h1>
After the Great Init Purge, the Sythtemd Order installed their dark components in almost every system of the galaxy. All software was forced to depend on the greed, hatred and deception of sythtemd and the Knights of the Old Linux were either converted to the dark side or exiled to the outer rim distros. However, after the initial persecution, the most devoted and powerful Linux Knights re-grouped and...
<br>
...great pleasure and honour to announce the birth of a new project, it is! One with a very ambitious aim: to replace all the contaminated software packages of the official Arch repositories with systemd-free ones. This requires what might technically considered a mini-fork. Three new repositories, [system], [world] and [galaxy] have been created which must be placed <u><i>before</i></u> the official Arch ones. This ensures that upstream (if this term can be used anymore) updates will never break the new setup.
<br><br>
Existing OpenRC systems (whether arch-openrc or manjaro-openrc) can be converted to the new scheme with minimal effort. Older eudev-openrc ones might need some more tweaking, especially with concern to the desktop: consolekit2 is replaced by elogind. In any case, the procedure outlined below is meant for OpenRC systems only. Those with vanilla Arch or Manjaro must first <a href="migrate.php">migrate as described</a>.
<br><br>
In brief, the new repos must be placed before the official Arch or Manjaro ones. Then, sysvinit (provided now by openrc itself) and systemd-sysusers must be removed, as well as consolekit which is replaced by elogind. Next, the base and base devel group must be installed from the new repos. All -nosystemd and consolekit packages have to be replaced by their equivalent too. Finally udev, dbus and elogind services must be enabled and mkinitcpio has to be run for your kernel.
<br><br>
<font color="#F66">We need contributors to the project, help with hosting the repos, beta testers and feedback!</font>
<br>
All credits go to Jedi Masters Artoo, Aaditya and Chris!
<br><br>
The procedure is roughly the following, it variantly depends on individual setups. Fresh install ISOs will be available soon.
<br><br>
1. Put these repos in /etc/pacman.conf *before* the official Arch ones and disable [core] of the latter:
<code>[system]
Include = /etc/pacman.d/mirrorlist
[world]
Include = /etc/pacman.d/mirrorlist
[galaxy]
Include = /etc/pacman.d/mirrorlist
# [core]
# Include = /etc/pacman.d/mirrorlist-arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
</code>
The [multilib] repo will eventually be available too.
The [arch-openrc] and [arch-nosystemd] repos (or [openrc-eudev] if you're still on it) must be disabled.
<br>
2. Rename /etc/pacman.d/mirrorlist to /etc/pacman.d/mirrorlist-arch
<code># mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-arch
</code>
3. Create a new /etc/pacman.d/mirrorlist and refresh the database:
<code># echo &gt /etc/pacman.d/mirrorlist &lt&ltEOF
# Worldwide mirrors
Server = https://netcologne.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://freefr.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://10gbps-io.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://netix.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://kent.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://superb-dca2.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://pilotfiber.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://iweb.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://managedway.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://cfhcable.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://svwh.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://versaweb.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://cytranet.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://gigenet.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://excellmedia.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://liquidtelecom.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://phoenixnap.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://superb-sea2.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://ayera.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://ufpr.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://razaoinfo.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://jaist.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://ncu.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://nchc.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
Server = https://vorboss.dl.sourceforge.net/project/artix-linux/repos/$repo/os/$arch
EOF
# pacman -Syy
</code>
4. First off, some packages must be removed manually (sysvinit is provided by openrc and consolekit is replaced by elogind).
<code># pacman -Rdd sysvinit udev-openrc consolekit consolekit-openrc
</code>
Install the dummy systemd packages
<code># pacman -S --asdeps systemd-dummy libsystemd-dummy
</code>
5. All your packages from base and base-devel groups must be reinstalled from the ones in [system]. If you have the entire groups installed (most likely), you can simply issue:
<code># pacman -S base base-devel
</code>
Otherwise you must find only the installed ones and replace them.
<code># pacman -Qg base base-devel | awk '{print $2}' | sort | uniq > installed
</code>
Assemble the entire list
<code># pacman -Sg base base-devel | awk '{print $2}' | sort | uniq >| groups
</code>
And compare them against it
<code># pacman -S `comm -2 installed groups`
</code>
6. All -nosystemd packages must be replaced with their equivalent from the new repos.
<code># for p in `pacman -Qq|grep nosystemd`; do pacman -S `sed s/-nosystemd// <<<$p`; done
</code>
Do the same for -consolekit packages.
<br>
7. Remove more systemd cruft
<code># pacman -Rsdd systemd-sysusers
# pacman -S --needed opensysusers
</code>
8. Make sure udev, dbus and elogind services are enabled
<br>
(they should already be, but it won't hurt to re-add them)
<code># rc-update add udev boot
# rc-update add elogind boot
# rc-update add dbus default
</code>
9. Recreate your kernel's initramfs with mkinitcpio
<code># mkinitcpio -p linux (or whatever kernel you're using)
</code>
10. Reboot and profit!
<br><br>
Use some common sense when executing these instructions. Report any glitches, problems, success stories to the <a href="comments.php">comments section</a>.
<br><br>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment