site  contact  subhomenews

D-bus fixed in Easy Bookworm

May 10, 2022 — BarryK

This is going to interest a lot of people... EasyOS built with Debian DEB packages has the advantage of access to a huge repository. There was an "Easy Buster", now retired, and all effort since then has been on "Easy Dunfell" which is built with packages compiled in OE. The Dunfell-series is "lean and mean", that is, small and optimized; however, the package repository is small.

So I thought why not, let's have a play building Easy from Debian Bookworm packages. Bookworm is the "testing" branch of Debian, not scheduled for release until around mid-2023. It won't even reach "feature freeze" until Jan/Feb 2023. No problem, we can get in early.

When Debian Bullseye was released last year, I did do a build of EasyOS using the Bullseye DEBs. However, d-bus was broken, and I couldn't figure out why, so left it.

Fast forward to now, trying again with Bookworm, have the same problem. This time, was determined to fix d-bus...

I found two problems. The first is this line in /usr/share/dbus-1/system.conf:

  <!-- This is a setuid helper that is used to launch system services -->
<servicehelper>/usr/libexec/dbus-daemon-launch-helper</servicehelper>

...the executable isn't there, that line needs to be:

  <servicehelper>/usr/lib/dbus-1.0/dbus-daemon-launch-helper</servicehelper>

The second problem concerns the path to the d-bus socket. system.conf has these lines:

  <pidfile>/var/run/dbus/pid</pidfile>
...
<listen>unix:path=/var/run/dbus/system_bus_socket</listen>
The socket 'system_bus_socket' does get created at /var/run/dbus. However, looking at /var/log/messages, I saw that d-bus expects the listen socket at /run/dbus

It seems to have ignored that <listen> tag, apart from having created the socket there. I did some reading about these paths, and came across a comment that most distributions symlink /var/run to /run, which does get around that problem.

Well, perhaps I can change those lines in system.conf from "/var/run" to "/run"; however, I decided to do the symlink instead. Except, I have done it the reverse of other distros. I /etc/rc.d/rc.sysinit, have put this:

ln -snf /var/run /run

D-bus now works, which means NetworkManager works, and was able to connect to the wi-fi network and get online.

There are more issues with this Bookworm build, but one major hurdle jumped over.

EDIT 2022-05-11:
A extra note about that symlink. It might seem to be the wrong way round. For normal Linux distributions, /run is volatile, usually a tmpfs, so disappears at shutdown, whereas /var is permanent. In that case, it would make sense for /var/run to be a symlink to /run.

In Easy, both /var and /run are volatile, both tmpfs. This is done to minimize drive writes. At shutdown, only some folders under /var are saved. So, it really doesn't matter which way the symlink goes. I chose to symlink /run to /var/run.  

Tags: easy