diff --git a/xCAT-server/share/xcat/scripts/xcatd-init-compat b/xCAT-server/share/xcat/scripts/xcatd-init-compat index 1a42c8b18..a1001068b 100755 --- a/xCAT-server/share/xcat/scripts/xcatd-init-compat +++ b/xCAT-server/share/xcat/scripts/xcatd-init-compat @@ -270,7 +270,10 @@ unregister_legacy_init() disable_systemd_init() { - if [ -z "$compat_root" ] && command -v systemctl >/dev/null 2>&1; then + disable_mode=${1:-host-tools} + + if [ "$disable_mode" != links-only ] && + [ -z "$compat_root" ] && command -v systemctl >/dev/null 2>&1; then systemctl disable xcatd.service >/dev/null 2>&1 || true fi @@ -414,7 +417,14 @@ case "${1:-}" in unregister_legacy_init ;; disable-systemd) - disable_systemd_init + case "${2:-}" in + '') disable_systemd_init ;; + --links-only) disable_systemd_init links-only ;; + *) + echo "Usage: $0 disable-systemd [--links-only]" >&2 + exit 2 + ;; + esac ;; unregister-all) unregister_all_init @@ -430,7 +440,7 @@ case "${1:-}" in remove_managed_legacy_init ;; *) - echo "Usage: $0 {uses-systemd [--explicit-target]|legacy-state|legacy-transition-state|systemd-state|register-legacy {enabled|disabled}|unregister-legacy|disable-systemd|unregister-all|configure [--replace] [--explicit-target] [--track-managed]|remove|remove-managed}" >&2 + echo "Usage: $0 {uses-systemd [--explicit-target]|legacy-state|legacy-transition-state|systemd-state|register-legacy {enabled|disabled}|unregister-legacy|disable-systemd [--links-only]|unregister-all|configure [--replace] [--explicit-target] [--track-managed]|remove|remove-managed}" >&2 exit 2 ;; esac diff --git a/xCAT-server/xCAT-server.spec b/xCAT-server/xCAT-server.spec index 7cdf422e5..11e688a25 100644 --- a/xCAT-server/xCAT-server.spec +++ b/xCAT-server/xCAT-server.spec @@ -521,7 +521,8 @@ if [ "$1" = "1" ]; then #Only if installing for the first time.. legacy_xcatd_state=$("$xcatd_init_compat" legacy-state) case "$legacy_xcatd_state" in enabled|disabled) - "$xcatd_init_compat" register-legacy "$legacy_xcatd_state" + # Preserve any pre-existing administrator runlevel layout. + : ;; *) if [ "$("$xcatd_init_compat" systemd-state)" != masked ]; then @@ -552,8 +553,9 @@ if [ "$1" -gt "1" ]; then #only on upgrade... systemctl enable xcatd.service fi else + legacy_xcatd_registration=$("$xcatd_init_compat" legacy-state) legacy_xcatd_state=$("$xcatd_init_compat" legacy-transition-state) - "$xcatd_init_compat" disable-systemd + "$xcatd_init_compat" disable-systemd --links-only # systemctl may delegate to systemd-sysv-install and recreate K links for # a pre-existing SysV script. Restore the captured unregistered or masked @@ -570,7 +572,9 @@ if [ "$1" -gt "1" ]; then #only on upgrade... case "$legacy_xcatd_state" in enabled|disabled) - "$xcatd_init_compat" register-legacy "$legacy_xcatd_state" + if [ "$legacy_xcatd_registration" = unregistered ]; then + "$xcatd_init_compat" register-legacy "$legacy_xcatd_state" + fi ;; masked|unregistered) ;;