Skip to main content
Topic: Require a basic understanding of s6 Service Management (Read 1415 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Require a basic understanding of s6 Service Management

Okay so...After what I would consider pretty extensive studying of Skarnet.org and the Gentoo Wiki pages for s6, i've learned very little about how to actually enable services the same way you can with systemd or runit.

My main issue is that i'm unable to set Lightdm to autostart at boot. I follow the Artix install guide by "EF - Linux Made Simple" on YT. I was able to follow most of the steps he did. I will acknowledge the video is over a year old as of this writing and s6 has likely changed slightly as well as the Artix install process. Never the less, I made it through with a complete Artix install with Xmonad and currently I can run normally by manually starting sddm. However, I would prefer to use Lightdm. And more than that I would like to actually understand how s6 works.

What is the purpose of the compiled directory? How to I enable a service like Lightdm to auto start? What are bundles and how do I update them? Add to them? etc.

Using the command below per the video:

[kaiser@artix ~] s6-rc-bundle-update add default lightdm
s6-rc-bundle: fatal: indentifier lightdm does not exists in database /run/s6-rc/compiled
Error when trying to add 'lightdm'!

Re: Require a basic understanding of s6 Service Management

Reply #1
I think you merely forgot to install the init script (lightdm-s6).

Re: Require a basic understanding of s6 Service Management

Reply #2
Well I downloaded the script, re ran the command and it took. But lightdm still doesn't start. Can't manaully invoke it either but that's probably a problem with my understanding of the DM and no fault of s6. My original position remains, I would like a better explanation of s6 as a program.

Re: Require a basic understanding of s6 Service Management

Reply #3
Lightdm needs a greeter installed to actually start. As for s6 itself, there's a basic overview of how we put all the pieces together in Artix on the wiki page. The author also gave a talk about it at a FOSDEM that you will probably find helpful.

Re: Require a basic understanding of s6 Service Management

Reply #4
I'll give that video a watch. I already have the gtk greeter installed and set up properly. When calling lightdm, i lose my TTY and then just get a blinking cursor. Not sure what's the deal.

Re: Require a basic understanding of s6 Service Management

Reply #5
Okay, both of these items were helpful in different ways. The video made the wiki page article easier to understand so thankyou for both items. I wanna make sure I absorbed everything.

s6-rc, the service manager, uses "bundles" to launch userland services. Specifically the "default" bundle. If the bundle does not exist initially, it will just be invoked with // s6-rc-bundle add default lightdm // for example. But if it already exists, // s6-rc-bundle-update add default lightdm //, is used instead.

Assuming this verbiage is correct and I'm on the same page, it follows then that you need the -s6 dependency packages that are the helper scripts to enable this to function in the first place. As you stated earlier I was missing lightdm-s6 and that prevented it from updating the bundle. Is this the case for all services that require enabling? Is there a way I can do this manually?

Also i'm still a little confused about the compiled database portion. How do we interact with it? How do I add a service to the compiled list rather than a bundle or is that even a thing?

Re: Require a basic understanding of s6 Service Management

Reply #6
In Artix, we separate the base package from the script package. So for anything that has services, you will also need to install the script package (dbus-s6, elogind-s6, etc.). It works like this for any init on Artix.

s6-rc uses a database to store all information about the services. All service managers have a database of some sort actually (openrc, systemd, etc.). They just mostly hide it from you. s6-rc requires you to manage it yourself. I agree it's a little annoying and not exactly user-friendly which is why Artix has scripts to make it easier. The author is working on a big s6-rc rewrite to make all sorts of things better (including the database thing), but that's a separate topic. Anyways after you compile a s6-rc database, you're actually not supposed to interact with it. You technically can move it around if you want, but in general you don't do anything with it besides perhaps delete old/unused databases every now and then.

If you want to update/add services to a database, you should edit the source directories and compile a new database. Installing a script package from Artix does all of that automatically for you, but doing it yourself requires a little more work. If you have not read s6-rc documentation yet. I would recommend so. It's a vital part of the puzzle.

Re: Require a basic understanding of s6 Service Management

Reply #7
Okay that all makes sense. I imagine I will eventually run across some package that doesn't have the -s6 scripts in the repos. Is there an easy way to explain how to install packages manually using s6? Is compiling required without the helper scripts? I guess to give a little more context, I'm planning to eventually wet my feet with LFS and i'd like to use s6 as my init system. Hence why i'm digging for a better understanding of the entire system.

 

Re: Require a basic understanding of s6 Service Management

Reply #8
If you want to use s6-rc, you will need to compile databases yes. You should read the upstream s6-rc documentation for more details on that. I'll just point out that using s6-rc is completely optional. You could boot with s6 and use a different service manager such as openrc if you wish.