S6 init system with s6-66 service manager in Antix-init-diversity spin

Yes s6-66 provides a much neater way to write services (similar to systemd unit files). The most “challenging” part is getting the right [start] section especially the @execute= script right.

s6-rc on the other hand has the same challenge as 66 with run scripts, but also requires a lot of easy but repetitive work which is avoided with 66 such as:

  • Creating the same logger script for each service with only the service name needing editing.
  • Creating identical .conf file for each service.
  • Needing to manually compile after each change.
2 Likes

@ProwlerGr
Now a more complicated daemon.
I just installed spice-vdagent. ( the virt-manager equivalent of guest additions)

The  spice guest agent for Linux consists of 2 parts, a system wide dae‐
       mon spice-vdagentd and a X11 session agent spice-vdagent of which  there
       is one per X11 session.
       spice-vdagent  gets  automatically started in desktop environments which
       honor /etc/xdg/autostart, and under gdm.

so 2 daemons, neither of which are running after the install.

We start spice-vdagentd first

[main]
@type=classic
@description="spice-vdagentd daemon"
@version=0.0.1
@user=(root)

[start]
@execute=(
    /sbin/spice-vdagentd
)
root@antix-init-diversity:~# 66 parse spice-vdagentd
parse: info: Parsed successfully: spice-vdagentd-log at tree: global
parse: info: Parsed successfully: spice-vdagentd at tree: global
root@antix-init-diversity:~# 66 start spice-vdagentd
start: info: Initialized successfully: spice-vdagentd
start: info: Initialized successfully: spice-vdagentd-log
signal: info: Successfully started service: spice-vdagentd-log
signal: info: Successfully started service: spice-vdagentd
root@antix-init-diversity:~# ps ax | grep spice
 8723 ?        S      0:00 s6-supervise spice-vdagentd-log
 8724 ?        S      0:00 s6-supervise spice-vdagentd
 8731 ?        Ss     0:00 /usr/bin/s6-log -d3 n3 s1000000 /var/log/66/spice-vdagentd

So it only starts the s6-log process, not the daemon itself.
Try again with verbose
66 -v 4 strart spice-vdagentd
nothing useful
Start it by hand

root@antix-init-diversity:~# spice-vdagentd
root@antix-init-diversity:~# ps ax | grep spice
  835 ?        S      0:00 s6-supervise spice-vdagentd-log
  836 ?        S      0:00 s6-supervise spice-vdagentd
  907 ?        Ss     0:00 /usr/bin/s6-log -d3 n3 s1000000 /var/log/66/spice-vdagentd
 3558 pts/1    S+     0:00 grep spice

It will not run ???
strace spice-vdagentd
it seems to be missing some libraries
That is funny, I have used spice-vdagent in Antix before without problems.

2 Likes

I’ve tested this & works in Devuan

[main]
@type=classic
@description="spice-vdagentd daemon"
@version=0.0.1
@user=(root)
@notify=3

[start]
@execute=(
    foreground = { mkdir -p /run/spice-vdagentd }
    foreground = { chmod 0755 /run/spice-vdagentd }
    /usr/sbin/spice-vdagentd -x -d
)

Maybe test if this does the trick in antiX

3 Likes

Will do tomorrow.
I chose spice vdagent for 2 reasons

  • more complicated
  • may help with ctrl alt f12

Hi there,

Creator of Obarun and 66 here.

First at all, thanks for your interest in 66.
As the forum do not let me post what i need to post, (complaining about new users capabilities about number of links), i provide a link View paste B6QQ to see it. Maybe a older FOSS community forum users can paste it here for me?

2 Likes

Hi,
and thanks for contacting us
I was working with 66 in Obarun and was having some difficulties , possibly because The version of 66 in Obarun was older.
So when these init diversity spins turned up, I switched to those. With a deal of help from @ProwlerGr I am slowly getting on top of s6.
I am interested in all init systems except systemd. I have used runit a lot in Void and I did a review of runit here

What I am aiming for is a similar review of S6. I have some way to go with understanding, before I could review S6 properly. There is way more to it than runit.

