Acabo de actualizar mi escritorio de Ubuntu 21.04 a 21.10. ¡Todo funciona bien! Yo era feliz.
Pero después de eso, ejecuto un programa incorrecto que cambiará el fondo de la pantalla gráfica de inicio de sesión a otra imagen.
Lo más probable es que sea el script que ejecuto: descargué el siguiente programa durante el 21.04, lo instalé y lo ejecuté.
github.com/thiggy01/gdm-background
gdm-background/gdm-background-helper /
#!/usr/bin/env python3
import distro
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
from gi.repository import GLib
import shutil
from subprocess import call
class GDMBackground(dbus.service.Object):
if 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)
elif task == 'set':
shutil.move("/tmp/gdm3/theme/gnome-shell-theme.gresource", self.default_theme)
return True
else:
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 == 'restore':
shutil.move(self.backup_theme, self.default_theme)
return True
else:
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', 'restart'])
def _check_polkit_privilege(self, sender, conn, action_id):
if sender is None and conn is None:
return
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')
try:
(is_auth, is_challenge, details) = self.proxy_polkit.CheckAuthorization(
('unix-process', {'pid': dbus.UInt32(sender_pid, variant_level=1),
'start-time': dbus.UInt64(0, variant_level=1)}),
action_id, {'':''}, dbus.UInt32(1), 'cancel')
if is_auth:
return True
else:
return False
except dbus.DBusException as error:
self.proxy_polkit.CancelCheckAuthorization('cancel')
raise
if __name__ == '__main__':
DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
name = dbus.service.BusName('xyz.thiggy01.GDMBackground', bus)
gdm_background_helper = GDMBackground(name, '/xyz/thiggy01/GDMBackground')
GLib.MainLoop().run()
Después de eso, Ubuntu 21.10 ya no puede cargar la pantalla gráfica de inicio de sesión.
Hay un error en la pantalla: Monitoree la cara SAD con el mensaje "¡Oh, no! Algo salió mal". Ha ocurrido un problema y el sistema no puede recuperarse. Comuníquese con un administrador del sistema.
Intento solucionar el problema ejecutando Ubuntu 21.10 usando el modo de recuperación. Luego ve a la raíz y usando los comandos:
sudo apt install ubuntu-gnome-desktop
systemctl status gdm
systemctl start gdm
No funciona en absoluto.
Sospecho que el programa/script que ejecuto entra en conflicto con la configuración de GNOME 40 con Ubuntu 21.04. Ayúdenme a recuperar la configuración original de la pantalla de inicio de sesión de la GUI.
Intento iniciar sesión en Ubuntu 21.04 usando CTRL-SHIFT-F3. Luego escribo:
systemctl status gdm3
gdm.service is active (running)
Starting GNOME Display Manager.....
Pero hay un mensaje de error:
Gdm: GdmDisplay: Session never registered, failing
Gdm: Child process -2037 was already dead.
Respuesta1
Yo tuve el mismo problema. Primero deberá acceder a una consola raíz de recuperación. Presionar Mayús izquierda o Escape durante el arranque debería ser suficiente.https://wiki.ubuntu.com/RecoveryMode
¿Qué podría ser suficiente?
Instalé lightdm, pero no estoy seguro de si era necesario instalar lightdm y volver a gdm3. Esto podría funcionar:
sudo apt reinstall gdm3 gnome-shell yaru-theme-gnome-shell
sudo service gdm3 restart
Lo que hice
Primero ejecuté la opción de restauración para recuperar el archivo original. Sin efecto. Utilicé un script diferente con el indicador --restore, no el código Python que publicaste. Parece que ambos simplemente hacen esto:
mv /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource~ \
/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource
Luego instalé lightdm.
# Should install then show UI to switch from gdm3 to lightdm
sudo apt install lightdm
Reinicié y funcionó, pero la interfaz de usuario falló una vez que volví a iniciar sesión en Gnome. Por ejemplo: al presionar la tecla Super aparecía el cuadro de búsqueda de la aplicación, pero los íconos se dibujaban superpuestos y parpadeaban como un problema de framebuffer. Lightdm también mostró la versión 21.04 de Ubuntu en la esquina inferior izquierda. No creo que lightdm + gnome sea compatible correctamente en 21.10 todavía.
Finalmente, reinstalé gdm3, gnome-shell y el tema yaru y cambié de lightdm a gdm.
sudo apt reinstall gdm3 gnome-shell yaru-theme-gnome-shell
# Switch back to gdm3
sudo dpkg-reconfigure gdm3
Se reinicia y todo funciona nuevamente, sigue siendo la misma imagen de fondo predeterminada para gdm3. Es más que tedioso que requiera piratería para cambiar una imagen de fondo, pero aquí estamos.