[systemd-devel] Preset/enable issues

Dan Nicholson nicholson at endlessm.com
Wed Mar 23 18:51:24 UTC 2016


On Wed, 2016-03-23 at 06:21 -0700, Dan Nicholson wrote:
> At Endless, we compose a system from debian packages which enable
> services based on package policy. However, when we compose our whole
> system, we run systemctl preset-all (in a chroot) with our preset file
> to get the services setup exactly as we want for images.
> 
> After upgrading from 215 to 229, we're seeing some issues.
> 
> 1. preset-all fails with ELOOP if there are any symlinks in
> /etc/systemd/system pointing to /usr/lib/systemd/system. However,
> systemd itself has created these symlinks when units define an Alias
> and have already been enabled. This seems like broken behavior as even
> if I forcefully clean things up, running preset-all again returns the
> same issue.
> 
> # find /etc/systemd/system -maxdepth 1 -type l -delete
> # systemctl preset-all
> Created symlink /etc/systemd/system/display-manager.service, pointing
> to /usr/lib/systemd/system/gdm.service.
> Created symlink /etc/systemd/system/ctrl-alt-del.target, pointing to
> /usr/lib/systemd/system/exit.target.
> Created symlink
> /etc/systemd/system/dbus-org.freedesktop.ModemManager1.service,
> pointing to /usr/lib/systemd/system/ModemManager.service.
> Created symlink /etc/systemd/system/eos-updater.service, pointing to
> /usr/lib/systemd/system/eos-autoupdater.service.
> Created symlink
> /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service,
> pointing to /usr/lib/systemd/system/NetworkManager-dispatcher.service.
> Created symlink /etc/systemd/system/kbrequest.target, pointing to
> /usr/lib/systemd/system/rescue.target.
> Created symlink /etc/systemd/system/dbus-org.bluez.service, pointing
> to /usr/lib/systemd/system/bluetooth.service.
> Created symlink /etc/systemd/system/eos-updater.timer, pointing to
> /usr/lib/systemd/system/eos-autoupdater.timer.
> Created symlink
> /etc/systemd/system/dbus-org.freedesktop.Avahi.service, pointing to
> /usr/lib/systemd/system/avahi-daemon.service.
> # systemctl preset-all
> Operation failed: Too many levels of symbolic links
> 
> Weirdly, using a preset with one of the above real names sometimes
> works even though it would have the exact same issue, and sometimes it
> returns EEXIST for reasons I don't understand.
> 
> I guess this all comes back to commit 0ec0deaa, which tries to
> consider syminks in /etc as user configuration. But then why are alias
> symlinks, which are not user configuration, created in /etc?
> 
> https://github.com/systemd/systemd/issues/2298 has been open for a
> while with no comments.
> 2. Enable does not seem to be escaping the names of the wants
> directories correctly.
> 
> # systemctl enable "dev-disk-by\x2dlabel-eos\x2dswap.swap"
> Created symlink
> /etc/systemd/system/dev-disk-byx2dlabel-eosx2dswap.device.wants/dev-
> disk-by\x2dlabel-eos\x2dswap.swap,
> pointing to /usr/lib/systemd/system/dev-disk-by\x2dlabel-
> eos\x2dswap.swap.
> 
> The directory is created as
> dev-disk-byx2dlabel-eosx2dswap.device.wants, but I'm pretty sure the
> x's should be escaped with \. At least, that's what the unit names do,
> and that's how the directories used to be named by enable.
> 
> Any ideas on these issues?

Seems to be fixed with the following 2 patches. Not sure if they have
wider impact, but they seem right to me.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-install-Allow-existing-etc-symlinks-for-preset.patch
Type: text/x-patch
Size: 1169 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20160323/8e2f47af/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-conf-parser-Set-EXTRACT_RETAIN_ESCAPE-when-extractin.patch
Type: text/x-patch
Size: 1085 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20160323/8e2f47af/attachment-0001.bin>


More information about the systemd-devel mailing list