Hi all, when playing with systemd by default on Mandriva (e.g., with systemd-sysvinit installed and booting), we have faced a strange problem when rebooting - the reboot process simple hanged and would not proceed.
After some investigation, I've found out that it is caused by the systemd stopping our messagebus service (which is, well, dbus). So when I went ahead and commented the killproc routine inside stop() of messagebus, the rebooting and shutting down worked just fine. I know that it is perhaps a simple newbie question, but is it something that must be changed in our messagebus init script (attached), or some systemd configuration which we could change to make it work? I was thinking on relying on the result of 'systemctl is-active reboot.service' to check whether the system is being rebooted and, if so, do not stop messagebus, but it looks like a hack to me.. Thanks! -- Eugeni Dodonov
#!/bin/sh # # messagebus: The D-BUS systemwide message bus # # chkconfig: 23457 53 66 # description: This is a daemon which broadcasts notifications of system events \ # and other messages. See http://www.freedesktop.org/software/dbus/ # # processname: dbus-daemon # pidfile: /var/run/messagebus.pid # ### BEGIN INIT INFO # Provides: messagebus # Required-Start: $syslog $local_fs # Required-Stop: $syslog $local_fs # Should-Start: network-auth # Default-Start: 2 3 4 5 7 # Default-Stop: 0 1 6 # Short-Description: The D-Bus systemwide message bus # Description: This is a daemon which broadcasts notifications of system # events and other messages. See http://www.freedesktop.org/software/dbus ### END INIT INFO # Sanity checks. [ -x /usr/bin/dbus-daemon ] || exit 0 # Source function library. . /etc/rc.d/init.d/functions # so we can rearrange this easily processname=dbus-daemon servicename=messagebus RETVAL=0 start() { gprintf "Starting system message bus: " if [ -x /usr/bin/dbus-uuidgen ] ; then /usr/bin/dbus-uuidgen --ensure fi daemon --check $servicename $processname --system RETVAL=$? countdown=10 until [ -e /var/run/dbus/system_bus_socket -o $countdown -eq 0 ]; do sleep 1; let countdown=$countdown-1; done echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename } stop() { gprintf "Stopping system message bus: " ## we don't want to kill all the per-user $processname, we want ## to use the pid file *only*; because we use the fake nonexistent ## program name "$servicename" that should be safe-ish # (SYSTEMD) - eugeni - if we comment the following line, reboot proceeeds killproc $servicename -TERM RETVAL=$? echo if [ $RETVAL -eq 0 ]; then rm -f /var/lock/subsys/$servicename rm -f /var/run/messagebus.pid fi } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status $servicename RETVAL=$? ;; restart) stop start ;; condrestart) if [ -f /var/lock/subsys/$servicename ]; then stop start fi ;; reload) gprintf "Message bus can't reload its configuration, you have to restart it\n" RETVAL=$? ;; *) gprintf "Usage: %s {start|stop|status|restart|condrestart|reload}\n" "$0" ;; esac exit $RETVAL
systemctl.dump.bz2
Description: application/bzip
systemctl.list-units.bz2
Description: application/bzip
_______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
