Многоразовое устройство: отключите дисплейный менеджер и используйте TTY на одном месте

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

У меня следующая конфигурация (HP Microserver 8):

  • Интегрированный Matrox G200eH, подключенный к Integrated Lights Out (PH Remote Management Console), который также имитирует встроенную клавиатуру для системы
  • Выделенная видеокарта NVidia Quadro P400, предназначенная для использования в X-приложениях через VNC/удаленные X-сессии

Когда я изначально настраивал это с подключенными всеми устройствами на seat0, я заметил, что интегрированный GPU больше не отображала TTY, так как выделенная видеокарта взяла на себя управление (и клавиатура теперь может использоваться в сеансе дисплея)

Сейчас я пытаюсь настроить отдельный seat1, который будет включать только выделенную видеокарту, в то время как seat0 будет управлять интегрированным GPU + клавиатурой через TTY.

К сожалению, мне не удалось с помощью любого дисплейного менеджера ограничить запуск дисплейного менеджера и X до seat1, так как seat0 все еще может использоваться для удаленного администрирования через CLI.

Я пробовал как lightdm, так и gdm3 без успеха (вы не можете исключить места в любом из них), и я не смог найти способ использовать TTY в качестве приветствия.

Могу ли я сделать это, удалив тег master-of-seat с помощью udev с карты Matrox?

На данный момент systemd-logind жестко закодирован таким образом, что все виртуальные терминалы Linux (VT) принадлежат “волшебному” seat0. Для поддержки мульти-места вы, надеюсь, сможете найти дисплейный менеджер. Входы в TTY не подойдут.

Это возможно с использованием PAM и Cage. С места VT попробуйте:

systemd-run -p PAMName=login -p User="$LOGINUSER" -p WorkingDirectory=\~ --setenv=XDG_SEAT=seat1 --setenv=XDG_SESSION_CLASS=user cage -- foot

Это запускает терминал foot на Wayland.

Вам, возможно, придется изменить PAMName, если ваша дистрибуция имеет различные конфигурационные файлы PAM, но требуется pam_systemd.so, обратите внимание на --setenv=XDG_SEAT=seat1

Если я правильно понимаю, что вы пытаетесь сделать, то loginctl activate [ID] позволяет “выбраться” из любого VT, используемого для запуска нового места.

  1. войдите в какой-нибудь случайный VT и, по желанию, запустите обычный графический сеанс на стандартном seat0, используя какой-либо случайный VT, например, используя startx для запуска Xorg на tty2.
  2. выполните loginctl list-sessions, чтобы определить номер сессии для некоторого сеанса seat0, например, номер сессии “3”.
  3. запустите графический сеанс на отдельном месте, используя другой случайный VT, чтобы создать независимый графический сеанс seat1.
  4. затем используйте, например, sudo loginctl activate 3, чтобы “выбраться” из seat1 и “активировать” оригинальный интерфейс пользователя seat0, обычно дисплей, клавиатуру и мышь. Это можно сделать либо с помощью удаленного доступа, например, используя ssh с другого компьютера, либо включив команду loginctl в командной строке графического сеанса “seat1”, например как:
/usr/lib/Xorg.wrap -nolisten tcp -seat seat1 -layout server1 -dpi 52 -sharevts :1 vt1 -keeptty & loginctl activate 3
  1. Конечно, если графический сеанс seat1 начинается таким образом, потребуется какая-нибудь программа, поддерживающая X -display, чтобы запустить пользовательскую программу в этом графическом сеансе seat1 из seat0, например с помощью xterm -display :1 &.
  2. используйте обычные Ctrl + Alt + Fn для переключения на другой VT – только не на VT seat1, если не может быть использован удаленный доступ для повторного выполнения sudo loginctl activate 3. Обратите внимание, что при переключении на VT seat1, по своей природе клавиатура seat0 не будет активна, и клавиатура seat1 не имеет права переключать VTs. И поэтому, либо не переключайтесь на VT seat1, либо, в свою очередь, обеспечьте доступ к системе из удаленного терминала, чтобы снова выполнить sudo loginctl activate 3.
  3. это дает одновременно a) независимый сеанс seat1 и b) все остальные обычные VTs, которые работают нормально, включая как VTs seat0, так и графические сеансы seat0. Конечно, можно добавить больше мест таким же образом.

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

