Вопрос или проблема
У меня следующая конфигурация (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, используемого для запуска нового места.
- войдите в какой-нибудь случайный VT и, по желанию, запустите обычный графический сеанс на стандартном seat0, используя какой-либо случайный VT, например, используя
startx
для запуска Xorg на tty2. - выполните
loginctl list-sessions
, чтобы определить номер сессии для некоторого сеанса seat0, например, номер сессии “3”. - запустите графический сеанс на отдельном месте, используя другой случайный VT, чтобы создать независимый графический сеанс seat1.
- затем используйте, например,
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
- Конечно, если графический сеанс seat1 начинается таким образом, потребуется какая-нибудь программа, поддерживающая X
-display
, чтобы запустить пользовательскую программу в этом графическом сеансе seat1 из seat0, например с помощьюxterm -display :1 &
. - используйте обычные Ctrl + Alt + Fn для переключения на другой VT – только не на VT seat1, если не может быть использован удаленный доступ для повторного выполнения
sudo loginctl activate 3
. Обратите внимание, что при переключении на VT seat1, по своей природе клавиатура seat0 не будет активна, и клавиатура seat1 не имеет права переключать VTs. И поэтому, либо не переключайтесь на VT seat1, либо, в свою очередь, обеспечьте доступ к системе из удаленного терминала, чтобы снова выполнитьsudo loginctl activate 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.
-
Отключите дисплейный менеджер: Отключите любой дисплейный менеджер (например, lightdm или gdm3). Это можно сделать, остановив сервисы через
systemctl
:sudo systemctl stop lightdm sudo systemctl disable lightdm # или sudo systemctl stop gdm3 sudo systemctl disable gdm3
-
Настройте 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"
-
Запуск TTY для seat0: Используйте следующие команды для создания TTY для вашего seat0 через PAM:
systemd-run -p PAMName=login -p User="$LOGINUSER" --setenv=XDG_SEAT=seat0 --setenv=XDG_SESSION_CLASS=user cage -- foot
-
Запуск графического сеанса для seat1: Для старта графического сеанса, выполните:
/usr/lib/Xorg.wrap -nolisten tcp -seat seat1 -layout server1 -dpi 52 -sharevts :1 vt1 -keeptty &
-
Использование
loginctl
для активации секций: Например:loginctl activate <session_id>
Примечания:
- Этот процесс позволит вам использовать TTY на seat0 для удаленного администрирования, при этом seat1 будет использоваться для запуска графических сеансов с NVidia Quadro P400.
- Убедитесь, что у вас установлены необходимые зависимости для работы с PAM и Cage. Возможно, потребуется изменить настройки PAM, чтобы ваш дистрибутив соответствовал стандартам.
- Важно помнить о конфиденциальности пользователей и корректном управлении сессиями. Следите за безопасностью ваших пользователей, используя SSH для удаленных подключений.
Вывод
С настройкой мультистолового использования на вашем сервере HP Microserver 8 вы сможете эффективно разделить работу между графической сессией и командной строкой. Правильная настройка udev и интеграция PAM с Cage позволит обеспечить независимую работу двух столов и решение ваших задач без использования дисплейного менеджера.