Manjaro free of Systemd – Obarun-ization – S6 init

For all of those who like their custom made minimal desktops, i3, awasome, jwm, openbox, etc. or are pure console freaks, there is Arch and there is an established and verified way to change from Arch to Artix and have OpenRC and lately Runit as an init system.  This makes a low resources fast booting machine faster and lighter yet.  Artix is progressively rebuilding all Arch pkgs and growing their own repositories, while 2/3 of Arch pkgs can be used still straight out of Arch.  But it is a blend of things with the Arch-Core repository left out.

For those that don’t like or know how to tinker too much with stuff, like conf and rc files, they prefer a precustomized desktop with all the possible bells and whistles predesigned by the distro designers.  Ubuntu, Mint, and Manjaro are really such products appealing to such audience.  But they all have the resource hog complex init system we love to hate.  We have to admit that Manjaro’s desktop designs are state of the art, aesthetically.  People get addicted to Manjaro and stick with it, even if they like further customizing things themselves.

But then there is a gray area of those who slowly are graduating from OEM ready out of the box setups to making the same installation lighter and faster.  Thhttps://web.obarun.org/assets/obsite/images/ob_logo_slogan.pngat is to improve on the core system where a desktop really floats on.  So how do you go from a Manjaro full desktop installation to something faster and lighterObarun

Obarun is blistering fast on its own, and its desktops from which to choose from during installation are really well engineered and aesthetically pleasing.  Really, that is what I use daily and may have added things but rarely have I changed what Obarun had installed.  It really is nice.  But some of you may want more.  They like their Manjaro experience but they are stuck with the resources hungry monolith called systemd.  Some of you like things like Gnome, and Mate, and Cinnamon, and we are sorry.  You may need to change habits or will have a hell of a lot of cleaning up to do.  Those desktops are infested by the plague.  That doesn’t mean that Gnome, and Pulseaudio, and NetworkManager, will not work with Obarun, they mostly do.  But we can still feel sorry for you.

So we decided to experiment and we chose from the list the community edition of Manjaro LXDE.  If you are into LXDE or openbox, there is no LXDE like the LXDE from Manjaro.  It is absolutely astonishing!  https://osdn.net/projects/manjaro-community/storage/lxde/17.1.7  And this is generally what Manjaro does best.  Taking desktops from Arch and making them fancier and install a ready to go desktop better than most.  No need for tinkering or fixing or tuning.  Just install and go to work or play.

Obarun has its own repository for some system files, the “Marvel” of an init system (we think it is far better than Runit and OpenRC but people just don’t know yet).    Below the Obarun repository normally is ALL of Arch repositories.  There is priority in system files and init system from Obarun, the rest is plain Jane Arch.  Obarun also has some really creative tools, such as making a live-iso out of your running system (a live clone of your system is about the best backup answer we can think about, other than making a full copy of the shut and parked system with dd that takes for ever and is huge).  There is the obarun live-installer, which you can use to make a new installation while running Obarun.  And there are many other surprises waiting and keep being built in Obarun.  So you have your Arch and a whole new experience in booting up and running.  Seriously, most people we have demonstrated an Obarun installation to, the first reaction to Obarun booting was: “Is this it, I can login already?”.  It is hard to believe it is that simple and quick that makes you wonder what everyone else is doing waiting in front of a screen while text is running 6 pages long.  Then you start what it is that you have installed, you look at the cpu and Ram and most likely you go WOW!  This can’t be right, there must be something missing.  There is nothing missing except what you intentionally didn’t want present.  S6 does NOT decide what you need running, you tell s6 what you want running and what not.

So, to make a long story not so long, can you change Manjaro to dump its native init system (system-D-isease) and adopt S6?  Yes, you can, we tried it and it works.

This is a one shot change while you are on Manjaro LXDE, and the next time you boot you will be on S6 and your desktop will still be the same.

The instructions are an improvisation of what Eric Vidal from Obarun had posted as a method to transform Arch into Obarun.  In Italic is notes we added as we felt were needed or added due to the nature of Manjaro vs Arch.  It may be of interest to look at Artix’s instructions of moving from Manjaro to Artix and utilising the OpenRC init system.

 