I will try and put your link up here

https://bpa.st/B6QQ

I hope that does it.
It is very extensive… I need to read carefully…I feel like posting the whole text
here for all forum users to see.
Give me time to read. There will be questions
Regards
Neville

3 Likes

Apparently i’m a trusted users now :). So i copy/paste my previous bpaste file

Hi there,

Creator of Obarun and 66 here.

First at all, thanks for your interest in 66.

I saw a lot of mistakes and misunderstood about the use of 66. So, i decide to register and help you a little bit if you are agree with that.

I saw a lot of 66 parse invocation. 99.9% of the time you don’t need to call this command. Let’s take a concrete example with the fresh creation or installation of the spice-vdagentd.

I need first to provide the frontend file of the service. This frontend file can be provide at two different places. The first one is /usr/share/66/service (default can be fixed at compilation time by the --with-system-service flag) . This directory is used by upstream (meaning packager of the distribution) to install and provide services for the system. This directory is not expected to be manipulated by sysadmin/user because every changes will be overwritten at update by the packager.

The second place is /etc/66/service (can be fixed at compilation time by the --with-sysadmin-service flag). This directory is expected to be handled by sysadmin/user. This is the place to use to define your personal frontend file. 66 do not touch this directory, and the packager should not touch it.

So, in short, i install my spice-vdagentd at /etc/66/service/spice-vdagentd with this following contents


[main]

@type=classic

@description="spice-vdagentd daemon"

@version=0.0.1

@user=(root)

@notify=3

[start]

@execute=(

foreground = { mkdir -p /run/spice-vdagentd }

foreground = { chmod 0755 /run/spice-vdagentd }

/usr/sbin/spice-vdagentd -x -d

)

Let’s detail a little bit this frontend file. I saw a lot of error when you tried to run sshd. The main reason of your first fail is due of the declaration of the @notify key. When you @notify you tell at 66 to use the notification readiness feature of s6. That means that 66 will block the service until the daemon write something at the file descriptor 3 (@notify=3) in our example. As the spice-vdagentd never send something to this fd, the process hang and you need to press Ctrl + c to fail out of the hanged process.

A perfect example for that is Dbus. Dbus daemon provide the option --print-pid which tell dbus to send a character to the fd describe with the --print-pid option when its ready. So, if you do --print-pid=3 and you set @notify=3, 66 will wait for the notification of the dbus daemon at fd 3. When something is written at this fd by the dbus daemon, 66 consider dbus as ready to serve and continue to start other services depending on it if any.

So, here, you should not use the @notify field. However, you can avoid the hang process using the @timeout-kill key. For instance, using @timeout-kill=3000 tell 66 to wait for the service to be up and exit with crash exit code if the service is not up after 3 seconds (3000 milliseconds). In that way, even if you use @notify field and the service never write something to the fd, 66 will stop the process after 3000 milliseconds (meaning 3 seconds).

Well, for now our service become


[main]

@type=classic

@description="spice-vdagentd daemon"

@version=0.0.1

@user=(root)

[start]

@execute=(

foreground = { mkdir -p /run/spice-vdagentd }

foreground = { chmod 0755 /run/spice-vdagentd }

/usr/sbin/spice-vdagentd -x -d

)

I also seen mistake about @depends field syntax. I saw something like @depends=boot@system. This is will not be going to work, it should be @depends=(boot@system). Please refer to the documentation of the frontend file syntax for each field. Howerver, to clarify a little bit this specific example, you don’t need (and you should avoid it) to make a dependency to any services of the boot tree. As the boot tree is automatically started at each boot, you have the guarantee that services associated with this tree is up when you reached the runtime level.

Coming back to our example. The execline syntax of the @execute field is not correct. You don’t have any = character between foreground and {} pair. So, the frontend should be


[main]

@type=classic

@description="spice-vdagentd daemon"

@version=0.0.1

@user=(root)

[start]

@execute=(

foreground { mkdir -p /run/spice-vdagentd }

foreground { chmod 0755 /run/spice-vdagentd }

/usr/sbin/spice-vdagentd -x -d

)

