[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perfect Jessie is something like this...



Hey Christian,

Thank you for your clarification, I really appreciate it...

My mistake. I understand it better now.

My confusion started when I read that on uselessd webpage:

"What version of systemd is uselessd based on?
systemd-208-stable. We chose this, because it predates kdbus integration into PID1".

Then, I started to think even more about what systemd is trying to do/achieve...

Thank you!

On 22 October 2014 19:16, Christian Seiler <christian@iwakd.de> wrote:
> Hey, remember that kdbus thing?! That did not entered into Linux 3.15
> as expected?!
>
> Guess what?! It is now in PID1!! Can you guys see it?! All kinds of
> trash are being pushed into PID1.

That is very, very misleading at best.

First of all: kdbus is currently an out-of-tree kernel module that can
be found under [1]. The whole point of kdbus is to move most of the dbus
logic into the kernel. So the idea that PID1 reimplements kdbus doesn't
really make sense in this context.

What is correct is that kdbus is not JUST a kernel module but that there
are some userspace components necessary to make it work:

 1. a small bit of code to set it up initially
 2. obviously some kind of code that accesses kdbus functionality from
    applications
 3. a kind of 'bridge' that allows legacy dbus applications to work
    (translates messages back and forth)

It is true that the systemd people decided to put part 1 into PID1
(primarily because systemd wants to be able to use kdbus itself for IPC,
so it has to be set up early).

BUT: one has to specify the --enable-kdbus configure flag in order to
actually enable it. Debian's build currently don't do that, so Debian's
systemd binary (i.e. PID1) doesn't actually call any code related to
initializing kdbus.

Also note that initializing kdbus is probably quite a bit simpler than
initializing SELinux for example, for which even sysvinit contains code
under jessie.

It does contain some code that allows it to USE kdbus (as a bus client,
like any other application too, i.e. part 2 above), but that is not
actually called, because the call paths are #ifdef'd out. The only
legitimate complaint that one may lodge against this that I can see here
is that the binary is slightly larger than it needs to be.

Part 3 of kdbus userspace (i.e. the bridge) is implemented as a separate
binary in systemd, namely systemd-bus-proxyd. This binary is not started
unless kdbus is available, so again, the only valid complaint about this
that I can see is that is uses a small bit of unecessary disk space.
(284KiB in current jessie.) But regardless, this is NOT in PID1 and was
never supposed to be in PID1.

Therefore: kdbus functionality is NOT USED in PID1 in Debian jessie. The
bits of code that are there are never called and thus harmless, save for
a bit of unnecessarily used disk space.

Christian

[1] https://github.com/gregkh/kdbus



Reply to: