15.04 and systemd
Tom H
tomh0665 at gmail.com
Mon Nov 3 20:06:35 UTC 2014
I'm running 15.04 with systemd as pid 1 and I want to share some observations.
1) systemd-vconsole-setup.service
"Cannot add dependency job for unit systemd-vconsole-setup.service,
ignoring: Unit systemd-vconsole-setup.service failed to load: No such
file or directory." is in the output of journalctl until I remove
"systemd-vconsole-setup.service" from "Wants=" and "After=":
# diff /etc/systemd/system/plymouth-start.service
/lib/systemd/system/plymouth-start.service
4,5c4,5
< Wants=systemd-ask-password-plymouth.path
< After=systemd-udev-trigger.service systemd-udevd.service
---
> Wants=systemd-ask-password-plymouth.path systemd-vconsole-setup.service
> After=systemd-vconsole-setup.service systemd-udev-trigger.service systemd-udevd.service
2) ifup at .service
I'm using systemd-networkd.service (and libvirt) and ifup at .service
isn't enabled:
# find /{etc,lib}/systemd/system -name "*networkd*"
/etc/systemd/system/multi-user.target.wants/systemd-networkd.service
/lib/systemd/system/systemd-networkd.service
/lib/systemd/system/systemd-networkd-wait-online.service
# find /{etc,lib}/systemd/system -name "*ifup*"
/lib/systemd/system/ifup at .service
"/etc/init.d/networking" is disabled:
# find /etc/rc?.d -name "*networking" | sort
/etc/rc0.d/K07networking
/etc/rc6.d/K07networking
/etc/rcS.d/K09networking
And yet, unless I run "journalctl mask ifup at .service", I have the
following in my logs:
# journalctl _COMM=systemd | grep ifup
Nov 03 13:41:52 yoga systemd[1]: Starting system-ifup.slice.
Nov 03 13:41:52 yoga systemd[1]: Created slice system-ifup.slice.
Nov 03 13:42:02 yoga systemd[1]: Starting ifup for wlan0...
Nov 03 13:42:02 yoga systemd[1]: ifup at wlan0.service: control process
exited, code=exited status=1
Nov 03 13:42:02 yoga systemd[1]: ifup at wlan0.service: main process
exited, code=exited, status=1/FAILURE
Nov 03 13:42:02 yoga systemd[1]: ifup at wlan0.service: control process
exited, code=exited status=1
Nov 03 13:42:02 yoga systemd[1]: Failed to start ifup for wlan0.
Nov 03 13:42:02 yoga systemd[1]: Unit ifup at wlan0.service entered failed state.
Nov 03 13:42:03 yoga systemd[1]: Starting ifup for virbr0...
Nov 03 13:42:03 yoga systemd[1]: ifup at virbr0.service: main process
exited, code=exited, status=1/FAILURE
Nov 03 13:42:03 yoga systemd[1]: ifup at virbr0.service: control process
exited, code=exited status=1
Nov 03 13:42:03 yoga systemd[1]: ifup at virbr0.service: control process
exited, code=exited status=1
Nov 03 13:42:03 yoga systemd[1]: Failed to start ifup for virbr0.
Nov 03 13:42:03 yoga systemd[1]: Unit ifup at virbr0.service entered failed state.
Nov 03 13:42:03 yoga systemd[1]: Starting ifup for virbr0/nic...
Nov 03 13:42:03 yoga systemd[1]: ifup at virbr0-nic.service: main process
exited, code=exited, status=1/FAILURE
Nov 03 13:42:03 yoga systemd[1]: ifup at virbr0-nic.service: control
process exited, code=exited status=1
Nov 03 13:42:03 yoga systemd[1]: ifup at virbr0-nic.service: control
process exited, code=exited status=1
Nov 03 13:42:03 yoga systemd[1]: Failed to start ifup for virbr0/nic.
Nov 03 13:42:03 yoga systemd[1]: Unit ifup at virbr0-nic.service entered
failed state.
3) friendly-recovery.service
https://bugs.launchpad.net/ubuntu/+source/friendly-recovery/+bug/1354937
(with apologies for the typo!)
4) nfs-common, nfs-kernel-server, rpcbind
NFS is broken with systemd as pid 1 because nfs-common only has upstart jobs.
I've installed and adapted the upstream nfs-utils units and created
rpcbind ones.
# diff /etc/systemd/system/nfs-config.service
/lib/systemd/system/nfs-config.service
7c7
< ExecStart=/lib/systemd/scripts/nfs-utils_env.sh
---
> ExecStart=/usr/lib/systemd/scripts/nfs-utils_env.sh
# diff /etc/systemd/system/rpc-statd-notify.service
/lib/systemd/system/rpc-statd-notify.service
19c19
< ExecStart=-/sbin/sm-notify -d $SMNOTIFYARGS
---
> ExecStart=-/usr/sbin/sm-notify -d $SMNOTIFYARGS
# diff /etc/systemd/system/rpc-statd.service
/lib/systemd/system/rpc-statd.service
16,17c16,17
< PIDFile=/run/rpc.statd.pid
< ExecStart=/sbin/rpc.statd --no-notify $STATDARGS
---
> PIDFile=/var/run/rpc.statd.pid
> ExecStart=/usr/sbin/rpc.statd --no-notify $STATDARGS
# cat /lib/systemd/scripts/nfs-utils_env.sh
#!/bin/sh
NFS_CONFIG=/run/sysconfig/nfs-utils
if [ -e $NFS_CONFIG ] ; then
rm -f $NFS_CONFIG
fi
if [ -r /etc/default/nfs-common ] ; then
. /etc/default/nfs-common
fi
if [ -r /etc/default/nfs-kernel-server ] ; then
. /etc/default/nfs-kernel-server
fi
RPCNFSDARGStmp="$RPCNFSDCOUNT $RPCNFSDOPTS"
mkdir -p /run/sysconfig
echo "GSSDARGS=\"\"" >> $NFS_CONFIG
echo "RPCIDMAPDARGS=\"$RPCIDMAPDARGS\"" >> $NFS_CONFIG
echo "SMNOTIFYARGS=\"\"" >> $NFS_CONFIG
echo "STATDARGS=\"$STATDOPTS\"" >> $NFS_CONFIG
echo "RPCMOUNTDARGS=\"$RPCMOUNTDOPTS\"" >> $NFS_CONFIG
echo "RPCNFSDARGS=\"$RPCNFSDARGStmp\"" >> $NFS_CONFIG
echo "SVCGSSDARGS=\"$RPCSVCGSSDOPTS\"" >> $NFS_CONFIG
[Note on RPCIDMAPDARGS: I set it to "-p /var/lib/nfs/rpc_pipefs" in
"/etc/default/nfs-common" because nfs-idmapd.service was failing
without it. The path to rpc_pipefs was defaulting to "/run/rpc_pipefs"
even though the man page says that the default is
"/var/lib/nfs/rpc_pipefs".]
# cat /lib/systemd/system/rpcbind.service
[Unit]
Description=RPC Bind
After=network.target
[Service]
Type=forking
ExecStart=/sbin/rpcbind
Restart=always
[Install]
WantedBy=rpcbind.target
[Note on rpcbind.service: I'm not sure whether this is the right unit
or whether it should have "Before=rpcbind.target multi-user.target"
and "Requires=rpcbind.target" in the "Unit" section and
"WantedBy=multi-user.target" in the "Install" section.]
# cat /lib/systemd/system/rpcbind.socket
[Unit]
Description=RPC Bind Socket
[Socket]
ListenStream=/run/rpcbind.sock
[Install]
WantedBy=sockets.target
More information about the Ubuntu-devel-discuss
mailing list