It should start now. But we can improve a little bit our scripts using a tool coming from the 66-tools package (note 66 do not depends on the 66-tools package). Tools coming from 66-tools package are not mandatory, they are just tools to simplify the write of execline script and you can obviously choose to not using it. However, using execl-toc simplify the creation of the directory (it can make much more). This command allow us to be short to test and create (toc → test or create) directory in our example. With this tool the @execute field become


[main]

@type=classic

@description="spice-vdagentd daemon"

@version=0.0.1

@user=(root)

[start]

@execute=(

execl-toc -d /run/spice-vdagentd -m 0755

/usr/sbin/spice-vdagentd -x -d

)

The result will be exactly the same, execl-toc will determine if the /run/spice-vdagentd directory exist or not and create it if it doesn’t exist yet, change its mode to 0755 then execute the /usr/sbin/spice-vdagentd.

So, here we have our frontend file to be ready to be used but, what i need to do to start the service?


# 66 start spice-vdagentd

You don’t need to invocate the 66 parse command. 66 is sufficiently smart to know if the service was already parsed or not. If the service was never parsed, the call of the start command will parse it first before trying to start it.

This is also valuable for the 66 enable command. Even if the service was never parsed, you can invocate directly the 66 enable command and 66 will do what it need to do.

Now, what the difference between start and enable. The start command start the service, nothing fancy here. The enable command tell to 66 to start the service at every boot. So, you can start a service without enabling it and you can enable a service without starting it, but if you want the service to be started at every boot you must enable it.

Ok, cool but i want now to change my frontend file a little bit to use the [environment] feature which allow us to define some good environment variables for the service which can be changed latter without the need to touch the frontend file again. Let’s do it


[main]

@type=classic

@description="spice-vdagentd daemon"

@version=0.0.1

@user=(root)

[start]

@execute=(

execl-toc -d /run/spice-vdagentd -m 0755

/usr/sbin/spice-vdagentd ${Args}

)

[environment]

Args=-x -d

66 will automatically replace the ${Args} variable definition with the content of the [environment] section for the same key at start time replacing the ${Args} by -x -d.

Ok, now i want to apply the changes, how i do that? Simply use the reconfigure command like this


# 66 reconfigure spice-vdagentd

That’s all. 66 will stop (if its running) the service and free it (meaning free all ressources used by the service), parse again the service and finally start it again. As you can see you don’t need to use the 66 parse. You also don’t need to remove it first, simply reconfigure it. This command works for any kind of service.

So, we have added the [environment] section, but what’s the advantage? Let’s say you want to add some spice-vdagentd command options. If you don’t use the [environment] section you are forced to edit the frontend file and make the change. Using the [environment] section you can use the 66 configure command. Invocating this command allow us to modify the Args=-x -d opening your preferred editor. So,


# 66 configure spice-vdagentd

will open your preferred editor with the contents of the /etc/66/conf/spice-vdagentd/version/dbus file. When i’m done with the edition, i simply reload the service to tell it to reload its configuration file


# 66 reload spice-vdagentd

and voila, you have changed the command line used by the service without touching its frontend file. Note that the reload send a SIGHUP to the service process which is the traditional signal on *NIX to reload its configuration file. Some daemon do not respect that, in this case ask to restart the service like this


# 66 restart spice-vdagentd

This command will stop the service and start it again.

Well, i saw some interesting question :

How do trees differ from bundles?

Bundles are declarative file containing service to handle in one pass. When you do s6-rc -u changes <bundle> you tell to s6-rc to start any services declared onto that bundle but you don’t have the guarantee that service depending of the bundle will only started when all service declared by the bundle are correctly started. Also you cannot declare a dependency of a bundle, e.g. BundleA cannot depends on ServiceA.

Trees are also set of any kind of services, but trees guarantee you that all services declared onto the tree are started before trying to start any other trees. Also, trees can depends/requiredby on another trees. let’s say, i have treeA containing ServiceA1 and ServiceA2 and i have treeB containing ServiceB1 and ServiceB2, and TreeB depends on TreeA. When i do


