Movatterモバイル変換


[0]ホーム

URL:


www/Software/systemd/kdbus
david@david-t2~/dev/kdbus $ busctl monitorMonitoring bus message stream. Type=signal  Endian=l  Flags=1  Version=2  Priority=0 Cookie=-1  Sender=org.freedesktop.DBus  Path=/org/freedesktop/DBus  Interface=org.freedesktop.DBus  Member=NameOwnerChanged  Monotonic=21122678158  Realtime=1438248540378044  SequenceNumber=98386  UniqueName=org.freedesktop.DBus  WellKnownNames=org.freedesktop.DBus  MESSAGE "sss" {          STRING ":1.98385";          STRING "";          STRING ":1.98385";  }; Type=method_call  Endian=l  Flags=0  Version=2  Priority=0 Cookie=1  Sender=:1.98385  Destination=org.freedesktop.locale1  Path=/org/freedesktop/locale1  Interface=org.freedesktop.DBus.Properties  Member=GetAll  Monotonic=21122678639  Realtime=1438248540378525  SequenceNumber=98387  PID=21611  TID=21611  PPID=8014  UID=1000  EUID=1000  SUID=1000  FSUID=1000  OwnerUID=1000  GID=1000  EGID=1000  SGID=1000  FSGID=1000  SupplementaryGIDs=91 190 1000  Comm=localectl  TIDComm=localectl  Exe=/usr/bin/localectl  CommandLine=localectl  Description=sd-system-localectl  CGroup=/user.slice/user-1000.slice/session-c1.scope  Unit=session-c1.scope  Slice=user-1000.slice  UserUnit=n/a  Session=c1  UniqueName=:1.98385  WellKnownNames=  EffectiveCapabilities=  PermittedCapabilities=  InheritableCapabilities=  BoundingCapabilities=cap_chown cap_dac_override cap_dac_read_search           cap_fowner cap_fsetid cap_kill cap_setgid           cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service           cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock           cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot           cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot           cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config           cap_mknod cap_lease cap_audit_write cap_audit_control           cap_setfcap cap_mac_override cap_mac_admin cap_syslog           cap_wake_alarm cap_block_suspend cap_audit_read  MESSAGE "s" {          STRING "";  }; Type=method_return  Endian=l  Flags=1  Version=2  Priority=0 Cookie=2  ReplyCookie=1  Sender=:1.98376  Destination=:1.98385  Monotonic=21122679054  Realtime=1438248540378940  SequenceNumber=98388  PID=21609  TID=21609  PPID=1  UID=0  EUID=0  SUID=0  FSUID=0  GID=0  EGID=0  SGID=0  FSGID=0  SupplementaryGIDs=  Comm=systemd-localed  TIDComm=systemd-localed  CommandLine=/usr/lib/systemd/systemd-localed  Description=sd-system-systemd_2dlocaled  CGroup=/system.slice/systemd-localed.service  Unit=systemd-localed.service  Slice=system.slice  UserUnit=n/a  Session=n/a  UniqueName=:1.98376  WellKnownNames=org.freedesktop.locale1  EffectiveCapabilities=  PermittedCapabilities=  InheritableCapabilities=  BoundingCapabilities=  MESSAGE "a{sv}" {          ARRAY "{sv}" {                  DICT_ENTRY "sv" {                          STRING "Locale";                          VARIANT "as" {                                  ARRAY "s" {                                          STRING "LANG=en_US.UTF-8";                                  };                          };                  };                  DICT_ENTRY "sv" {                          STRING "VConsoleKeymap";                          VARIANT "s" {                                  STRING "de-latin1-nodeadkeys";                          };                  };                  DICT_ENTRY "sv" {                          STRING "VConsoleKeymapToggle";                          VARIANT "s" {                                  STRING "";                          };                  };          };  }; Type=signal  Endian=l  Flags=1  Version=2  Priority=0 Cookie=-1  Sender=org.freedesktop.DBus  Path=/org/freedesktop/DBus  Interface=org.freedesktop.DBus  Member=NameOwnerChanged  Monotonic=21122679612  Realtime=1438248540379497  SequenceNumber=98389  UniqueName=org.freedesktop.DBus  WellKnownNames=org.freedesktop.DBus  MESSAGE "sss" {          STRING ":1.98385";          STRING ":1.98385";          STRING "";  };^Cdavid@david-t2~/dev/kdbus $

kdbus

kdbus is a transport layer for the DBus IPC system. It is meant as replacement for the UDS (Unix Domain Socket) transport layer which is the de-facto default for local DBus communication. kdbus is not directly related to DBus, nor is it limited to transporting DBus messages. However, kdbus was designed specifically for DBus so it does exhibit DBus specific behavior. Further use-cases are possible, though.

