Puncte:3

Ubuntu 21.10 - problemă GDM - ecran de conectare

drapel bg

Tocmai îmi actualizez desktopul de la Ubuntu 21.04 la 21.10. Totul merge bine! Am fost fericit.

Dar după aceea, rulez un program greșit care va schimba fundalul ecranului grafic de autentificare cu o altă imagine.

Cel mai probabil, Scriptul pe care îl rulez: Am descărcat următorul program în 21.04 și l-am instalat și rulat.

 github.com/thiggy01/gdm-background

 gdm-background/gdm-background-helper /


#!/usr/bin/env python3

import distro
import dbus
import dbus.service
din dbus.mainloop.glib import DBusGMainLoop
din gi.repository import GLib
import shutil
din apelul de import subproces

clasa GDMBackground(dbus.service.Object):

    dacă distro.id() == 'ubuntu':
        default_theme = '/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource'
    elif distro.id() == 'pop':        
        default_theme = '/usr/share/gnome-shell/theme/Pop/gnome-shell-theme.gresource'
    
    backup_theme = default_theme + '~'

    def __init__(self, conn=None, object_path=None, bus_name=None):
        dbus.service.Object.__init__(self, conn, object_path, bus_name)

    @dbus.service.method('xyz.thiggy01.GDMBackground', in_signature='s', out_signature='b',
        sender_keyword='sender', connection_keyword='conn')
    def SetImage(self, task, sender=None, conn=None):
        action_id = 'xyz.thiggy01.GDMBackground.SetImage'
        if self._check_polkit_privilege(sender, conn, action_id):
            if task == „backup”:
                shutil.copy(self.default_theme, self.backup_theme)
            sarcină elif == „set”:
                shutil.move("/tmp/gdm3/theme/gnome-shell-theme.gresource", self.default_theme)
                returnează Adevărat
        altceva:
            return False

    @dbus.service.method('xyz.thiggy01.GDMBackground', in_signature='s', out_signature='b',
        sender_keyword='sender', connection_keyword='conn')
    def RestoreBackup(self, task, sender=None, conn=None):
        action_id = 'xyz.thiggy01.GDMBackground.RestoreBackup'
        if self._check_polkit_privilege(sender, conn, action_id):
            if task == „restaurare”:
                shutil.move(self.backup_theme, self.default_theme)
                returnează Adevărat
        altceva:
            return False

    @dbus.service.method('xyz.thiggy01.GDMBackground', in_signature='s', out_signature='',
        sender_keyword='sender', connection_keyword='conn')
    def RestartGDM(self, action_id, sender=None, conn=None):
            if self._check_polkit_privilege(sender, conn, action_id):
                call(['/usr/sbin/service', 'gdm', 'repornire'])

    def _check_polkit_privilege(self, sender, conn, action_id):
        dacă sender este None și conn este None:
            întoarcere

        self.proxy_dbus = dbus.Interface(conn.get_object('org.freedesktop.DBus',
            „/org/freedesktop/DBus/Bus”, False), „org.freedesktop.DBus”)
        sender_pid = self.proxy_dbus.GetConnectionUnixProcessID(sender)

        self.proxy_polkit = dbus.Interface(dbus.SystemBus().get_object(
            „org.freedesktop.PolicyKit1”, „/org/freedesktop/PolicyKit1/Authority”, False),
            „org.freedesktop.PolicyKit1.Authority”)

        încerca:
            (is_auth, is_challenge, details) = self.proxy_polkit.CheckAuthorization(
                („unix-process”, {„pid”: dbus.UInt32(sender_pid, variant_level=1),
                                  „ora de pornire”: dbus.UInt64(0, variant_level=1)}),
                 action_id, {'':''}, dbus.UInt32(1), 'anulează')
            if is_auth:
                returnează Adevărat
            altceva:
                return False
        cu excepția dbus.DBusException ca eroare:
            self.proxy_polkit.CancelCheckAuthorization('cancel')
            a ridica

if __name__ == '__main__':
   
    DBusGMainLoop(set_as_default=True)
    bus = dbus.SystemBus()
    nume = dbus.service.BusName('xyz.thiggy01.GDMBackground', autobuz)
    gdm_background_helper = GDMBackground(nume, '/xyz/thiggy01/GDMBackground')
    GLib.MainLoop().run()

După aceea, Ubuntu 21.10 nu mai poate încărca ecranul grafic de conectare.

