RHELから起動時に2台のXサーバーを起動する

RHELから起動時に2台のXサーバーを起動する

私はマルチシートシステムとして使用したい強力なマシンを持っています。 2つのグラフィックカードと2対のキーボードとマウスがあります。 udevとXorg.confを使用して2つの「座席」を正常に構成し、2人のユーザーが独立したセッションを持つようにスクリプトで2つのXサーバーを起動できました。記録のために各USBハブを識別し、デバイスと座席にラベルを付けるudevルールファイルは次のとおりです。

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

私が言ったように、正常に立ち上げることができます。次のスクリプトを使用する2つの別々のセッションがありますが、起動時に自動的に発生するようにしたいと思います。

#!/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に設定してから(グラフィックを除くすべてを含む)、このコマンドをスクリプトのどこかに置くことでした。

ベストアンサー1

RHEL6以降、Upstartを使用して起動時にプロセスを開始します。 2つの異なるXサーバーを起動するには、2つの別々のスクリプトを生成して、0と:1でXサーバーを起動します。

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に入ると、起動時にスクリプトが実行されます。

より新生チュートリアル

おすすめ記事