# 66 tree start TreeB

ServiceA1 AND ServiceA2 will be started first then ServiceB1 AND ServiceB2 will be started.

Can a service be in more than one tree?

No, you cannot have a same service define at different tree.

Does parse modify the database? I assume there is a database?

Yes, 66 use CDB database. This file contents all the informations needed by 66 to handle the service. You can see what it contain with the resolve command


# 66 resolve spice-vdagentd

S6 is all written in C, and therefore will compile with musl or glibc

66 will also compile with musl. Proof was made on Void (thanks to mobinmob for that).

A service can be in more than one tree, but only one tree can be up.

incorrect, a same service cannot exist on different trees.

A tree is very similar to a runlevel.

correct

That statement, from the Obarun tree page, is either wrong or ambiguous. We started sshd without enabling it.

Let’s take an example. I have in the tree called e.g. security containing the sshd service and the nfs service. Well, i want the sshd service started at every boot, but i don’t want the nfs service started automatically.

To do so, i need to enable the tree security AND enable the service sshd inside the tree security. The nfs service is marked disabled. What happens at boot time? As the security tree is marked enabled, 66 will try to start every service associated to it but it ONLY deal with service marked enabled. So, in your case the sshd will be started but not the nfs service as it was not marked enabled.

In short, enabling a tree tell to 66 to start all services associated to that tree to be started but ONLY if the service itself is MARKED ENABLED. Service not enabled will be ignored by 66 at start of the trees.

why did the directory /run/sshd disappear after a reboot?

The /run directory is a TMPFS directory, this directory is expected to be empty at every boot. So, if your service need a specific directory on /run you must define it at the frontend file. Each start of the service will create the corresponding necessary directory at /run. Volatile directory are handled by tmpfiles.d on Sytemd system, but at the base the daemon should take care by itself of all compoments that its need to properly be started.

Do I really have to do enable before start ???

Absolutely not, you can start a service without enabling it and like i said before the contrary it also true, you can enable a service without start it first.

Now lets recap…

If , before it is parsed I change /etc/66/service/sshd ( the ‘frontend’) I need

66 parse sshd

66 start sshd

No, you just need to start it directly


# 66 start sshd

and 66 will parse it before starting it.

If, when sshd has already been parsed I change /etc/66/service/sshd

I need

66 remove sshd

66 parse sshd

66 start sshd

no, simply do :


# 66 reconfigure sshd

A word about the remove command. When you call this command all compoments of the services (meaning configuration file, log files, resolve file and so on) are removed from your system except the frontend file.

and if I reboot I need

66 start sshd

correct if it’s was not enabled.

If I want it to start auotomatically I need

66 enable sshd

Correct, you can make it twice this will not change anything i mean the command will not crash if it was previously enable.

Maybe the whole thing needs to be hidden or protected?

66 make assumptions about files that its handle. Manually changing file will crash your 66 eco-system. 66 command should provide all you need to repair your system without manual intervention.

how would I get out of that without a reinstall?

You should never need to reintall the things, at worse destroying service or trees and remake your service structure by 66 command. As @ProwlerGr said, you have tty12 always available as sound as the scandir is running (meaning PID 1). This should works even on virt-manager.

A came here a little late, so it’s difficult for me to answer on every questions posted. I certainly missed to answer to important question. Please do not hesitate to ask me any question regarding 66 :).

Hope this post help a little bit to understand how 66 works.

You’ve just scratched the surface of the possibilities of 66, for example we have not talked about service launched as simple user, or instantiated service…

Eric.

4 Likes

@obarun Great to see you here Eric :smiley:

Thanks for the detailed post, and covering every question that was asked in this thread, & filling in the gaps with how 66 commands should be invoked & the level of explaining the frontend syntax.

More importantly I’d like to once more thank you for providing & supporting this great piece of software wherever you see interest.

3 Likes

Thanks Eric,
I was about to try and do it for you.

