Заметки программиста

Циклическая блокировка входа

Постоянный возврат на экран входа (циклическая блокировка) обычно возникает из-за неверных прав на файлы пользователя, ошибок в системных конфигурациях или сбоев видеодрайверов. Решение зависит от точной причины, но большинство пользователей устраняют это через командную строку.

У меня последовательность команд для получения доступа к моему сеансу была такой:

sudo chown $USER:$USER ~/.Xauthority
loginctl unlock-session c2
DISPLAY=:0 light-locker-command -d
DISPLAY=:0 gnome-screensaver-command -d
killall -9 light-locker

Команды взяты из рекомендаций ИИ для решения проблемы с циклической блокировкой:

Метод 1: Исправление прав на файл .Xauthority

Самая частая причина (особенно при использовании графического сервера Xorg) — повреждение прав доступа к временному файлу.

  1. На экране входа нажмите комбинацию клавиш Ctrl + Alt + F3. Вы попадете в текстовый терминал.
  2. Введите свой логин и пароль.
  3. Исправьте права на файл, введя команду:
    sudo chown $USER:$USER ~/.Xauthority
  4. Перезагрузите систему: sudo reboot.

Метод 2: Очистка временных файлов (/tmp)

Сбои могут происходить, если системная папка /tmp заполнена или имеет неверные разрешения.

  1. Перейдите в текстовый терминал (Ctrl + Alt + F3) и авторизуйтесь.
  2. Проверьте права каталога: ls -ld /tmp (в выводе должно быть drwxrwxrwt).
  3. Если права сбиты, восстановите их:
    sudo chmod a+wt /tmp
  4. Перезагрузите ПК: sudo reboot.

Метод 3: Проверка свободного места

Если на системном диске не осталось места, графический интерфейс перестает загружаться.

  1. В текстовой консоли (Ctrl + Alt + F3) введите: df -h
  2. Если раздел / (корень) заполнен на 100%, удалите ненужные файлы или очистите кэш пакетов командой: sudo apt clean.

Метод 4: Отключение или удаление расширений GNOME

Часто пользователи сталкиваются с бесконечным входом из-за несовместимых расширений GNOME. Решение сбросить настройки GNOME обсуждается сообществом как наиболее надежное.

  1. Войдите в консоль Ctrl + Alt + F3.
  2. Сбросьте параметры GNOME: sudo dconf reset -f /.

Метод 5: Проблема с видеодрайвером Nvidia

Иногда после обновления ядра или установки драйверов видеокарта не может запустить графический сервер. В таком случае может потребоваться удаление или откат проприетарного драйвера.

Видеоинструкция по запуску терминала входа и базовому восстановлению сессии: How to Fix the Ubuntu Login Loop

Детальное руководство по сбросу и переустановке менеджера дисплея GDM3 для решения циклического входа: How to Fix the Ubuntu Login Loop

Если «sudo: dconf: команда не найдена»:

Ошибка означает, что утилита dconf не установлена в системе или вы используете другой графический сервер. Попробуем решить проблему с расширениями и настройками GNOME другими способами прямо из консоли.

Вот что нужно сделать по порядку:

Шаг 1: Сброс настроек без dconf

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

  1. В текстовом терминале (Ctrl + Alt + F3) введите команду для удаления локальных настроек GNOME:
    rm -rf ~/.config/dconf
  2. Также временно отключите все расширения, переименовав их папку:
    mv ~/.local/share/gnome-shell/extensions ~/.local/share/gnome-shell/extensions.bak
  3. Перезагрузите компьютер: sudo reboot.

Шаг 2: Переустановка графического менеджера (GDM3)

Если сброс настроек не помог, возможно, поврежден сам менеджер входа в систему. Его переустановка часто решает проблему «петли» авторизации. Чтобы сохранить текущую сессию (открытые документы, вкладки и программы), вам категорически нельзя перезапускать gdm3 или перезагружать ПК, так как это полностью уничтожит рабочие процессы.

  1. Снова зайдите в текстовый терминал (Ctrl + Alt + F3).
  2. Выполните команду переустановки:
    sudo apt update && sudo apt install --reinstall gdm3 ubuntu-desktop
  3. Во время установки (или после неё) выполните команду для принудительного выбора GDM3:
    sudo dpkg-reconfigure gdm3
  4. В появившемся окне выберите gdm3 и нажмите Enter.
  5. Перезагрузите ПК: sudo reboot.

Шаг 3: Проверка логов ошибок

Если экран блокировки всё ещё возвращается, нужно посмотреть, какая именно ошибка мешает входу.

  1. В терминале введите команду:
    journalctl -b -0 | grep -E "gnome-shell|gdm|Xorg"
  2. Посмотрите на последние строки. Если там есть слова «Failed to start», «Core dumped» или сообщения о Nvidia, это укажет на точную причину.

Применить изменения и перезапустить графическую оболочку можно без перезагрузки компьютера. Для этого достаточно перезапустить сам менеджер дисплея (дисплейный сервер) из консоли TTY.

Обратите внимание: этот процесс принудительно закроет все открытые программы в графическом интерфейсе.

Шаг 1: Перезапуск графической службы

В текстовом терминале (Ctrl + Alt + F3) выполните команду перезапуска менеджера входа. Это сбросит зависшую сессию и применит исправленные права доступа:

sudo systemctl restart gdm3
Используйте код с осторожностью.

(Если вы используете старую версию Ubuntu или Kubuntu/Lubuntu, вместо gdm3 введите gdm, lightdm или sddm).

После выполнения команды вас должно автоматически перекинуть на обновленный экран входа. Если этого не произошло, нажмите Ctrl + Alt + F1 (или F2, F7 в зависимости от версии Ubuntu), чтобы вернуться в графический режим.

