HowtoMultiSeat

出自Ubuntu 正體中文 Wiki

跳轉到: 導航, 搜尋


前言

多重基座(Multiseat),指的就是一台電腦,只要連接多組螢幕、鍵盤、滑鼠,就可以使多人得以同時使用一台電腦。
示意圖:
圖像:multiseat.jpg

效果

兩台LCD 的畫面裡都可以各自使用 compiz 的特效以及進行各自的工作。
若是單張顯卡雙接頭,雖也可達成兩人共用一台電腦,但無法使用 compiz 特效。
本文主要目標以能實現兩人共用一台電腦,還兼有 compiz 特效,所以需要有兩張Nvidia顯卡。

示範系統介紹

  • 作業系統:Ubuntu 10.04 LTS amd64
  • 顯示卡:兩張 Nvidia 的 PCI-E 顯示卡
  • 螢幕、鍵盤、滑鼠:各兩組


操作順序

0.備份

為了避免在實驗過程中因爆炸而造成無法還原的損害,所以必須先建立 xorg.conf的備份檔。
若不建立備份檔,則在爆炸之後重建困難;因為實驗可能要進行反覆測試,所以一定要備份。

sudo -s
cd /etc/X11
cp xorg.conf xorg.conf.bak

1.設定雙螢幕

1. 先安裝 Nvidia 的官方驅動程式(可從Nvidia官網下載)。
2. 開啟他的設定程式(在桌面上同時按下Alt+F2,輸入 /usr/bin/nvidia-settings )。
3. 將螢幕設定調整成雙輸出,要兩顆螢幕都有生命跡象,但記得不要啟用Xinerama (也就是不要打勾) ,否則3D功能可能無法使用。

在 ubuntu 9.04 執行 nVidia 的設定程式,最後要存檔 /etc/X11/xorg.conf 時,會提示錯誤。
因為您不是管理者,故要用 sudo /usr/bin/nvidia-settings 執行才能正確儲存設定內容。

在 ubuntu 10.04 存檔時,則會詢問你管理者密碼,輸入後就可正確存檔。
更改此設定可能要重新開機,待兩顆 LCD 都有正確顯示之後,才能繼續下一步驟。

2.安裝kdm

若您使用ubuntu 9.04的話,可以不用安裝 kdm。
若是 9.10 以上的系統則需要安裝 kdm。
因為新版的 gdm 已不支援 multiseat 功能,故必須安裝 kdm。

KDM 為 KDE 的登入管理器,GDM 則為 GNOME 的登入管理器。
但是他們是獨立的,也就是說,您可以只單獨安裝 kdm ,而不需要安裝完整的 KDE 桌面環境。


安裝方法:

sudo apt-get install kdm

3.修改 xorg.conf

  • 這是非常重要的步驟,但可能會失敗,所以必須來回測試。

再備份一次

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.2lcd

這樣一旦設定失敗後,可以隨時恢復到雙螢幕的狀態。

調整 xorg.conf

顯卡的部份主要是用 nVidia 的設定程式弄出來的,然後再做一些修改即可

注意,務必釐清:
Screen=畫面, Monitor=實體螢幕

1.更改 /etc/X11/xorg.conf
1-1.開啟終端機

sudo vim /etc/X11/xorg.conf

1-2.修改文件內容

#這一段照抄就是了
Section "ServerFlags"
     Option "AutoEnableDevices"    "false"
     Option "AutoAddDevices"    "false"
     Option "AllowEmptyInput"    "true"
EndSection


#這裡定義了第0基座所使用的畫面0、鍵盤0、滑鼠0,這3個值你需調整,其它照抄即可
Section "ServerLayout"
    Identifier     "seat0"
    Screen      0  "Screen0" 0 0
#    Screen      1  "Screen1" 1920 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection
#PS:上方可看到 Screen 1 是指這台主機有雙螢幕輸出,這是 nVidia 設定出來的,但現在我們將它 mark 掉。


#這裡定義了第1基座所使用的畫面1、鍵盤1、滑鼠1,這3個值你需調整,其它照抄即可
Section "ServerLayout"
    Identifier     "seat1"
    Screen      1  "Screen1" 0 0
    InputDevice    "Keyboard1" "CoreKeyboard"
    InputDevice    "Mouse1" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

#這裡定義了滑鼠0 ,詳細設定請見下個步驟
Section "InputDevice"
        Identifier "mouse0"
         Driver "evdev"
         Option "ZAxisMapping" "4 5"
         Option "GrabDevice"    "on"
         Option "Device" "/dev/input/by-path/pci-0000:00:12.0-usb-0:2:1.0-event-mouse"
EndSection

