systemd/scripts-systemd-upgrade-from-pre-210.sh
Franck Bui 8472c3e397 - Fix the default target when it's been incorrectly set to one of the runlevel
targets (bsc#1196567)
  The script 'upgrade-from-pre-210.sh' used to initialize the default target
  during migration from sysvinit to systemd. However it created symlinks to
  runlevel targets, which are deprecated and might be missing when
  systemd-sysvcompat package is not installed. If such symlinks are found the
  script now renames them to point to 'true' systemd target units.
- When migrating from sysvinit to systemd (it probably won't happen anymore),
  let's use the default systemd target, which is the graphical.target one. In
  most cases it will do the right thing anyway.

OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=1258
2022-03-08 07:49:08 +00:00

35 lines
1.2 KiB
Bash

#! /bin/bash
#
# This script is supposed to be executed from the %post section. It contains all
# hacks needed to update a system which was running systemd < v210. This also
# includes systems migrating from SysV.
#
# All hacks can potentially break the admin settings since they work in /etc...
#
#
# During migration from sysvinit to systemd, we used to set the systemd default
# target to one of the 'runlevel*.target' after reading the default runlevel
# from /etc/inittab. We don't do that anymore because in most cases using the
# graphical.target target, which is the default, will do the right
# thing. Moreover the runlevel targets are considered as deprecated, so we
# convert them into "true" systemd targets instead here.
#
if target=$(readlink /etc/systemd/system/default.target); then
target=$(basename $target)
case "$target" in
runlevel?.target)
echo "Default systemd target is '$target' but use of runlevels is deprecated"
systemctl --no-reload set-default $target
esac
fi
#
# Migrate any symlink which may refer to the old path.
#
for f in $(find /etc/systemd/system -type l -xtype l); do
new_target="/usr$(readlink $f)"
[ -f "$new_target" ] && ln -s -f $new_target $f
done