1  first remove automatic login or DM

we left autologin as it was and just removed the DM, in our case it was 
lightdm.  If you are working on a new installation to replicate this it 
might be best to leave autologin off during installation and use a normal 
login for user.

2  pass to console

Although Eric advised to pass to console, we just worked on terminal from 
within the desktop as it is easier to copy past things back and forth and 
make notes of output.
If you have more than one kernels installed, and Manjaro has a wide variety 
of kernels available, you can just leave the active kernel and remove the 
rest so you can speed up the process, as every other system file that will 
be installed will need to update all kernels.
3  general step to follow :

append pacman.conf with obarun repo and SigLevel set to Never
The Obarun repositories MUST go before Core (Manjaro's main repository) so 
it will be Obarun, core, extra, community.


#[obarun-testing]
#SigLevel = Never
#SigLevel = Required
#Server = https://repo.obarun.org/$arch/testing

[obarun]
SigLevel = Never
#SigLevel = Required 
Server = https://repo.obarun.org/$arch
synchronize  : # pacman -Syy

install obarun-keyring  # pacman -S obarun-keyring

modify pacman.conf setting SigLevel to Required

you can also add obarun-keyring to the line of pacman.conf that reads SyncFirst
SyncFirst    = manjaro-system pacman archlinux-keyring manjaro-keyring obarun-keyring
 synchronize again with # pacman -Syy
After you use # pacman -Syy to update, # pacman -S obarun-keyring
then re-edit /etc/pacman.conf  erase the Siglevel = Never and leave 
Siglevel = Required and take the # comment sign out from in front.  
You can use the Obarun testing repository or you can leave it commented 
for whenever you need to use it, if ever.

Also modify this line and add the obarun-keyring so your database will 
be tested for signatures from Manjaro, Arch, and Obarun.
SyncFirst = manjaro-system archlinux-keyring manjaro-keyring obarun-keyring
4  install applysys pacopts
# sudo pacman -S applysys pacopts

keep a list of the active daemons so you can activate the appropriate services
later 
# systemctl list-units --state=running | grep -v systemd | awk '{print $1}' | grep service > daemon.list
# cat daemon.list 

in our case:

accounts-daemon.service
cronie.service
dbus.service
lvm2-lvmetad.service
ModemManager.service
NetworkManager.service
ntpd.service
pamac-system.service
polkit.service
rtkit-daemon.service
udisks2.service
user@1000.service

5  remove crap with -Rnsudd systemd libsystemd systemd-sysvcompat
# sudo pacman -Rnsudd systemd libsystemd systemd-sysvcompat

6  install the marvel with -S s6-suite eudev-obarun consolekit2
# sudo pacman -S s6-suite eudev consolekit2

and a marvel it is!

:: There are 12 members in group s6-suite:
:: Repository obarun
 1) execline 2) mdevd 3) s6 4) s6-boot 5) s6-dns 6) s6-linux-init 
 7) s6-linux-utils 8) s6-networking 9) s6-portable-utils  10) s6-rc 
 11) s6opts 12) skalibs

Install all 12


7  launch pacopts origin command and replace all packages with the good one 
when it ask you. be carefull of the messages when filesystem is installed 
and make the necessaries change about x.pacnew files.

