[gelöst] Probleme mit systemd in 12.3

Hinweis: In dem Thema [gelöst] Probleme mit systemd in 12.3 gibt es 1 Antwort.
  • Leider hat openSUSE mit 12.3 ja nun endgültig auf systemd umgestellt.
    Wenn ich Gnome 3.6 beenden will (d.h. zurück auf die Text-Console wechseln), bekomme ich die folgenden Probleme:

    • in Gnome 3.6 geht Alt-Ctrl-F1 usw nicht mehr (hat vermutlich nichts mit systemd zu tun)
    • gebe ich im xterm "sudo /sbin/init 3" ein bekomme ich links unten einen schwarzen, ein Zeichen großen Kasten mit blinkenden Cursor, das GUI bleibt aber sonst intakt
    • beende ich stattdessen die Session (z.B. mit gnome-session-quit oder "Abmelden" im Menu) bekomme ich den Anmeldeschirm. Dort kann man nun Alt-Ctrl-F1 drücken um auf die erste Text-Console zu gelangen. Es laufen aber noch eine Menge Gnome-Prozesse. Führt man nun "init 3" (oder von mir aus auch das Äquivalent "systemctl isolate multi-user.target") aus, laufen weiterhin noch jede Menge "gdm"-Prozesse. Kille ich nun /usr/bin/gnome-session (oder führe "systemctl kill xdm" aus) lande ich in Text-Console 7. Leider sind hier alle Eingaben blockiert. Auch Alt-F1 bis F12 geht nicht. Wenn der telnet Service aktiv ist, kann man sich an die Maschine von aussen anmelden und "init 1" eingeben. Damit kann man die Console "wiederbeleben".

    Meine Frage: wie kann man Gnome in openSUSE 12.3 mit systemd sauber beenden?

    openSUSE 13.2

    2 Mal editiert, zuletzt von dosogoblin ()

    Für den Inhalt des Beitrages 53548 haftet ausdrücklich der jeweilige Autor: dosogoblin

  • Ich habe einen Workaround gefunden: "init 1" ist nicht wirklich nötig.
    Es genügt den Befehl "chvt" zu verwenden, um von der blockierten Console 7 wegzuschalten.
    Hier mein (quick and dirty) Script "killxdm", das man als root ausführen muß, am besten:

    • nachdem man sich ordnungsgemäß von Gnome abgemedet hat,
    • man mittels Alt-Ctrl-Fn auf eine Console gewechselt ist und
    • man dann z.B. "init 3" eingegeben hat.
    Bash
    #!/bin/sh
    
    
    N=`fgconsole`
    if [ "$N" == "7" ]; then N=1; fi
    if ![ "$N" -eq "$N" 2>/dev/null ]; then N=1; fi
    (nohup sh -c "sleep 2; chvt $N"&) 2>/dev/null
    R=`runlevel | sed 's/[^ ]* //'`
    if [ "$R" == "5" ]; then init 3; fi
    systemctl kill xdm


    "fgconsole" liefert die Nummer der aktuellen Console, kann aber auch sowas wie "serial" zurückgeben daher die zweite "if"-Anweisung.


    Kommentare gerne.


    dg.

    openSUSE 13.2

    Für den Inhalt des Beitrages 53650 haftet ausdrücklich der jeweilige Autor: dosogoblin