D-bus fixed in Easy Bookworm
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>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
...
<listen>unix:path=/var/run/dbus/system_bus_socket</listen>
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