Există o eroare pe ecran: Monitorizați fața SAD cu mesajul „Oh, nu! Ceva a mers prost”. A apărut o problemă și sistemul nu se poate recupera. Vă rugăm să contactați un administrator de sistem.

Încerc să depanez problema rulând Ubuntu 21.10 folosind modul de recuperare. Apoi mergeți la rădăcină și folosiți comenzile:

sudo apt install ubuntu-gnome-desktop
systemctl status gdm
systemctl start gdm

Nu merge deloc.

Bănuiesc că programul/scriptul pe care îl rulez are un conflict cu configurarea GNOME 40 cu Ubuntu 21.04. Vă rugăm să mă ajutați să recuperez setarea originală a ecranului de conectare a GUI.

Încerc să mă conectez la Ubuntu 21.04 folosind CTRL-SHIFT-F3. Apoi tastez:

starea systemctl gdm3

gdm.service este activ (în rulare)
Se pornește Managerul de afișare GNOME.....

Dar există un mesaj de eroare:

Gdm: GdmDisplay: Sesiune nu a fost înregistrată niciodată, eșuând
Gdm: Procesul copil -2037 era deja mort.
drapel in
Ați putea [editați] întrebarea dvs. pentru a include numele programului sau conținutul scriptului pe care l-ați rulat pentru a schimba fundalul ecranului de conectare? Acest lucru poate ajuta pe cineva să ofere o soluție specifică problemei dvs.
Greenonline avatar
drapel us
Vă rugăm să [editați] întrebarea dvs. și să puneți informațiile acolo, nu în comentarii.
John Lo avatar
drapel bg
Tocmai am făcut-o, mulțumesc!
John Lo avatar
drapel bg
Am dezinstalat gnome session, gnome desktop și gdm3, astfel încât să pot reveni la autentificare sddm - folosind KDE și XFCE. De îndată ce instalez din nou GNOME, problema persistă. Vă rugăm să sugerați pentru o soluție, mulțumesc!
Puncte:2
drapel ps

Am avut aceeasi problema. Mai întâi va trebui să ajungeți la o consolă rădăcină de recuperare. Apăsând pe shift la stânga sau pe Escape în timpul pornirii ar trebui să o facă. https://wiki.ubuntu.com/RecoveryMode

Ce ar putea fi suficient

Am instalat lightdm, dar nu sunt sigur dacă a fost necesară instalarea lightdm și trecerea înapoi la gdm3. Acest lucru ar putea funcționa:

sudo apt reinstall gdm3 gnome-shell yaru-theme-gnome-shell
reporniți serviciul sudo gdm3

Ce am facut

Mai întâi am rulat opțiunea de restaurare pentru a pune înapoi fișierul original. Fara efect. Am folosit un script diferit cu un steag --restore, nu codul Python pe care l-ați postat. Se pare că amândoi fac asta:

mv /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource~ \
/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource

Apoi am instalat lightdm.

# Ar trebui să se instaleze, apoi să arate interfața de utilizare pentru a comuta de la gdm3 la lightdm
sudo apt install lightdm

A repornit și a funcționat, dar interfața de utilizare a fost greșită odată ce m-am conectat din nou la Gnome. De exemplu: apăsarea tastei Super a apărut caseta de căutare a aplicației, dar pictogramele au fost desenate suprapuse și pâlpâind ca o problemă cu framebuffer. De asemenea, lightdm a arătat versiunea Ubuntu 21.04 în colțul din stânga jos. Nu cred că lightdm + gnome este încă acceptat corespunzător în 21.10.

În cele din urmă, am reinstalat gdm3, gnome-shell și tema yaru și am trecut de la lightdm înapoi la gdm.

sudo apt reinstall gdm3 gnome-shell yaru-theme-gnome-shell
# Reveniți la gdm3
sudo dpkg-reconfigure gdm3 

Repornit și totul funcționează din nou, rămâne aceeași imagine de fundal implicită pentru gdm3. Este dincolo de plictisitor faptul că necesită hacking pentru a schimba o imagine de fundal, dar aici suntem.

John Lo avatar
drapel bg
Mulțumesc Caller9. Mulțumiri! Soluția dvs. funcționează, reinstalez ubuntu-gnome-desktop, împreună cu gdm3 gnome-shell yaru-theme-gnome-shell. Acum mă pot autentifica la GNOME40 sub GDM! Lucruri grozave.. foarte apreciate!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.