#這裡定義了鍵盤0 ,詳細設定請見下個步驟
Section "InputDevice"
         Identifier "keyboard0"
         Driver "evdev"
         Option "Device" "/dev/input/by-path/pci-0000:00:16.0-usb-0:4:1.0-event-kbd"
         Option "specialKeys" "true"
EndSection

#這裡定義了滑鼠1,
Section "InputDevice"
        Identifier "mouse1"
         Driver "evdev"
         Option "ZAxisMapping" "4 5"
         Option "GrabDevice"    "on"
         Option "Device" "/dev/input/by-path/pci-0000:00:12.0-usb-0:1:1.0-event-mouse"
EndSection

#這裡定義了鍵盤1
Section "InputDevice"
         Identifier "keyboard1"
         Driver "evdev"
         Option "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
         Option "specialKeys" "true"
EndSection


#這裡定義了你的第1顆實體螢幕,這裡的數值最好用nVidia設定程式來幫你產生,儘量不要自己調整
Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Samsung SyncMasterPX2370"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 60.0
    Option         "DPMS"
EndSection

#這裡定義了你的第2顆實體螢幕,這裡的數值最好用nVidia設定程式來幫你產生,儘量不要自己調整
Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Samsung SMB2230H"
    HorizSync       30.0 - 81.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

#這裡定義了你的第1張顯卡,這裡的數值最好用nVidia設定程式來幫你產生,儘量不要自己調整
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8400 GS"
    BusID          "PCI:1:0:0"
EndSection

#這裡定義了你的第2張顯卡,這裡的數值最好用nVidia設定程式來幫你產生,儘量不要自己調整
Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8400 GS"
    BusID          "PCI:2:0:0"
EndSection

#這裡定義了你的第1個畫面,和使用哪個螢幕、顯卡,這裡的數值最好用nVidia設定程式來幫你產生,儘量不要自己調整
Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
#    Option         "TwinView" "0"
#                                DFP-1  是輸出影像到 HDMI
#    Option         "metamodes" "DFP-1: 1920x1080 +0+0; nvidia-auto-select +0+0"
    Option         "metamodes" "1920x1080 +0+0; nvidia-auto-select +0+0"

    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

#這裡定義了你的第2個畫面,和使用哪個螢幕、顯卡,這裡的數值最好用nVidia設定程式來幫你產生,儘量不要自己調整
Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
#    Option         "TwinView" "0"
    Option         "metamodes" "1920x1080 +0+0; nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

4.設定兩組鍵盤滑鼠

因為我們同時接了兩組鍵盤滑鼠,所以我們必須要明確的定義哪組鍵鼠是給哪個基座所使用的,這樣才不會出錯。

我們可以下載一個別人寫好的小程式來偵測你系統上的鍵盤滑鼠。
這個小程式比自行查詢方便許多,且比較精確,不會有查錯的的情形。
執行此小程式時,需另外開一個終端機視窗,因為執行完之後,視窗只能強迫關閉,不能按ctrl+c來中斷。

wget http://dl.dropbox.com/u/1106740/Multiseat/detectInput.py
sudo python detectInput.py

使用說明如下:

螢幕:Detecting keyboard of seat 0.
--->此時你就可以按一下基座0的鍵盤
PS:此時只能按enter鍵,若是你按了其它鍵,就會多出其它的字,如下面,我按了3,它在pci的前面就多個了數字3,在copy、貼上時,不小心多copy了這個3,就會造成你的鍵盤設定錯誤。
螢幕:3pci-0000:00:16.0-usb-0:4:1.0-event-kbd
--->↑上面是偵測到的結果,將它copy起來
螢幕:Detecting mouse of seat 0.
--->現在偵測你基座0的滑鼠,請動一下你的滑鼠或點擊一下
螢幕:pci-0000:00:12.0-usb-0:2:1.0-event-mouse
--->↑上面是偵測到的結果,將它copy起來
若你有接第2組鍵鼠的話,它就會繼續執行,注意:偵測結束後只能強制關閉視窗。

接著回到 xorg.conf 的設定裡面去定義我們的鍵盤滑鼠,格式如下 基本上是完全照抄,只要把 xxxxxxxxxxxxx 的部份替換成剛剛偵測到的資料即可。

Section "InputDevice"
     Identifier "keyboard0"
     Driver "evdev"
     Option "Device" "/dev/input/by-path/xxxxxxxxxxxxx"
     Option "specialKeys" "true"
EndSection
 
Section "InputDevice"
     Identifier "mouse0"
     Driver "evdev"
     Option "ZAxisMapping" "4 5"
     Option "Device" "/dev/input/by-path/xxxxxxxxxxxxx"

EndSection

5.修改kdmrc