$ sudo pacopts origin  (and output to compare yours)
:: package accountsservice do not come from obarun repository
:: package bluez do not come from obarun repository
:: package bluez-libs do not come from obarun repository
:: package crda do not come from obarun repository
:: package cups do not come from obarun repository
:: package cups-filters do not come from obarun repository
:: package cups-pdf do not come from obarun repository
:: package dbus do not come from obarun repository
:: package device-mapper do not come from obarun repository
:: package dhcpcd do not come from obarun repository
:: package dmraid do not come from obarun repository
:: package filesystem do not come from obarun repository
:: package gtk2 do not come from obarun repository
:: package gvfs do not come from obarun repository
:: package gvfs-afc do not come from obarun repository
:: package gvfs-gphoto2 do not come from obarun repository
:: package gvfs-mtp do not come from obarun repository
:: package gvfs-nfs do not come from obarun repository
:: package gvfs-smb do not come from obarun repository
:: package iptables do not come from obarun repository
:: package libcups do not come from obarun repository
:: package libgudev do not come from obarun repository
:: package libinput do not come from obarun repository
:: package libmbim do not come from obarun repository
:: package libmm-glib do not come from obarun repository
:: package libnm do not come from obarun repository
:: package libnm-glib do not come from obarun repository
:: package libpulse do not come from obarun repository
:: package libusb do not come from obarun repository
:: package libwacom do not come from obarun repository
:: package libwbclient do not come from obarun repository
:: package lsb-release do not come from obarun repository
:: package lvm2 do not come from obarun repository
:: package mkinitcpio do not come from obarun repository
:: package modemmanager do not come from obarun repository
:: package networkmanager do not come from obarun repository
:: package nfs-utils do not come from obarun repository
:: package nfsidmap do not come from obarun repository
:: package openssh do not come from obarun repository
:: package openvpn do not come from obarun repository
:: package pcmciautils do not come from obarun repository
:: package pcsclite do not come from obarun repository
:: package polkit do not come from obarun repository
:: package procps-ng do not come from obarun repository
:: package pulseaudio do not come from obarun repository
:: package pulseaudio-bluetooth do not come from obarun repository
:: package pulseaudio-zeroconf do not come from obarun repository
:: package qt5-base do not come from obarun repository
:: package rpcbind do not come from obarun repository
:: package rtkit do not come from obarun repository
:: package samba do not come from obarun repository
:: package smbclient do not come from obarun repository
:: package subversion do not come from obarun repository
:: package udisks2 do not come from obarun repository
:: package upower do not come from obarun repository
:: package xdg-user-dirs do not come from obarun repository
:: package xf86-input-evdev do not come from obarun repository
:: package xf86-input-libinput do not come from obarun repository
:: package xf86-video-amdgpu do not come from obarun repository
:: package xf86-video-ati do not come from obarun repository
:: package xf86-video-intel do not come from obarun repository
:: package xf86-video-nouveau do not come from obarun repository
:: Do you want to replace this package(s)? [y|n]  Y (yes yes yes)

resolving dependencies...

replace all of the above by hitting y y y to all.
Take really a close look of the output for any red lines of warnings or 
errors and take care of anything that was not reinstalled properly.
You may encounter a problem, a pkg that does not want to be replaced easy.  
Remove and reinstall, it will automatically come from Obarun as obarun's 
repository is above (Arch Core system extra community on pacman.conf))

the following are replacement .conf files that came from replacing the 
appropriate Manjaro pkgs with Obarun's.
Some don't require much attention and some do, do a little research on 
your own.  Shells for example are important for Obarun as it is heavy on 
zsh and there is extensive work done on that shell.  You will learn to 
love it as we did.

