Accepting request 960154 from Base:System
- 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/request/show/960154 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/systemd?expand=0&rev=351
This commit is contained in:
parent
053f78ce40
commit
aecfa91edc
@ -1,30 +1,34 @@
|
||||
#! /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.
|
||||
# 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...
|
||||
#
|
||||
# All hacks can potentially break the admin settings since they work
|
||||
# in /etc...
|
||||
|
||||
# Try to read default runlevel from the old inittab if it exists. If
|
||||
# it fails fallback to runlevel 3 which should still be better than
|
||||
# the rescue shell.
|
||||
#
|
||||
# Note: /etc/inittab was part of the aaa_base package which can be
|
||||
# upgraded before systemd is. Therefore this file is likely to be
|
||||
# missing.
|
||||
if [ ! -e /etc/systemd/system/default.target -a -e /etc/inittab ]; then
|
||||
runlevel=$(sed -n -r "s/^id:([[:digit:]]):initdefault:/\1/p" /etc/inittab)
|
||||
: ${runlevel:=3}
|
||||
echo "Initializing default.target to runlevel${runlevel}.target"
|
||||
ln -s /usr/lib/systemd/system/runlevel${runlevel}.target /etc/systemd/system/default.target
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 8 07:41:41 UTC 2022 - Franck Bui <fbui@suse.com>
|
||||
|
||||
- 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 24 13:23:35 UTC 2022 - Franck Bui <fbui@suse.com>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user