Debating which to install.. Just wondering what your experiences are or whether anyone has any comparisons or preferences for OpenRC vs runit vs s6.. Think I may go with OpenRc first.
I started with runit which was good. Only thing I didn't like were the messages written on the screen while booting.
That was a bit disturbing when using no desktop/login manager. When you want to type your password and something writes at the same time into the text. So I decided to try OpenRC.
OpenRC is a bit different in it's commands etc.. but until now, everything seems good.
S6 is new to me - can't say anything about it.
Unless you're going to be doing under the hood tinkering, the biggest difference between each as an end user is the commands you'll use when you install it and the boot screen. So just pick one. (this also mostly applies to current day systemd but you didn't hear that from me)
thanks for the replies guys. s6 on Obarun is pretty slick I must say. I'll just pick one and give it a spin. Thanks
Openrc. Since I was a gentoo user and used to openRc
I myself decided to use s6 because no other distro I tried offered it; writing scripts for it is fairly simple on general as well as runit is as well to write for
From my experience:
- OpenRC works great on a desktop system where no service/deamon monitoring is needed (no support for restarting crashed programs out of the box).
- Runit is better suited for running for servers/power users.
- Never came in contact with S6, can't say.
Just for sake of completeness, openrc supports service supervision too. Openrc can be configured to use the builtin openrc supervisor, or in theory use runit or s6 supervision.
Details here: https://github.com/OpenRC/openrc/blob/master/supervise-daemon-guide.md
all three are easy to use. On the artix wiki there are explanations on how to make all 3 work. I have already tried all 3 and if you have problems with one of them you can always check my experience on the french forum.
Actually, you may use any, according to your preferences, after reading and comparing the following, imho:
https://wiki.artixlinux.org/Main/OpenRC
https://wiki.artixlinux.org/Main/Runit
https://wiki.artixlinux.org/Main/S6
Thank you I have 3 pc's and I'm currently using all 3.
I did the full switch from running Arch (for a little more than a year) to Artix with runit and things have been working very well. I don't know a whole lot about the inner workings of OpenRC or s6, but I like how simple runit makes things. I love just being able to go to two different folders to find available services and running/enabled services. The ln -s thing to enable services is very cool too! It feels pretty old-skool, I like that! :D
Also just a cool note, my boot times have been significantly shortened with runit! It is very fast now, compared to what it was with systemd!
It's hard for me to make a choice. I'll try. S6 there is no easy explanation except the Artix wiki. My preference goes to OpenRC and Runit and the choice between the two is difficult. I've seen videos where people prefer Runit for the simplicity of these commands and in the end I think I prefer Runit too.
I think you are doing the right thing by having and using all three of them until one stands out or is more comfortable for you. I think just trying them is the best thing to do for your case.
Glad to hear that the page was helpful. For whatever reason, s6 has not been tried by many distros, so resources on its usage are lacking. The official s6 documentation is very good, but it's probably a bit hard to navigate if you don't have a good conceptual overview of s6/s6-rc/s6-linux-init.
Wikipedia has a good overview and history. google on "linux init vs runit s6 openrc -systemd" for more comparisons.
I have tried s6, runit, and openrc.
OpenRC allows you to configure `need`, `want`, `after`, and `before`. Without `want` directive, there is going to be a lot of hassle.
`after` and `before` are not very important. However, OpenRC needs services to go background and produce PID files. This is no good.
OpenRC still retains /etc/inittab which is awful.
runit just hands over the responsibility of dependency management to run script which you write yourself.
So, you can handle `want` directives in run scripts which are just shell scripts.
One problem of runit is that an init service has to constantly check if all dependencies started.
If one of the dependencies permanently failed, the init service would be stuck in a loop.
s6 handles only strict dependencies. With s6, you have to compile database. Compiling database is a nuisance.
OpenRC automatically creates its own database cache. I also don't like the fact that dependencies are a file in s6. Dependencies file and lack of want directive create aggressive conflicts over dependencies among administrators and different init services. Dependencies should be a directory instead. s6 should acquire want directive. Anopa is better than s6, but it is dead.
None is excellent in my experiences. But, I think I am going to try runit again. With runit, it's at least easy to write my own scripts and deploy them.
Ι am not sure if you are referring to s6-rc (which is what artix uses) or s6 :(
anopa is build on top of s6, it is quite different from s6-rc and seems abandoned. Some of the missing functionality of s6-rc (optional dependencies) can be done on top of s6-rc and the same is true for the compiled db creation. Of course optional dependencies (wants) will be enabled when the service is enabled an not on runtime. The above is not theoretical - 66 does them (and more) already.
I still can't differentiate s6, s6-rc, and s6-linux-init. Is there a way to make 66 work without writing a lot of code on artix linux?
By the way, I don't like the name 66 because it reminds me of 666, a symbol of devil.
s6 is process supervision suite. That is a suite of tools that can reliably and cleanly start, stop, monitor and restart long-running programs/services/daemons. It is analogous to runit sans the runit-init part.
s6-rc is a service manager. That is a suite of tools that builds on s6 and adds a lot of features. Artix uses s6-rc+s6-linux-init and refers to the solution as s6.
s6-linux-init is a project that creates the missing pieces to use s6 or s6-rc as full init systems.
66 is a set of programs that make implementation and control of s6/s6-rc services easier and adds some really nice features to them.
It should not be difficult to use 66 on artix - both obarun and artix are based on arch, but it will need some work. Ι am using it on voidlinux :)
https://www.youtube.com/watch?v=sNjWpZmxDgg
:o
I prefer runit. Much simpler than the others and faster, at least on my computers. Greetings.
There are daemons on your computer
About S6
s6/s6-rc vs systemd, or why you probably do not need systemd
https://forums.gentoo.org/viewtopic-t-1105854.html
I should add one thing: S6 works well within Docker.
it can replace supervisord
S6 Made Easy, with the S6 Overlay | Tutum Blog
https://tutumcloud.wordpress.com/2015/05/20/s6-made-easy-with-the-s6-overlay/
Programs should not crash in the first place (eg pulseaudio :))
I can work with openrc & sysv-rc but know nothing about s6 or dinit.
Before i install i install artix with s6 or dinit i must understand it.
How do i enable & disable services to be run or not run at boot with s6 or dinit?
What are possible advantages of s6 or dinit ?
I know this post is old, but I just wanted to point out that dinit addresses every negative that you mention:
- supports both "need" and "want" dependencies (as well as "before" and "after", just like OpenRC)
- doesn't require services to go into background or mandate use of pid file - can supervise foreground processes
- doesn't use inittab
- doesn't need recompilation of service database - just edit the service descriptions
- ability to configure dependencies via a directory (
waits-for.d
directive, one dependency per file in the directory)
https://wiki.artixlinux.org/Main/S6
https://wiki.artixlinux.org/Main/Dinit
For Dinit the "dinitctl enable" and "dinitctl disable" commands can be used to make or prevent a service run at boot. I'm not actually certain what the recommended procedure is for S6-RC.
https://github.com/davmac314/dinit/blob/master/doc/COMPARISON
https://forum.artixlinux.org/index.php/topic,3498.0.html
I'm the author of Dinit so I'm biased. Here's a description of Dinit from Chimera, which compares it to some other systems:
It's also got a reputation for being fast (fast boot times). However, I will say that I personally think S6 is also extremely well engineered and solid.
Indeed Dinit is probably the fastest or at least on tie with runit.
I switched yesterday to Dinit on my big PC aswell, I had it on testing on the thinkpad for about one year now and been happy with it, so it's an honour and with this occasion I wish to thank you for your work!
I have a question regarding enable/disable and listing of which service is enabled or not: In my utilities script I came up these last few months with a method of going through the dependency chains of the services to see a list of what's enabled, this is meant to complement dinitctl list with a complete overview of sorts:
find /etc/dinit.d/*.d -not -type d -exec grep -E 'waits|depends' {} + | tee >(cut -d= -f2) | cut -d/ -f5 | cut -d: -f1 | sort -u | while read -r s; do echo $s; grep -rlE "waits-for.d.*$s|depends.*$s" /etc/dinit.d | cut -d/ -f4; done | sort -u
Of course this has a caveat: If I run dinitctl disable on a service which is present in the dependency chain of another, it will continue to show up as enabled (which is correct, the service is still running and will still be brought up on boot), however this method has no way of telling if the service is explicitly disabled on not (with my thought going towards e.g. how OpenRC handles it).
Is there a way to force disable a service without having to manually edit it's parent?
Or, to do away with my above method, something like a tree view of the dependencies, or a dependency view per-service (like dinitctl status xyz lists - Activation: start due to dependent(s) - to list which dependent(s) they actually are)?
I'm glad to hear that it's working well for you!
There's not, if the parent specifies the dependency via a
waits-for line in its service description file.
If the parent has a
waits-for.d directory and specifies the dependency via that, you can use
dinitctl disable --from (parent) (service)Also, if the parent (dependent) doesn't really
need a service, it can specify "
after =" instead of "
waits-for =". This has the advantage that you can just use a standard "dinitctl disable"/"enable" without worrying about the other dependent services.
In summary, it's a question of how the services and the dependencies are defined. There are ways of doing this (user "after =" or "waits-for.d =") so you can more easily enable and disable services, but the Artix services might not be defined optimally for that.
Currently there's not - it would be nice, obviously, so perhaps something I can think about (or someone can contribute!). Right now I'm trying to finalise the features I had already set for the beta release which I hope to get out sometime in the next few weeks, so I don't want to add new features into that mix, but once I've got 1.0 out it will be time to think about what features would still be useful.
Got it, appreciate your consideration.
Certainly waiting for the beta versions, I did not even sense that it was in early development at all :)
To be clear, every effort is made to ensure quality, stability and reliability even at this stage. But, it's not yet feature complete - and therefore is still "alpha".
Runit. I like the daemon symlinking thing.
I too am a runit fan. It's simple enough that I can understand the whole mechanism. The only thing I dislike is the logging. I try to use syslog as the added complexity of the individual logs is a distraction.
I have played with dinit (using the xfce-dinit iso), but it seemed to be more complicated than I need.
The s6-log utility is one of the reasons I love s6. I don't even have a syslog daemon installed, just logrotate for the daemons that either don't play nice with redirecting stdout or when I don't want everything condensed into one log file.
On the other hand, if dinit already has more features than you need then I doubt s6 will suit you. I'd liken it to learning pacman... most of the time it's easy and you only need "-Syu" but when you have a problem or want to do something more involved it can suddenly feel a little complex.
OpenRC because I'm very familiar with it. Does anyone have any info on the comparisons between the other init systems?