47 lines
1.6 KiB
Text
47 lines
1.6 KiB
Text
|
#!/bin/bash
|
||
|
# anaconda-generator: generate services needed for anaconda operation
|
||
|
|
||
|
# only run in the Anaconda installation environment
|
||
|
ANACONDA_TARGET="/lib/systemd/system/anaconda.target"
|
||
|
CURRENT_DEFAULT_TARGET=$(readlink /etc/systemd/system/default.target)
|
||
|
|
||
|
if ! { [ "$ANACONDA_TARGET" = "$CURRENT_DEFAULT_TARGET" ] || grep -q 'systemd.unit=anaconda.target' /proc/cmdline ;} ; then
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
# set up dirs
|
||
|
systemd_dir=/lib/systemd/system
|
||
|
target_dir="$1/anaconda.target.wants"
|
||
|
mkdir -p "$target_dir"
|
||
|
|
||
|
# create symlink anaconda.target.wants/SERVICE@TTY.service
|
||
|
service_on_tty() {
|
||
|
local service="$1" tty="$2"
|
||
|
local service_instance="${service/@.service/@$tty.service}"
|
||
|
ln -sf "$systemd_dir/$service" "$target_dir/$service_instance"
|
||
|
}
|
||
|
|
||
|
# find the real tty for /dev/console
|
||
|
tty="console"
|
||
|
while [ -f "/sys/class/tty/$tty/active" ]; do
|
||
|
tty=$(< "/sys/class/tty/$tty/active")
|
||
|
tty=${tty##* } # last item in the list
|
||
|
done
|
||
|
consoletty="$tty"
|
||
|
|
||
|
# put anaconda's tmux session on the console
|
||
|
service_on_tty anaconda-tmux@.service "$consoletty"
|
||
|
|
||
|
# put a shell on the first virtualization console we find
|
||
|
for tty in hvc0 hvc1 xvc0 hvsi0 hvsi1 hvsi2; do
|
||
|
[ "$tty" = "$consoletty" ] && continue
|
||
|
if [ -d /sys/class/tty/$tty ]; then
|
||
|
service_on_tty anaconda-shell@.service $tty
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
ln -sf "$systemd_dir/anaconda-nm-config.service" "$target_dir/anaconda-nm-config.service"
|
||
|
ln -sf "$systemd_dir/anaconda-nm-disable-autocons.service" "$target_dir/anaconda-nm-disable-autocons.service"
|
||
|
ln -sf "$systemd_dir/anaconda-pre.service" "$target_dir/anaconda-pre.service"
|