Как не показывать содержимое последней использованной консоли при запуске/остановке LightDM?

Вопрос или проблема

Я использую Linux и хочу использовать LightDM в качестве дисплейного менеджера. Пока что дисплейный менеджер и программа приветствия (это Xubuntu GTK+ greeter, если это имеет значение) работают корректно — всё работает правильно.

Единственная проблема, с которой я сталкиваюсь, — это эстетическая: когда LightDM остановлен (например, когда система выключается) или когда он снова запускается после выхода из сеанса (но не при загрузке системы, так как в этом случае нет предыдущего содержимого консоли), на экране на короткое время можно увидеть содержимое последней использованной консоли (например, /dev/tty3).
Я также заметил, что если я останавливаю LightDM с помощью команды (systemctl stop lightdm.service), содержимое консоли также показывается на короткое время, но затем сразу же очищается, и я остаюсь с пустым экраном.

Мои вопросы: почему это происходит, т.е. почему содержимое ранее использованной консоли отображается при запуске/остановке LightDM в описанных выше сценариях; и как можно предотвратить их отображение в этих сценариях?

Ответ или решение

Поведение, при котором последний использованный содержимого консоли отображается при запуске или остановке LightDM, связано с характером работы консольных терминалов в операционной системе Linux. Чтобы понять, как это происходит и что можно сделать для предотвращения такого отображения, следует глубже разобраться в том, как функционирует система отображения и использования терминалов в Linux.

Теория

Основная причина, по которой вы видите ранее использованное содержимое консоли, заключается в том, что консольные терминалы (такие как /dev/tty3, /dev/tty4 и т.д.) продолжают хранить содержимое в буфере видеопамяти. Это содержимое может отображаться, если переключение между различными виртуальными терминалами происходит без очистки этого буфера.

Когда LightDM (или любой другой дисплейный менеджер) запускается или останавливается, он временно передает управление консольному драйверу, который отображает последний активный виртуальный терминал. Поэтому, если во время остановки LightDM использовался, скажем, терминал /dev/tty3, то его содержимое может ненадолго появиться на экране, пока система переключается обратно на графический режим.

Пример

Представим, что ваш компьютер работает с несколькими виртуальными терминалами. Когда вы останавливаете LightDM с помощью команды systemctl stop lightdm.service, дисплейный сервер X переходится в консольный режим — обычно это tty1, где ранее отображалась графическая среда. При остановке графической оболочки отображается последний активный экран.

Сценарий может быть следующим:

  1. Вы работали в графической среде, а до этого использовали терминал /dev/tty3 для командной строки.
  2. При остановке LightDM, система возвращает вас в текстовый режим, что кратковременно показывает буфер терминала /dev/tty3.

Если вы снова запускаете LightDM, это снова переключает вас в графический режим, но до этого может отобразиться кратковременная вспышка текста из консоли. Это может вводить в заблуждение, особенно если там остались какие-либо конфиденциальные команды или информация.

Применение

Чтобы избежать подобного поведения и предотвратить отобразение содержимого консоли, можно предпринять следующие шаги:

  1. Очистка буфера терминала: Можно написать скрипт, который будет выполняться при остановке или запуске LightDM и будет команды очистки для активных консольных терминалов, например, с использованием clear или reset. Это можно сделать через systemd с помощью предустановленных Unit файлов или скриптов в /etc/lightdm/lightdm.conf.

  2. Настройка GRUB: В настройках загрузчика GRUB можно изменить режим отображения. Переключение всех терминалов на режим HZ с помощью ключа ядра kernel, такой как vt.default_redirection=1, может помочь сосредоточить все отображение на одном терминале, таким образом избегая отображения содержимого других терминалов.

  3. Использование скрывающего модуля: Альтернативным методом может быть установка специального модуля или программного обеспечения, которое перехватывает переключение tty и временно отображает пустой экран (или логотип фирмы), пока система переключает терминалы.

  4. Модификация LightDM: Изменения в LightDM, такие как добавление команды очистки экрана, могут помочь в решении проблемы. Это можно сделать в секции [Seat:*], добавив скрипт в параметры display-setup-script или display-arbitrary-command.

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...