Начните два сервера 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 (так что у него есть все, кроме графики), а затем помещать эти команды в скрипт где-то.

  • Как сделать команды xinput постоянными
  • Как запустить графический интерфейс на моем сервере через SSH?
  • Отключить и включить чтение с последовательного порта сенсорного экрана
  • Как масштабировать оконный менеджер i3 для моего дисплея HiDPI?
  • Libinput 3 жесты пальца
  • Как я разрезаю интернет, но подключаю X-сервер для программы systemd-nspawned
  • получить статус xautolock
  • Как получить информацию о цвете фона в Xwindows
  • 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

    Символические ссылки с ls, mv: принуждение функций к использованию «логических» адресов (запоминание исходного пути)

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

    Раскрашивание хвостового выхода с помощью sed

    Безопасный способ позволить пользователям загружать свои открытые ключи

    Установить изображение пользователя lightdm

    Могу ли я установить Paint.Net на linux с помощью моно?

    Очень странная проблема, что-то блокирует определенные ссылки в локальном домене

    Как измерить на Linux пиковая память приложения после того, как закончилась

    Убить задание в подоболочке с множеством -m

    Масштаб ssh перенаправленный графический интерфейс

    Настроить tmux для использования zsh

    bash_completion для разрешения ip в именах хостов

    Как tcp связывается с приложением?

    Копирование текущей командной строки в буфер обмена

    Есть ли такая утилита, как `watch`, за исключением события?

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