Создание Мультистолового Настроя: Отключение Дисплейного Менеджера и Использование TTY на Одном Системном Столе

В вашем вопросе описывается сложная конфигурация мультистолового настроя на сервере HP Microserver 8 с использованием двух видеокарт: интегрированной Matrox G200eH для удаленного администрирования и выделенной NVidia Quadro P400 для графических приложений через VNC. Вы сталкиваетесь с проблемой, как отключить дисплейный менеджер для одного из столов и работать с TTY на другом.

Проблема и Вызовы

Исходная ситуация заключается в том, что интегрированный видеопроцессор забирает управление от TTY, что приводит к отсутствию отображения терминала. Это может быть решено путем настройки соответствующих "столов" (seats) для управления видеопроцессорами и пользовательским вводом. Проблема с дисплейным менеджером заключается в том, что его конфигурация не позволяет устанавливать ограничения на различные столы.

Решение с Использованием systemd-logind и PAM

Для вашей задачи можно использовать систему systemd и PAM (Pluggable Authentication Module) вместе с Cage, который позволяет запускать графические приложения в отдельном окружении в Wayland.

  1. Отключите дисплейный менеджер: Отключите любой дисплейный менеджер (например, lightdm или gdm3). Это можно сделать, остановив сервисы через systemctl:

    sudo systemctl stop lightdm
    sudo systemctl disable lightdm
    # или 
    sudo systemctl stop gdm3
    sudo systemctl disable gdm3
  2. Настройте Seats: Убедитесь, что видеокарты правильно настроены в файловой системе конфигурации уdev. Вам нужно будет убедиться, что Matrox G200eH и NVidia Quadro P400 управляют своими "столами" (seats) корректно. Если вы хотите удалить тег master-of-seat, это действительно может помочь:

    # Измените udev правила, например, создайте файл /etc/udev/rules.d/99-seat.rulesa
    SUBSYSTEM=="drm", KERNEL=="card0", TAG+="seat"
  3. Запуск TTY для seat0: Используйте следующие команды для создания TTY для вашего seat0 через PAM:

    systemd-run -p PAMName=login -p User="$LOGINUSER" --setenv=XDG_SEAT=seat0 --setenv=XDG_SESSION_CLASS=user cage -- foot
  4. Запуск графического сеанса для seat1: Для старта графического сеанса, выполните:

    /usr/lib/Xorg.wrap -nolisten tcp -seat seat1 -layout server1 -dpi 52 -sharevts :1 vt1 -keeptty &
  5. Использование loginctl для активации секций: Например:

    loginctl activate <session_id>

Примечания:

  • Этот процесс позволит вам использовать TTY на seat0 для удаленного администрирования, при этом seat1 будет использоваться для запуска графических сеансов с NVidia Quadro P400.
  • Убедитесь, что у вас установлены необходимые зависимости для работы с PAM и Cage. Возможно, потребуется изменить настройки PAM, чтобы ваш дистрибутив соответствовал стандартам.
  • Важно помнить о конфиденциальности пользователей и корректном управлении сессиями. Следите за безопасностью ваших пользователей, используя SSH для удаленных подключений.

Вывод

С настройкой мультистолового использования на вашем сервере HP Microserver 8 вы сможете эффективно разделить работу между графической сессией и командной строкой. Правильная настройка udev и интеграция PAM с Cage позволит обеспечить независимую работу двух столов и решение ваших задач без использования дисплейного менеджера.

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

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