(1/1) upgrading filesystem [###########################] 100%
warning: /etc/vconsole.conf saved as /etc/vconsole.conf.pacsave
warning: /etc/locale.conf saved as /etc/locale.conf.pacsave
warning: /etc/hostname saved as /etc/hostname.pacsave
warning: /etc/shells installed as /etc/shells.pacnew
warning: /etc/gshadow installed as /etc/gshadow.pacnew
warning: /etc/group installed as /etc/group.pacnew
warning: /etc/crypttab installed as /etc/crypttab.pacnew
warning: /etc/hosts installed as /etc/hosts.pacnew
warning: /etc/passwd installed as /etc/passwd.pacnew
warning: /etc/shadow installed as /etc/shadow.pacnew
warning: /etc/resolv.conf installed as /etc/resolv.conf.pacnew

lsb-release-1.4-15-any 18,4 KiB 3,59M/s 00:00 [######################] 100%
(1/1) checking keys in keyring [##################################] 100%
(1/1) checking package integrity [##################################] 100%
(1/1) loading package files [##################################] 100%
(1/1) checking for file conflicts [##################################] 100%
error: failed to commit transaction (conflicting files)
lsb-release: /etc/lsb-release exists in filesystem
Errors occurred, no packages were upgraded.
resolving dependencies...


looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: pulseaudio-bluetooth: installing pulseaudio (11.1-2) breaks 
 dependency 'pulseaudio=11.1-1'
:: pulseaudio-zeroconf: installing pulseaudio (11.1-2) breaks 
 dependency 'pulseaudio=11.1-1'
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: pulseaudio-zeroconf: installing pulseaudio (11.1-2) breaks dependency 
'pulseaudio=11.1-1'
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: pulseaudio-bluetooth: installing pulseaudio (11.1-2) breaks dependency 
 'pulseaudio=11.1-1'
resolving dependencies...
looking for conflicting packages...

sudo pacman -Rnsudd lib32-libcanberra-pulse lib32-libpulse libcanberra-pulse manjaro-pulse pavucontrol pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-ctl pulseaudio-zeroconf xfce4-volumed-pulse
 libpulse manjaro-lxde-xfce4-volumed-pulse xfce4-volumed-pulse

sudo pacman -S lsb-release --force

You will be removing pulseaudio with the above command and when you are all 
done, if audio does not work with alsa you can install it all back but in a 
way that will work on Obarun and s6.  So make a note of what you have removed
 if you like to re-install them later.

 lsb-release does not want to upgrade, it is the same version with obarun's, 
so use force to force it in place.

New optional dependencies for xdg-user-dirs
 xdg-user-dirs-s6rcserv: xdg-user-dirs rc service
resolving dependencies...

8  modify the s6.conf to suit your needs
# sudo nano /etc/s6/s6.conf

launch pacopts service and install the service that you need when it asks you.

9 sudo pacopts service

10  sudo pacman -S xorg

Trust us on this one, unexplained in detail, but there are packages in 
Manjaro that have identical version numbers with Obarun, and you don't want 
you X to be confused.  So by reinstalling over it you are forcing everything 
on Xorg to come from Obarun.  There may be a more scientific way, but this 
is one that works.

11 run # sudo pacman -Su
update and upgrade everything.

12 
error: missing 'systemd' dependency for 'colord'
error: missing 'libpulse' dependency for 'conky'
error: missing 'libpulse' dependency for 'ffmpeg'
error: missing 'libpulse' dependency for 'gst-plugins-good'
error: missing 'libsystemd' dependency for 'libatasmart'
error: missing 'libsystemd' dependency for 'util-linux'

Take each one on the list and reinstall as an obarun pkg.  Due to version 
numbers and signatures from Manjaro and Arch pacopts does not pick them up 
as "foreign" packages and their dependencies are different than what they 
are in Obarun.

Simply:
# pacman -S colord ffmpeg gst-plugins-good libatasmart util-linux
which don't have libsystemd dependencies on them.

13 kill the pid 1 with kill 1 command then press CTRL-C when the tty 
appear(this will reboot the machine) after the reboot, log on and enable 
service with s6opts program finally reboot for the last time done You don't 
need to hit ctrl-c or anything else 
# sudo kill 1   
reboots the system fine and this is from a terminal in desktop.. 

Obviously, i think this pseudo conversion need improvement, so test it and make a report 
It worked fine in Arch, it needed a little more pushing and shoving on Manjaro. 

14  For conky, if you like conky, in Obarun, it is best to use the AUR package 
conky-git that will compile on your new system.
If you want yaourt do # sudo pacman -S yaourt.  If you like the yaourt tui do 
# yaourt -S yaourt-gui
Then use yaourt or yaourt-gui to install the conky-git package:  
# yaourt -S conky-git

(after it was published Eric commented "About package coming from AUR, yaourt 
works well but "pacopts aur -I package_to_install" works too wink."


15  # sudo s6opts list  (will give you an output like this:)

current -> Default
previous -> Default

Classic service(s)

networkmanager :: up (pid 730) 1933 seconds

Rc longruns service(s)

s6rc-fdholder :: down (exitcode 0) 1942 seconds, ready 1942 seconds
 s6rc-oneshot-runner :: up (pid 260) 1941 seconds, ready 1941 seconds

Rc oneshots service(s)


Rc bundles

All

You may need to add the networkmanager service manually, somehow it wasn't 
automatically installed.

# sudo pacman -S networkmanager networkmanager-s6rcserv networkmanager-s6serv 
# sudo s6opts enable networkmanager  (for next time you boot)
# sudo s6opts up networkmanager (for immidiate effect)

(Note: after publication of this Eric corrected the confusion - Obarun comes 
normally with connman - so here is what he suggests: )

"About networkmanager service :
if the networkmanager package is installed before using "pacopts service" 
command, the script should ask you if you want to install networkmanager-s6serv 
or networkmanager-s6rcserv.
Only install one of them, the networkmanager-s6serv is the easier way to 
use. Also, normally, you don't need to do "s6opts up networkmanager" right 
after enabling it. Enabling the service starts it directly too."

So, I stand corrected, here is the correct way to go: 
# sudo pacman -S networkmanager networkmanager-s6serv  
# sudo s6opts enable networkmanager 

==========================
At this point you can reboot and you are done.  When you log in at console 
just type xinit and your desktop will come up and should be just like it was 
on Manjaro only less ram and less processes running initially.  It is like 
you stepped up your processor and got some extra Ram to work with.

To have a DM like lightdm come up straight from boot is something I am working 
on and I will update this information when I figure it out.

--- future reference ------
If you get any s6 errors now or in the future here is a test whether your init's database is correct.

Well now try the following(all this command need to be made with root privilegies)

# s6-rc-compile /etc/s6/compiled/newdefault /etc/s6/rc

this will create a new database newdefault with all services present in the directory rc
now point the symlinks current to this new database to be able to boot with it at the next boot

# ln -sTf /etc/s6/compiled/newdefault /etc/s6/compiled/current

now reboot and look if the directory /run/user/master exist.
If it doesn't exist you are OK.  If it does do the following:

# rm -rf /etc/s6/compiled/default

# s6-rc-compile /etc/s6/compiled/default /etc/s6/rc

# ln -sTf /etc/s6/compiled/default /etc/s6/compiled/current

finally reboot.

 

 

This is it, Manjaro starting with S6 and obarun as a hybrid with manjaro.  At this point you can go wilder, you can substitute repositories and mirrors to Arch, easy, update and upgrade, or you can use Artix where there is no chance anything with systemd dependencies will ever come in.  Now Artix has some substitute libraries for systemd dependencies, Obarun just blocks them.

If you show up at obarun’s forum for support please indicate you are running a hybrid like this and not obarun cleanly installed.  One of the drawbacks of running a hybrid is you may get no support or wrong support from either system.  You are on your own really, but you may love it anyway!

PLEASE let us know as soon as you encounter a problem so we may add notes and corrections as things may change from day to day.  Both Manjaro and Obarun are rolling releases, we can never know what tomorrow will be like.  Most likely there will not be a problem.  Alternative desktops and setups may bring a little different experience but the core system changes and boots.  Everything else can be patched.

Enjoy

One thought on “Manjaro free of Systemd – Obarun-ization – S6 init

  1. After running this project for a while and continue to update and upgrade packages from both Manjaro and its Obarun overhead, everything kept working as expected (or worked when it was not expected to) and we have laid it to rest. We backed up the installation and we may revive it in the future if interest is renewed. With other Arch-based distros the process is the same or simpler, just as Eric had prescribed, and we have tried Antergos, Arch-Strike, Black-Arch, arcolinux, ..etc. They are basically Arch with extra repositories for some of their own packages and configurations, but pure Arch at heart. So Obarun works with all of them. Manjaro, since they use their own repositories, was perceived as a challenge, but really Manjaro is not that different from Arch. It is like the Ubuntu of Arch.

    Liked by 1 person

If your comment is considered off-topic a new topic will be created with your comment to continue a different discussion. This community is based on open and free communication, meaning we must all respect all in minimizing the exercise of freedom to disrupt such communication. Feel free to post what you think but keep in mind the subject matter discussed. It is just as easy to start a new topic as it is to dilute the content of an existing discussion.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.