Начните два сервера X при загрузке на RHEL

У меня есть мощная машина, которую я хочу использовать в качестве многоместной системы. Он имеет две графические карты и две пары клавиатур и мышей. Мне удалось успешно настроить два «места» с помощью udev и Xorg.conf и запустить два X-сервера из сценария, чтобы у двух пользователей были независимые сеансы. Только для записи, вот мой файл правил udev, где я идентифицирую каждый USB-концентратор и маркирую устройства и места:

SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRS{vendor}=="0x10de", DRIVERS=="nvidia", TAG+="master-of-seat" # SUBSYSTEM=="drm", KERNEL=="card0", ENV{ID_SEAT}="seat0" # SUBSYSTEM=="drm", KERNEL=="card1", ENV{ID_SEAT}="seat1" SUBSYSTEM=="input", ENV{ID_INPUT.tags}="input_default" # KVM HUBS KERNELS=="3-2", ATTRS{bDeviceClass}=="09", ENV{KVM_HUB}="1", ENV{ID_SEAT}="seat0" KERNELS=="3-8", ATTRS{bDeviceClass}=="09", ENV{KVM_HUB}="2", ENV{ID_SEAT}="seat1" # Devices of HUB 1 KERNEL=="event*", ENV{KVM_HUB}=="1", ATTRS{bInterfaceProtocol}=="01" SYMLINK+="kvm_keyboard_1" KERNEL=="event*", ENV{KVM_HUB}=="1", ATTRS{bInterfaceProtocol}=="02" SYMLINK+="kvm_mouse_1" # Devices of HUB 2 KERNEL=="event*", ENV{KVM_HUB}=="2", ATTRS{bInterfaceProtocol}=="01" SYMLINK+="kvm_keyboard_2" KERNEL=="event*", ENV{KVM_HUB}=="2", ATTRS{bInterfaceProtocol}=="02" SYMLINK+="kvm_mouse_2" # Default seat SUBSYSTEM=="input", TAG=="seat", ENV{ID_SEAT}=="" , ENV{ID_SEAT}="seat0" # set all tags accordingly ENV{ID_SEAT}!="", ENV{ID_INPUT.tags}+="$env{ID_SEAT}" TAG+="$env{ID_SEAT}" 

Соответствующая часть моего файла xorg.conf выглядит так:

 Section "ServerFlags" # Option "AutoAddDevices" "false" # Option "AutoEnableDevices" "false" Option "DefaultServerLayout" "Layout0" Option "AllowMouseOpenFail" "true" Option "Xinerama" "0" EndSection # --------------------------------------------------------------- # LAYOUT Section "ServerLayout" Identifier "Layout0" Screen "Screen0" MatchSeat "seat0" Option "Clone" "off" EndSection Section "ServerLayout" Identifier "Layout1" Screen "Screen1" MatchSeat "seat1" Option "Clone" "off" EndSection 

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

 #!/bin/bash set +x rm /etc/X11/xorg.conf cp ./xorg_independientes /etc/X11/xorg.conf # X (:0) systemctl stop gdm killall Xorg killall X systemctl restart gdm sleep 7 # X (:1) su - sit -c "startx /usr/bin/gnome-session -- :1 vt4 -layout Layout1 -seat seat1 -sharevts" & sleep 10 DISPLAY=:1 xhost + 

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

  • Получить имя файла сфокусированного окна в xmonad
  • Перезапускает ли Диспетчер дисплея (например, lightdm) перезапуск X-сервера?
  • debian wheezy переключается с внутреннего на внешний монитор после проприетарной установки AMD
  • Разъем для наушников в звуковом гнезде как вход X
  • Linux -> linux remote X login / desktop
  • Почему startx дает черный экран без ошибок?
  • Как настроить клавиши numpad с помощью XKB?
  • Рабочий стол внезапно перестает реагировать на мышь (перемещение / фокусировка / щелканье элементов пользовательского интерфейса)
  • One Solution collect form web for “Начните два сервера X при загрузке на RHEL”

    Начиная с RHEL6, они используют Upstart для запуска процессов при загрузке. Чтобы запустить два разных X-сервера, создайте 2 отдельных скрипта, чтобы запустить X-сервер: 0 и: 1.

    start_colon_0.sh:

     #!/bin/sh su - sit -c "startx -- :0 vt4 -layout Layout0 -seat seat0 -sharevts" & 

    start_colon_1.sh:

     #!/bin/sh su - sit -c "startx -- :1 vt4 -layout Layout1 -seat seat1 -sharevts" & 

    В /etc/init создайте 2 файла конфигурации следующим образом:

    x_server_0.conf:

     start on stopped rc RUNLEVEL=5 stop on starting rc RUNLEVEL=[!5] console output respawn exec start_colon_0.sh 

    x_server_1.conf:

     start on stopped rc RUNLEVEL=5 stop on starting rc RUNLEVEL=[!5] console output respawn exec start_colon_1.sh 

    Это приведет к запуску ваших скриптов при запуске при входе в уровень запуска 5.

    См. Учебник Upstart

    Interesting Posts

    как я могу переименовать несколько файлов, удалив символ или строку?

    Какая версия Red Hat используется для экзамена на сертифицированный системный администратор Red Hat?

    Почему мой скрипт не работает на уровне выполнения 0?

    Как я могу сделать так, чтобы у всех новых пользователей, созданных в будущем, был скопирован определенный файл?

    вывод команды команды в переменную

    Фактическое использование памяти в процессе

    Не удалось запустить сервер базы данных MariaDB после обновления до debian 9

    Chmod / chown разрешает вопрос

    Почему изменяется точка монтирования моей корневой файловой системы?

    Как отлаживать приложение, которое немедленно уничтожается при его открытии?

    Cacti / rrdtool error -> Poller ОШИБКА: SQL Row Failed !, Ошибка: '1033'

    Как работают котировки Slackware Login?

    Команда nc не найдена на SuSE

    Отключить полностью пост-проверку HELO

    Экспорт и импорт специальных ярлыков KDE?

    Linux и Unix - лучшая ОС в мире.