我們在第2步驟已經安裝了 kdm,若尚未安裝,請先回第二步驟安裝,才能繼續接下來的操作。
此步驟也是極為重要的一部份,也經常會設錯或設壞了;所以照例,請先備份。

sudo cp /etc/kde4/kdm/kdmrc /etc/kde4/kdm/kdmrc.bak

然後開始修改:

sudo vim /etc/kde4/kdm/kdmrc

設定檔的內容很多,但多為註解,底下列出的是需要你修改的部份,其它的設定請不要更動。
標準字的部份多是原來的內容,粗斜體字的部份是你需要修改或新增的內容



[General]
ConfigVersion=2.4
StaticServers=:0,:1
ReserveServers=:2,:3
ServerVTs=7,9
ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
PidFile=/var/run/kdm.pid

........
........
........

[X-:0-Core]
AutoLoginAgain=false
AutoLoginDelay=0
AutoLoginEnable=false
AutoLoginLocked=false
AutoLoginUser=
ClientLogFile=.xsession-errors
ServerVT=7
ServerCmd=/usr/bin/X0 -sharevts -layout seat0 -isolateDevice PCI:1:0:0 -keeptty

[X-:1-Core]
AutoLoginAgain=false
AutoLoginEnable=false
AutoLoginLocked=false
ClientLogFile=.xsession-errors
ServerVT=9
ServerCmd=/usr/bin/X1 -sharevts -novtswitch -layout seat1 -isolateDevice PCI:2:0:0 -keeptty



設定完後請重新開機。在重開機之前,請務必的再三確認您的設定正確。
以上設定完成之後,重開機就會變成可以2個人可以分別登入的畫面。

問題修正

隨身硬碟/拇指碟

當USB裝置插到電腦上時,它可不會那麼聰明自動分辨這USB是給第0基座或第1基座的人用。
通常系統預設有自動掛載的功能,這自動掛載只會掛給第0基座的人使用。
而且很討厭的是,它掛載後的檔案權限是 700 ,也就是只有第0基座的人能讀取其檔案,而第1基座的沒有權限可讀取。
目前已知較好的解法,就是取消自動掛載的功能,然後第1基座的人下指令 mount 來掛載。
(因為第1基座的人,無法直接用滑鼠點"主選單→位置→Disk" 的方式來掛載,會被告知權限不足)

取消自動掛載

請下指令

gconf-editor

尋找機碼 /apps/nautilus/preferences
然後在右邊的視窗找到 media_automountmedia_automount_open 將它取消勾選。

指令

首先得用sudo fdisk -l 指令查看現有的磁碟有多少個,然後插上隨身碟後再看一次,多出來的那個就是你隨身碟的代號。

掛載指令

sudo mount -o iocharset=utf8 /dev/sdc1 /media/usb

/dev/sdc1 是靠 fdisk -l 查出來的
/media/usb 是你想要掛載在哪個資料夾,你必須要建一個空資料夾給它

卸載指令

sudo umount  /media/usb

光碟片

發生的問題同上。

手動掛載

掛載光碟片

sudo mount -t iso9660 -o iocharset=utf8 /dev/sr0 /media/dvd

卸載光碟片

sudo umount  /media/dvd

音效問題

在 ubuntu 10.04 的系統裡,不需要太特殊的設定即可使用。 先說明一下我的環境,我除了內建的音效卡之外,我還另外的插了一塊 USB 音效卡,這樣在我的系統上面就可以看見我有兩塊音效卡可以選擇。

具體設定內容: 第一個使用者都用預設的內建音效卡做為輸入、輸出即可。 第二個使用者,登入後,請點開音效偏好設定 (主選單→系統→偏好設定→聲音),在硬體的那個頁面我們就可以看見我們有兩塊音效卡。切換到輸入頁面,選擇 USB 音效卡,再切換到輸出頁面,選擇 USB 音效卡即可。

我這兒不需要改太多設定就可以使用,但是不曉得是不是因為我有做了一個設定動作之後,才會這麼方便使用的。那個動作就是,我將這兩個使用者帳號加入 pulse-access 這個群組,僅在此記錄下來。

暖開機問題

任一基座只要同時按了Ctrl+Alt+Delete,就會使系統重新啟動。
要關閉此功能,請啟動 主選單→系統→偏好設定→鍵盤捷徑鍵 , 找到桌面、登出。
若看見它的捷徑鍵是設 ctrl+alt+del 選一下它,按 Backspace 鍵,就能將它停用。

其它問題

本來在單機模式時可以按 ctrl+alt+F1~F9 切換不同的終端機畫面,現啟用了多重基座的功能之後,就不能這樣切換了。

引用來源

首頁>內容中心>在水一方 >多重基座,by 夢見草