I do understand that one can recover from a 66 glitch without a reinstall.
I can do it with grub setting init=/bin/sh.
I dont know why tty12 fails with virtmanager and gnome-boxes… they are both qemu/kvm based. @ProwlerGr verified that it works with VirtualBox. Leave that problem to me, it is nothing to do with 66.

If just about every daemon needs a directory in /run , you may be able to have 66 insert that automatically when it compiles the execline scripts.? Other init systems dont have this issue with /run?

If I start making new trees with subsets of services, what happens to the global tree?
I thought global always had to be defined , but if I enable global plus some other tree containing a subset of services, there will be duplication of a service in more than one tree. … So do I have to disable global if I use any other trees?

and,
Thank you again for coming to itsFOSS and helping us.
Can you tell us about your plans for getting s6-66 into some distros other than Obarun. People here would like to have some idea when they are likely to see it .
The init-diversity spins are a great start. What next?

Regards
Neville

2 Likes

I put that advice to work right now

fix the script syntax errors
root@antix-init-diversity:/etc/66/service# cat spice-vdagentd
[main]
@type=classic
@description="spice-vdagentd daemon"
@version=0.0.1
@user=(root)

[start]
@execute=(
    foreground { mkdir -p /run/spice-vdagentd }
    foreground { chmod 0755 /run/spice-vdagentd }
    /sbin/spice-vdagentd -x -d
)

then just reconfigure
root@antix-init-diversity:/etc/66/service# 66 reconfigure spice-vdagentd
signal: info: Successfully stopped service: spice-vdagentd
signal: info: Successfully stopped service: spice-vdagentd-log
stop: info: Unsupervised successfully: spice-vdagentd
stop: info: Unsupervised successfully: spice-vdagentd-log
parse: info: Parsed successfully: spice-vdagentd-log at tree: boot
parse: info: Parsed successfully: spice-vdagentd at tree: boot
start: info: Initialized successfully: spice-vdagentd
start: info: Initialized successfully: spice-vdagentd-log
signal: info: Successfully started service: spice-vdagentd-log
signal: info: Successfully started service: spice-vdagentd
enable: info: Enabled successfully: spice-vdagentd-log
enable: info: Enabled successfully: spice-vdagentd
root@antix-init-diversity:/etc/66/service# ps ax | grep spice
 2834 ?        S      0:00 s6-supervise spice-vdagentd-log
 2835 ?        S      0:00 s6-supervise spice-vdagentd
 2842 ?        Ss     0:00 /usr/bin/s6-log -d3 n3 s1000000 /var/log/66/spice-vdagentd
 2846 ?        Ssl    0:00 /sbin/spice-vdagentd -x -d
 2867 pts/1    S+     0:00 grep spice
root@antix-init-diversity:/etc/66/service# 

And, I take your point … read the frontend manpage about syntax
https://web.obarun.org/software/66/latest/66-frontend.html

I now have to figure out how to make the second daemon vdagent start up
for every user session?
I can start it by hand

$ spice-vdagent
nevj@antix-init-diversity:~
$ ps ax | grep spice
 2834 ?        S      0:00 s6-supervise spice-vdagentd-log
 2835 ?        S      0:00 s6-supervise spice-vdagentd
 2842 ?        Ss     0:00 /usr/bin/s6-log -d3 n3 s1000000 /var/log/66/spice-vdagentd
 3883 ?        Rsl    0:06 spice-vdagent
 3914 ?        Ssl    0:00 /sbin/spice-vdagentd -x -d
 3919 pts/0    S+     0:00 grep spice

but X11 is supposed to trigger it?

1 Like

Solved.
Virt-manager has a Send Key button


If I select Ctrl Alt F12 I get
ctrlaltf12b

Which is correct. I can login.

Gnome-Boxes a Send Key button too, but it does not include Ctrl Alt F12.
Maybe I could configure it.

3 Likes

This issue come indirectly from Systemd policies. Previously, script file for daemon took care about this kind of tmpfs directory, then Systemd came with the tmpfiles program which allow to populate volatile files (so files and directories vanished at the shutdown of the machine) at boot time reading configuration files found at the so-called tmpfiles.d directory. The boot@ service allow you to use this files of systemd if you have it on your system simply by setting TMPFILE=!yes. WARNING this option expect to find the /usr/bin/opentmpfiles.sh script on your system or equivalent.