With the kdbus transport layer, the dbus-daemon is no longer needed. kdbus provides a full bus transport and thus eliminates the bus manager that is implemented by dbus-daemon. Note that UDS also provides such a full bus transport, but lacks extended features like message tracking, policy handling, peer tracking and a name database. Hence, dbus-daemon is needed if UDS is used as transport.

Apart from providing a full bus transport, kdbus also extends DBus with new features. This includes reliable metadata transmission, simplified policy, single/zero-copy message transactions and namespaced endpoints.

Implementation

Thekdbus.ko kernel module is available atgit.kernel.org and included inlinux-next. It implements the kdbus transport layer and exposes its API via a virtual file system, usually mounted at/sys/fs/kdbus.

Since version 221, systemd will automatically load the kdbus module (if available), mount kdbusfs and create the system and user bus via kdbus. A dbus1 compatibility daemon, calledsystemd-bus-proxyd, is spawned for each bus. It listens on the old UDS dbus1 socket and provides a compatibility layer to kdbus. Thus, legacy software will run on kdbus systems without any changes required.

systemd will read thekdbus={0,1} kernel command-line option and load kdbus only if it is set to1. Otherwise, a legacy boot is done and kdbus will not be loaded nor used by your system. Hence, you can disable kdbus entirely by specifyingkdbus=0 on your kernel command line. If the command line option is omitted, the default is used (which might be either, depending how systemd was compiled).

Thesd-bus library supports both transports (dbus1 and kdbus) natively. Further native ports for gdbus and qt are underway.

Links

Development:

Code repositories:

Documentation:

Testing

To run your system on kdbus, you need the kdbus kernel module installed and a recent systemd version:

You're highly recommended to run the newest version of both. Please extend your kernel command line withkdbus=1 to enable (andkdbus=0 to disable) kdbus.

Once you booted your system, you can usebusctl to list bus users. If theDESCRIPTION column contains non-empty entries, you've successfully booted with kdbus enabled. You can also verify this by looking for a log messagesystemd[1]: Inserted module 'kdbus', or see whether/sys/fs/kdbus contains a sub-directory called0-system.

If you encounter any issues, please report them to us via the systemd issues tracker atgithub.

Testing on Fedora

If you run Fedora Rawhide, then you already run a recent systemd version that supports kdbus. Furthermore, the Fedora Rawhide kernel includes thekdbus.ko kernel module. Hence, there is no need to install those manually. All you need is passkdbus=1 on the kernel commandline (default for Rawhide is0).

Testing on Arch Linux

Thesystemd package of Arch Linux includes all relevant code to run kdbus. All you need is to install the kdbus.ko kernel module and passkdbus=1 on the kernel command line (default for Arch Linux is0). We recommend using thekdbus-package from the AUR to build the kdbus.ko kernel module.

Compiling kdbus.ko

If your distribution does not ship akdbus.ko kernel module, you need to compile it yourself. If you know how to compile your own kernel, all you need is to merge Greg's tree fromkernel.org (or use the tree directly; or uselinux-next).

If you do not want to compile your own kernel, you can use the out-of-tree kdbus.ko kernel module:

$ git clone https://github.com/systemd/kdbus.git     # clone the out-of-tree repository$ cd kdbus                                           # enter repository$ git checkout -f v4.1                               # checkout branch for kernel-4.1$ make -j4                                           # build module$ # make tt                                          # Optional: run test-suite$ sudo make install                                  # install module into /lib/modules/`uname -r`/

Please use the branch according to your kernel version (Seeuname -r and pick branchesv4.0,v4.1 orv4.2 accordingly; older releases arenot supported). Please alsoalways usegit checkout -f <branch> orgit reset --hard <branch> as all branches butmaster arerebased. Never usegit pull orgit merge!

If you don't want to deal with rebases, use themaster branch. This branch tracks the upstream tree from Greg, but also only applies to the version Greg's tree is based on. Thev4.X branches carry necessary reverts/changes for the given version.

Every time you update your kernel, you need to re-compile the kdbus.ko module for the new kernel. Your kernel will refuse to load modules not built explicitly for the given kernel.

Known issues

No known issues at the moment.

Common Problems

Kernel oopses and panics during boot

If you encounter kernel bugs during system boot, you might have hit a bug in the kdbus.ko module. However, chances are more likely you compiled the wrong kdbus.ko version. Please verify your kernel-headers are correctly installed, your build directory in/lib/modules/`uname -r`/build is consistent and you actually compiled the correct branch.

If you still see kernel bugs, please report them to us!

Last editedFri May 7 01:22:37 2021

[8]ページ先頭

©2009-2025 Movatter.jp