When deploying openSUSE Tumbleweed on bare-metal hardware using the Agama installer, certain GPU and HDMI monitor combinations can stall at the SDDM login screen after the first reboot. Below are two practical, repeatable ways to bypass SDDM and launch KDE Plasma Wayland directly via TTY1: first by embedding a `chroot` post-install hook directly inside Agama's `profile.json` , and second via a standalone, idempotent post-reboot bash script executed over SSH .
This update of profile.json and script bypass-sddm-wayland.sh are closely linked to the final part of the post Agama Unattended installation openSUSE Tumbleweed via profile.json on remote host (bare metal ) at Lxer.com
### Method 1: Embedding a Chroot Post-Install Hook in `profile.json` (*)
Add a `"scripts"` block to your exported `profile.json` (*):
* Disable `sddm.service` and set the default target to `multi-user.target`.
* Configure a systemd service override for `getty@tty1` to auto-login your target user (`id -nu 1000`).
* Update `~/.bash_profile` to automatically execute `/usr/bin/startplasma-wayland` when logging in on TTY1 (`XDG_VTNR` equals 1).
"scripts": {
"post": [
{
"name": "bypass-sddm-tty1-wayland",
"chroot": true,
"body": "#!/bin/bash\nset -e\n\nTARGET_USER=$(id -nu 1000)\n\nsystemctl disable sddm.service --force\nsystemctl set-default multi-user.target\n\nmkdir -p /etc/systemd/system/getty@tty1.service.d\ncat << EOF > /etc/systemd/system/getty@tty1.service.d/override.conf\n[Service]\nExecStart=\nExecStart=-/sbin/agetty --autologin ${TARGET_USER} --noclear %I \$TERM\nEOF\n\ncat << 'EOF' >> /home/${TARGET_USER}/.bash_profile\n# Automatically launch KDE Plasma Wayland if logging in on TTY1\nif [ -z \"${DISPLAY}\" ] && [ \"${XDG_VTNR}\" -eq 1 ]; then\n exec /usr/bin/startplasma-wayland\nfi\nEOF\n\nchown ${TARGET_USER}:users /home/${TARGET_USER}/.bash_profile\n"
}
]
}
}
python3 -m json.tool ~/Downloads/profile.json > /dev/null && echo "JSON OK"
### Method 2: Standalone Post-Reboot Bash Script (`bypass-sddm-wayland.sh`)
If using a standard `profile.json` without embedded hooks, execute the standalone script over SSH as `root` after rebooting (*) to apply the same `sddm` disablement, `getty@tty1` auto-login override, and `.bash_profile` Plasma Wayland startup sequence for the target user.
#!/bin/bash
#
#==========================================================
# openSUSE Tumbleweed Post-Install SDDM Bypass & Auto-Login to Plasma Wayland
# Purpose: Bypasses broken SDDM HDMI login prompts by enabling automatic TTY1
# console login and launching KDE Plasma Wayland directly.
# Usage: Run as root via SSH after first reboot:
# sudo ./bypass-sddm-wayland.sh [username]
#=========================================================
set -euo pipefail
# 1. Verify root privileges
if [[ "${EUID}" -ne 0 ]]; then
echo "ERROR: This script must be run as root." >&2
exit 1
fi
# 2. Resolve target desktop user (defaults to passed argument or UID 1000)
TARGET_USER="${1:-$(id -nu 1000 2>/dev/null || true)}"
if [[ -z "${TARGET_USER}" ]] || ! id "${TARGET_USER}" &>/dev/null; then
echo "ERROR: Valid non-root user not found. Pass username explicitly: $0 <username>" >&2
exit 1
fi
USER_HOME=$(getent passwd "${TARGET_USER}" | cut -d: -f6)
USER_GROUP=$(id -gn "${TARGET_USER}")
echo "Configuring TTY1 autologin and Plasma Wayland startup for user: ${TARGET_USER}"
# 3. Disable SDDM display manager and switch default boot target to multi-user CLI
echo "Disabling SDDM and setting default target to multi-user.target..."
systemctl disable sddm.service --force
systemctl set-default multi-user.target
# 4. Configure systemd getty@tty1 drop-in override for automatic console login
echo "Creating systemd override for getty@tty1.service..."
OVERRIDE_DIR="/etc/systemd/system/getty@tty1.service.d"
mkdir -p "${OVERRIDE_DIR}"
cat << EOF > "${OVERRIDE_DIR}/override.conf"
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin ${TARGET_USER} --noclear %I \$TERM
EOF
# 5. Configure user's ~/.bash_profile to source ~/.bashrc and start Plasma Wayland on TTY1
echo " Updating ${USER_HOME}/.bash_profile..."
BASH_PROFILE="${USER_HOME}/.bash_profile"
# Create .bash_profile with standard .bashrc sourcing if it does not exist yet
if [[ ! -f "${BASH_PROFILE}" ]]; then
cat << 'EOF' > "${BASH_PROFILE}"
# Source the user's primary bash configuration if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
EOF
fi
# Append startplasma-wayland block only if not already present (idempotent)
if ! grep -q "startplasma-wayland" "${BASH_PROFILE}"; then
cat << 'EOF' >> "${BASH_PROFILE}"
# Automatically launch KDE Plasma Wayland if logging in on TTY1
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR:-0}" -eq 1 ]; then
exec /usr/bin/startplasma-wayland
fi
EOF
fi
# 6. Restore proper file ownership and reload systemd daemon
echo "Setting permissions and reloading systemd..."
chown "${TARGET_USER}:${USER_GROUP}" "${BASH_PROFILE}"
systemctl daemon-reload
echo "========================================================="
echo "Done! Reboot the system ('systemctl reboot') to boot straight into Plasma."
echo "========================================================="
REFERENCES
(*) Proposed by Google AI