So, yes other init system as the same problem. For now, 66 do not provide facilities internally but this is planned on the roadmap.

[quote=“Neville Jackson, post:49, topic:11984, username:nevj”]
If I start making new trees with subsets of services, what happens to the global tree?[/quote]

Nothing, just try it and for the fun try it with regular user:

% 66 tree create mytree

Arf, not the good name, i need to remove it

% 66 tree remove mytree
% 66 tree create security
% 66 tree status # give you an overview of all trees of your system
% 66 tree status security # give you an overview of the tree security

nope, you will never get service duplication and if you encounter it, please send me bug reports because this is not expected at all.
The tree global is always define to avoid user to think about it. If the user do not care about service separation for specific task use, he can start/enable all his services in one tree.
Also, global can be empty if you want but global will be always handled at boot time. It’s up to you to configure it as you want.
Moreover, what happens if i remove a tree with services on it? Where goes the services associated to this tree? Short answer : in tree global. Long answer : if a tree is marked current it goes to this tree, if no tree as marked current it goes to global.

A service cannot be associated to multiple trees but a service can switch between trees. Taking example, let’s say that i have the global tree with dbus and consolekit associated to it. I want to change the service consolekit to an another tree, i do

# 66 -t session enable consolekit

The -t option tell to 66 to enable the service at a specific tree in our case the tree named session.
Note that the tree session will be automatically create if it doesn’t exist yet.

Difficult to answer to this question in a simpler manner and mostly shortly. But the reality is the reality and we need to deal with what we have. I just try to provide one more “we have” with a good service manager allowing to deal with complex services structures in an intuitive and easy way. It’s up to the “Community” (in the larger way) to see if 66 is useful or a large piece of shit :).

No sure to understand what you want to accomplish here. i don’t vdagent but it need to be started as root or regular user? It need one instance by user?

2 Likes

It is better than s6-rc
I think most home Linux users are more interested in the service manager than the process supervision. It is important for s6 to have a workable service manager.

2 Likes

All I can add is that although Eric is the creator & lead developer of Obarun, he has a proven track record that when it comes to 66 he has never refused assistance to other distros not related to Obarun (antiX, Void, Artix) to get his tools ported & working.

Especially the antiX init-diversity spin is a testament to this, where with Eric’s personal involvement & support resulted in antiX being able to ship a development release with a fully functional 0.7.0.0 s6-66 version, even maybe before Obarun.

Anybody else in his position might have opted to focus on his distribution first & or might not have bothered with “exotic” distributions that have different ecosystems & other lead maintainers to port software.

3 Likes

Yes, I can tell Eric has a very open and helpful way of doing things.
I must be careful not to overdo things here.
Erics time is valuable.

I did not know that existed. Is that the older version of 66?

The 0.7.0.0 version of 66 is the newest version (the one you are testing).

antiX provided the init-diversity spin as an “UNOFFICIAL” development version on their official site on 14/02/2024 (way before the new 66 version was available elsewhere).

https://antixlinux.com/unofficial-antix-23-init-divesity-spin/

I can see Obarun released new isos featuring the new 66 just a couple of days ago

http://web.obarun.org/index.php?id=74

2 Likes

OK. That is why the Obarun documentation is now new version. When I was using
Obarun it was old version docs and very confusing.
When I get back to Obarun , things should be much clearer, especially with the benefit of having used Antix with 66.
Obarun itself was quite usable.

I needed that Ctrl Alt F12 Send Key, the very next day.
I enabled spice-vdagentd… and then it hangs on boot
So I had to login with Ctrl Alt 12, and do 66 disable spice-vdagentd
Then it would boot.
The error logged under 66 status spice-vdagentd was

spice-vdagentd: open /dev/uinput: No such file or directory
spice-vdagentd: Fatal uinput error
spice-vdagentd: vdagentd quitting, returning status 1