Шаг 2: Если journalctl пуст (проверка Wayland)

В современных версиях Ubuntu вместо сервера Xorg по умолчанию используется Wayland. Именно поэтому grep-запрос по слову «Xorg» мог ничего не найти.

Если после перезапуска службы gdm3 вход всё ещё циклится, выполните команду без фильтров, чтобы увидеть последние 50 строк системного лога:

journalctl -b -0 -n 50
Ищите строки со словами org.gnome.Shell.desktop, failed, segfault или exit-status.

Шаг 3: Как узнать видеокарту из консоли

Если вы не помните видеокарту, а драйвер часто является причиной «петли» входа, определите её прямо сейчас одной командой в терминале:

lspci -k | grep -A 2 -E "VGA|3D"
В выводе вы увидите модель (например, NVIDIA GeForce или Intel HD Graphics) и используемый драйвер (строка kernel driver in use).

Если у вас, например, видеокарта Radeon со встроенным свободным драйвером radeon, циклический запуск экрана блокировки в данном случае — это программный сбой разблокировщика (обычно gnome-screensaver или gnome-shell), а не проблема видеокарты.

Поскольку графический сервер и ваши программы все еще запущены на заднем плане, мы можем принудительно «протолкнуть» зависший экран блокировки через консоль.

Выполните следующие шаги в терминале Ctrl + Alt + F3:

Шаг 1: Принудительная разблокировка через loginctl

Это самый безопасный способ, который приказывает системе снять блокировку экрана, не затрагивая запущенный софт.

  1. Узнайте ID вашей запущенной сессии:bashloginctl list-sessions Используйте код с осторожностью.(В таблице найдите номер вашей сессии, например 2 или c2, напротив вашего имени пользователя).
  2. Отправьте команду на разблокировку (замените ИД_СЕССИИ на полученную цифру):bashloginctl unlock-session ИД_СЕССИИ Используйте код с осторожностью.
  3. Вернитесь в графический режим с помощью Ctrl + Alt + F1 (или F2, F7) и проверьте, открылся ли рабочий стол.

Шаг 2: Мягкий перезапуск графической оболочки (только для X11)

Если вы используете классический сервер X11 (Xorg), графическую оболочку GNOME можно перезапустить изнутри, сохранив все открытые приложения. Они просто перерисуются заново.

  1. В консоли TTY3 введите команду:bashDISPLAY=:0 gnome-shell --replace & Используйте код с осторожностью.(Если графический стол висит на другом порту, может потребоваться DISPLAY=:1).
  2. Переключитесь обратно в графику (Ctrl + Alt + F1 / F2). Оболочка перезапустится, и вы увидите свои программы.

Шаг 3: Перезапуск процесса блокировки

Если экран намертво завис в режиме «занавески», можно «убить» только сам процесс блокировки, GNOME Shell автоматически перезапустит его уже в разблокированном виде:

killall -3 gnome-shell
Используйте код с осторожностью.

или

killall -9 gnome-screensaver
Используйте код с осторожностью.

Что делать, если войти получилось (Как спасти данные)

Как только вы попадете на рабочий стол, первым делом сохраните всю важную работу (документы, проекты) и экспортируйте вкладки браузера.

Причина, по которой journalctl был пуст, заключается в том, что старый драйвер radeon на видеокартах терашкалы (HD 6000) может некорректно работать с аппаратным ускорением в новых версиях Ubuntu. После сохранения данных вам потребуется штатно перезагрузить ПК, а при следующем входе на экране ввода пароля нажать на шестеренку в правом нижнем углу и принудительно переключить сессию на «Ubuntu на Xorg» (вместо Wayland) — это решит проблему зависаний на данной видеокарте раз и навсегда.

Если у вас, например, запущен графический менеджер входа LightDM (пользователь lightdm), а ваша основная графическая сессия с программами — это c2 (она запущена на tty7, где и находятся все открытые приложения), и сессия 73 — это ваш текущий текстовый терминал TTY, в котором вы сейчас вводите команды.

Поскольку у вас используется LightDM (а не GDM), команды разблокировки будут немного другими. Выполните следующие шаги по порядку в консоли (Ctrl + Alt + F3):

Шаг 1: Разблокировка текущей сессии c2

Попробуем сначала стандартную команду разблокировки именно для вашей графической сессии:

loginctl unlock-session c2
Используйте код с осторожностью.

После этого переключитесь на графический экран, нажав Ctrl + Alt + F7 (или Ctrl + Alt + F1).

Шаг 2: Принудительный обход блокировщика LightDM

Если экран всё ещё заперт, значит, завис сам процесс блокировки (light-locker или screensaver). Попробуем отправить ему команду деактивации от имени вашего пользователя:

DISPLAY=:0 light-locker-command -d
Используйте код с осторожностью.

Если система выдаст ошибку, попробуйте альтернативный вариант:

DISPLAY=:0 gnome-screensaver-command -d
Используйте код с осторожностью.

Переключитесь на Ctrl + Alt + F7 и проверьте, открылся ли рабочий стол.

Шаг 3: Сброс процесса блокировки (Без потери программ)

Если экран блокировки намертво завис и не реагирует на команды выше, можно безопасно «убить» только сам процесс защитной шторки. Ваши запущенные браузеры и документы при этом останутся целы:

killall -9 light-locker
Используйте код с осторожностью.

Если не помогло, попробуйте закрыть альтернативные процессы блокировки, которые могли перехватить экран:

killall -9 xfce4-screensaver
killall -9 mate-screensaver
killall -9 cinnamon-screensaver
Используйте код с осторожностью.

После ввода этих команд переключитесь обратно на графический интерфейс (Ctrl + Alt + F7). Экран блокировки должен просто исчезнуть, показав ваши открытые программы.