Рейтинг:3

Ubuntu 21.10 - проблема с GDM - экран входа в систему

флаг bg

Я просто обновляю свой рабочий стол с Ubuntu 21.04 до 21.10. Все работает нормально! Я был счастлив.

Но после этого я запускаю не ту программу, которая меняет фон графического экрана входа в систему на другую картинку.

Скорее всего, сценарий, который я запускаю: Я скачал следующую программу 21.04, установил и запустил ее.

 github.com/thiggy01/gdm-фон

 gdm-фон / gdm-фон-помощник /


#!/usr/bin/env python3

импортный дистрибутив
импорт dbus
импортировать dbus.service
из dbus.mainloop.glib импортировать DBusGMainLoop
из gi.repository импортировать GLib
импортный шутил
из вызова импорта подпроцесса

класс GDMBackground (dbus.service.Object):

    если distro.id() == 'ubuntu':
        default_theme = '/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource'
    elif distro.id() == 'поп':        
        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='отправитель', connection_keyword='подключение')
    def SetImage(self, task, sender=None, conn=None):
        action_id = 'xyz.thiggy01.GDMBackground.SetImage'
        если self._check_polkit_привилегия (отправитель, соединение, action_id):
            если задача == 'резервное копирование':
                Shutil.copy(self.default_theme, self.backup_theme)
            задача Элиф == 'установить':
                Shutil.move("/tmp/gdm3/theme/gnome-shell-theme.gresource", self.default_theme)
                вернуть Истина
        еще:
            вернуть ложь

    @dbus.service.method('xyz.thiggy01.GDMBackground', in_signature='s', out_signature='b',
        sender_keyword='отправитель', connection_keyword='подключение')
    def RestoreBackup (я, задача, отправитель = нет, соединение = нет):
        action_id = 'xyz.thiggy01.GDMBackground.RestoreBackup'
        если self._check_polkit_привилегия (отправитель, соединение, action_id):
            если задача == 'восстановить':
                Shutil.move(self.backup_theme, self.default_theme)
                вернуть Истина
        еще:
            вернуть ложь

    @dbus.service.method('xyz.thiggy01.GDMBackground', in_signature='s', out_signature='',
        sender_keyword='отправитель', connection_keyword='подключение')
    def RestartGDM (self, action_id, sender=None, conn=None):
            если self._check_polkit_привилегия (отправитель, соединение, action_id):
                call(['/usr/sbin/service', 'gdm', 'перезагрузка'])

    def _check_polkit_привилегия (я, отправитель, соединение, action_id):
        если отправитель - None, а conn - None:
            возвращаться

        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(отправитель)

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

        пытаться:
            (is_auth, is_challenge, детали) = self.proxy_polkit.CheckAuthorization(
                ('unix-процесс', {'pid': dbus.UInt32(sender_pid, variant_level=1),
                                  'время начала': dbus.UInt64(0, variant_level=1)}),
                 action_id, {'':''}, dbus.UInt32(1), 'отмена')
            если is_auth:
                вернуть Истина
            еще:
                вернуть ложь
        кроме dbus.DBusException как ошибка:
            self.proxy_polkit.CancelCheckAuthorization('отмена')
            поднимать

если __name__ == '__main__':
   
    DBusGMainLoop (set_as_default = Истина)
    шина = dbus.SystemBus()
    name = dbus.service.BusName('xyz.thiggy01.GDMBackground', шина)
    gdm_background_helper = GDMBackground(имя, '/xyz/thiggy01/GDMBackground')
    GLib.MainLoop().run()

После этого Ubuntu 21.10 больше не может загружать графический экран входа в систему.

На экране ошибка: Monitor SAD face с сообщением "О нет! Что-то пошло не так". Возникла проблема, и система не может восстановиться. Обратитесь к системному администратору.

Я пытаюсь устранить проблему, запустив Ubuntu 21.10 в режиме восстановления. Затем перейдите в корень и с помощью команд:

sudo apt установить ubuntu-gnome-desktop
статус systemctl gdm
systemctl запустить gdm

Это вообще не работает.

Я подозреваю, что программа/скрипт, который я запускаю, конфликтует с настройкой GNOME 40 и Ubuntu 21.04. Пожалуйста, помогите мне вернуть исходную настройку экрана входа в систему с графическим интерфейсом.

Я пытаюсь войти в Ubuntu 21.04, используя CTRL-SHIFT-F3. Затем я набираю:

статус systemctl gdm3

gdm.service активен (работает)
Запуск диспетчера отображения GNOME.....

Но есть сообщение об ошибке:

Gdm: GdmDisplay: сеанс не зарегистрирован, сбой
Gdm: Дочерний процесс -2037 уже мертв.
флаг in
Не могли бы вы [отредактировать] свой вопрос, включив в него название программы или содержимое скрипта, который вы запустили, чтобы изменить фон экрана входа в систему? Это может помочь кому-то предложить конкретное решение вашей проблемы.
Greenonline avatar
флаг us
Пожалуйста [отредактируйте] свой вопрос и поместите информацию там, а не в комментариях.
John Lo avatar
флаг bg
Я только что сделал, спасибо!
John Lo avatar
флаг bg
В итоге я удаляю сеанс gnome, рабочий стол gnome и gdm3, чтобы вернуться к входу в систему sddm - с помощью KDE и XFCE. Как только я снова устанавливаю GNOME, проблема сохраняется. Пожалуйста, предложите решение, спасибо!
Рейтинг:2
флаг ps

У меня такая же проблема. Сначала вам нужно получить доступ к корневой консоли восстановления. Нажатие левого Shift или Escape во время загрузки должно сделать это. https://wiki.ubuntu.com/RecoveryMode

Что может быть достаточно

Я установил lightdm, но не уверен, что требуется установка lightdm и обратное переключение на gdm3. Это может сработать:

sudo apt переустановить gdm3 gnome-shell yaru-theme-gnome-shell
перезапуск службы sudo gdm3

Что я сделал

Сначала я запустил опцию восстановления, чтобы вернуть исходный файл. Нет эффекта. Я использовал другой скрипт с флагом --restore, а не код Python, который вы разместили. Похоже, они оба просто делают это:

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

Затем я установил lightdm.

# Следует установить, а затем показать пользовательский интерфейс для переключения с gdm3 на lightdm
sudo apt установить lightdm

Перезагрузился, и это сработало, но пользовательский интерфейс стал глючить, когда я снова вошел в Gnome. Например: нажатие клавиши Super вызвало окно поиска приложений, но значки были наложены друг на друга и мерцали, как проблема с фреймбуфером. Также lightdm показал Ubuntu версии 21.04 в левом нижнем углу. Я не думаю, что lightdm + gnome должным образом поддерживается в 21.10.

Наконец, я переустановил gdm3, gnome-shell и тему yaru и переключился с lightdm обратно на gdm.

sudo apt переустановить gdm3 gnome-shell yaru-theme-gnome-shell
# Переключиться обратно на gdm3
sudo dpkg-перенастроить gdm3 

Перезагрузился, и все снова работает, все тот же фоновый рисунок по умолчанию для gdm3. Утомительно, что для изменения фонового изображения требуется взлом, но вот мы здесь.

John Lo avatar
флаг bg
Спасибо Caller9. Поблагодарить! Ваше решение работает, я переустанавливаю ubuntu-gnome-desktop вместе с gdm3 gnome-shell yaru-theme-gnome-shell. Теперь я могу войти в GNOME40 под GDM! Отличный материал .. высоко ценится!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.