There is indeed no file /dev/uinput.
To get it I think I need another daemon udevd
So install the package udev
No frontend appears in /etc/66/service
So make a primitive frontend …
I checked the runit run script for udevd and it needs no arguments.
It may need files in /run.

Hang on, it is running

root@antix-init-diversity:/home/nevj# ps ax | grep udev
  327 ?        S      0:00 s6-supervise boot@system:udevd
  328 ?        S      0:00 s6-supervise boot@system:udevd-log
  384 ?        Ss     0:00 /usr/bin/s6-log -d3 n3 s1000000 /run/66/log/udevd
  488 ?        Ss     0:00 udevd -D
 1256 ?        S      0:00 /usr/bin/udevil --monitor
16776 pts/2    S+     0:00 grep udev

but it has not even been parsed yet?

root@antix-init-diversity:/home/nevj# 66 status udevd
status: fatal: service: udevd is not parsed -- try to parse it using '66 parse udevd'

I think I will disable that frontend.
Good thing I did not try to start it!

I still have no /dev/uinput … must come from somewhere else… not udevd.
OK it comes from the uinput driver module … I need that

root@antix-init-diversity:/home/nevj# lsmod | grep uinput
root@antix-init-diversity:/home/nevj# modprobe uinput
root@antix-init-diversity:/home/nevj# lsmod | grep uinput
uinput                 20480  1

and now the /dev/file is there

# file /dev/uinput
/dev/uinput: character special (10/223)

So now stop spice-vdagentd and start it again
Then start spice-vdagent by hand

spice-vdagent -d 

And everything is working now… I can copy/paste.

So now I should be able to enable spice-vdagentd and not have the boot fail.

Fingers crossed

3 Likes

It has. The service is not called udevd but boot@system:udevd. So if you want to see its status, you need to do

# 66 status boot@system:udevd

An explanation is needed here. boot@system is an instantiated service of the boot@ service. On 66 you have 3 types of services named classic, oneshot, module. The boot@ service has the module type. This type of service allow us to configure a complete environment of different kind of service regarding the request of the user. This is allowed through a script called configure that can be written in any language.

When you do

# 66 configure boot@system

you can edit some configuration variable. In function of your choice the set of the service started at boot time will change. For instance, if you request a SWAP=yes a new service will be enabled and configured for you to get your swap mounted at boot time.

This is done by the 66 reconfigure boot@system command line.

So, Module have the particularity to be independent from other system of the host. Services inside the modules do not known anything about services outside the module. That also means that a service inside a module can not depend on services outside the module. The contrary is also true.

When you do

# 66 start boot@system

you start all services inside the modules. you can get the list of services inside by

# 66 status -gno contents boot@system

So, to be short if you want to see status of services which are part of a module, ask for the module@name:servicename_inside_module like

# sudo 66 status -gno logfile boot@system:modules-system

this command will display you the logfile of the modules-system service contained inside the boot@system module.

The boot@system:modules-system is the service responsible to load modules. This will depends on distribution. On Obarun, this service call a script called modules.sh which read configuration files define by user. This features is actived when you configure the boot@system with MODULE_SYSTEM=!yes.

You can also use the LOCAL=!yes which allow you to give instructions through the so-called /etc/66/rc.local script. As this script can be written in any language, don’t not forget to properly set the shebang e.g. #!/usr/bin/sh.
Now, from that’s script you can do

modprobe uinput

Be aware that the rc.local script is launched at the end of the boot sequence before starting any others services from the runtime.

3 Likes

Hi Eric,
Thank you for the explanation of module services.
I completely missed seeing that the udevd service was already running. It was the wrong thing anyway.

I was not aware that one could use 66 to
load kernel modules. I would have edited
/etc/modules.d/…
Your rc.local seems to be like what BSD has.
I am used to that.

I have to apologise for my slow pace. I turned 79 this year and I find I can only do
a couple of hours a day of computer work.
I do get hungup on side issues sometimes.

What I am planning is some exercise with trees where I setup a system that I can flip between 2 or more sets of services.
Reading everthing I can find on trees at the moment. Your hints were a good start.

Regards
Neville

3 Likes