| НА ГЛАВНУЮ СТРАНИЦУ | АВТОМАТИЗАЦИЯ ПРОИЗВОДСТВА | РАЗРАБОТКИ | ФОРУМ |
Внимание ! Файлы для новой стабильной ветки Debian GNU/Linux 5.0 "Lenny" можно скачать здесь Multiseat - система с одним системным блоком и несколькими видеокартами, мониторами, клавиатурами и мышками.
Позволяет работать нескольким пользователям одновременно с одного компьютера. 1.Установка системыСначала необходимо установить и настроить обычную конфигурацию с одной видеокартой.Установите в компьютер сначала только одну видеокарту, одну мышку и одну клавиатуру. Поместите в DVD установочный диск с debian. Установите и настройте систему с opensource драйвером nv. ВНИМАНИЕ ! Текущая версия nv драйвера не поддерживает видеокарты GeForce 8600. Поэтому при установе используйте драйвер vesa (в файле xorg.conf в секции описания видеоадаптера вместо Driver "nv" укажите Driver "vesa") и избегайте разрешений больше 1024x768 при первоначальной настройке системы. Скачайте проприетарный драйвер от NVidia (с официального сайта nvidia.com). Я использовал NVIDIA-Linux-x86-173.14.05-pkg1.run, но возможно к моменту когда вы будете читать эту статью уже появятся версии новее. Для установки перезагрузите систему в режиме одиночного пользователя. Установите драйвер (потребуются привелегии root) следуя инструкциям указанным на сайте: sh ./NVIDIA-Linux-x86-173.14.05-pkg1.run. Не забудьте включить пользователей которые будут пользоваться ускорителем и настройками звуковой карты добавить в соответствующие группы audio и video. Перезагрузите компьютер в многопользовательском режиме. Проверьте что всё прошло успешно : darion@darion-debian:~$ lsmod | grep nvidia nvidia 7096260 70 agpgart 30216 2 nvidia i2c_core 20096 5 nvidia,it87,i2c_isa,i2c_nforce2,i2c_piix4Убедитесь что ускоритель работает: darion@darion-debian:~$ glxinfo | grep direct direct rendering: YesПроверьте что действительно используется проприетарный драйвер от NVidia: darion@darion-debian:~$ glxinfo | grep vendor server glx vendor string: NVIDIA Corporation client glx vendor string: NVIDIA Corporation OpenGL vendor string: NVIDIA Corporation 2.Определение оборудованияПосле этого установите вторую видеокарту, подключите второй монитор, вторую клавиатуру, вторую мышь.Включите компьютер, загрузите систему. Запустите терминал. На данном этапе следует создать список оборудования в том виде как его определила система. 1. Определение видеокарт: darion@darion-debian:~$ lspci | grep VGA 01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0402 (rev a 1) 03:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200 TurboCa che(TM)] (rev a1)Из полученного списка видно что установлены 2 видеокарты. Первая GeForce 8600, вторая - GeForce 6200. 2. Определяем мышки и клавиатуры: darion@darion-debian:~$ cat /proc/bus/input/devices I: Bus=0011 Vendor=0001 Product=0001 Version=ab41 N: Name="AT Translated Set 2 keyboard" P: Phys=isa0060/serio0/input0 S: Sysfs=/class/input/input0 H: Handlers=kbd event0 B: EV=120013 B: KEY=4 2000000 3802078 f840d001 feffffdf ffefffff ffffffff fffffffe B: MSC=10 B: LED=7 I: Bus=0003 Vendor=09da Product=000a Version=0002 N: Name="A4Tech PS/2+USB Mouse" P: Phys=usb-0000:00:13.1-2/input0 S: Sysfs=/class/input/input3 H: Handlers=mouse0 event2 ts0 B: EV=7 B: KEY=ff0000 0 0 0 0 0 0 0 0 B: REL=303 I: Bus=0010 Vendor=001f Product=0001 Version=0100 N: Name="PC Speaker" P: Phys=isa0061/input0 S: Sysfs=/class/input/input4 H: Handlers=kbd event3 B: EV=40001 B: SND=6 I: Bus=0011 Vendor=0002 Product=0006 Version=0000 N: Name="ImExPS/2 Generic Explorer Mouse" P: Phys=isa0060/serio1/input0 S: Sysfs=/class/input/input5 H: Handlers=mouse1 event4 ts1 B: EV=7 B: KEY=1f0000 0 0 0 0 0 0 0 0 B: REL=143 I: Bus=0003 Vendor=046d Product=c312 Version=0100 N: Name="LITEON Technology USB Multimedia Keyboard" P: Phys=usb-0000:00:13.4-1/input0 S: Sysfs=/class/input/input6 H: Handlers=kbd event1 B: EV=120003 B: KEY=10000 7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe B: LED=7 3. Настройка X сервераИспользуя сведения из предыдущего раздела настраиваем сервер (важные значения выделены красным цветом). Обратите внимание что клавиатуры нужно настраивать с использованием evdev. Для мышек это необязательно, хотя привязка к подключению имеет значение когда в системе появиться 4 или 10 мышек. Пока их 2, а к тому же одна PS/2, можно оставить как есть. В моем случае настройки приняли следующий вид (реальная рабочая конфигурация):
darion@darion-debian:~$ cat /etc/X11/xorg.conf
Section "ServerLayout"
Identifier "Seat0"
Screen "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "ServerLayout"
Identifier "Seat1"
Screen "Screen1"
Screen "TV" RightOf "Screen1"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
EndSection
Section "Files"
# path to defoma fonts
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/X11R6/lib/X11/fonts/misc"
FontPath "/usr/share/fonts/X11/cyrillic"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
Section "Module"
Load "i2c"
Load "bitmap"
Load "ddc"
Load "extmod"
Load "freetype"
Load "glx"
# Load "int10"
Load "vbe"
EndSection
Section "InputDevice"
Driver "evdev"
Option "Phys" "isa0060/serio0/input0"
Identifier "Keyboard1"
Option "XkbModel" "evdev"
Option "XkbLayout" "us,ru(winkeys)"
Option "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/input/mouse1"
Option "Protocol" "ExplorerPS/2"
EndSection
Section "InputDevice"
Driver "evdev"
Option "Phys" "usb-0000:00:13.4-1/input0"
Identifier "Keyboard0"
Option "XkbModel" "evdev"
Option "XkbLayout" "us,ru(winkeys)"
Option "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/input/mouse0"
Option "Protocol" "ExplorerPS/2"
EndSection
Section "Monitor"
Identifier "S/T 77/76DFX"
# 800x600 @ 75.00 Hz (GTF) hsync: 47.02 kHz; pclk: 48.91 MHz
Modeline "800x600_75.00" 48.91 800 840 920 1040 600 601 604 627 -HSync +Vsync
Option "DPMS"
EndSection
Section "Monitor"
Identifier "LG L1953S"
Option "DPMS"
EndSection
Section "Monitor"
Identifier "TV-Out"
VendorName "Samsung"
ModelName "Plano"
HorizSync 30.0 - 50.0
VertRefresh 50.0 - 50.0
EndSection
Section "Device"
Identifier "nVidia 8600GT"
Driver "nvidia"
BusID "PCI:1:0:0"
Screen 0
EndSection
Section "Device"
Identifier "nVidia 6200TC"
Driver "nvidia"
BusID "PCI:3:0:0"
Screen 0
EndSection
Section "Device"
Identifier "nvidia-TVOut0"
Driver "nvidia"
VendorName "nVidia Corp."
BoardName "NVIDIA GeForce 6200"
Option "DPMS"
BusID "PCI:3:0:0"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "nVidia 8600GT"
Monitor "S/T 77/76DFX"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 4
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 15
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "nVidia 6200TC"
Monitor "LG L1953S"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 4
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 15
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"
EndSubSection
EndSection
Section "Screen"
Identifier "TV"
Device "nvidia-TVOut0"
Monitor "TV-Out"
DefaultDepth 24
Option "TVStandard" "HD576i"
Option "TVOutFormat" "COMPOSITE"
Option "ConnectedMonitor" "TV,CRT"
SubSection "Display"
Modes "800x600" "640x480"
Depth 16
EndSubSection
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 32
Modes "800x600" "640x480"
EndSubSection
EndSection
4. Настройка gdmДля входа в систему я использовал gdm. Его необходимо перенастроить на несколько рабочих мест. Инициализация нескольких карт требует некоторых ухищрений, поскольку драйвер от NVidia закрыт и декомпилировать/изменять его не позволяет лицензионное соглашение. Но мне удалось с помощью экспериментов обойти проблему инициализации.Перемещаем файл /usr/share/gdm/defaults.conf в /usr/share/gdm/defaults.conf.orig: darion-debian:~# cd /usr/share/gdm darion-debian:/usr/share/gdm# mv defaults.conf defaults.conf.orig создаем символьную ссылку на этот файл: darion-debian:/usr/share/gdm# ln -s defaults.conf.orig defaults.confВнимание ! defaults.conf.orig не просто бекап файла, он необходим для работы скрипта инициализации и поэтому должен присутствовать именно в /usr/share/gdm. Создаем файл конфигурации gdm для мультисита. Для этого копируем оригинальный файл: darion-debian:/usr/share/gdm# cp defaults.conf.orig defaults.conf.multiseatТеперь необходимо отредактировать defaults.conf.multiseat для запуска нескольких X сессий: В файле defaults.conf.multiseat в секции [servers] нужно добавить еще один сервер : [servers] # These are the standard servers. You can add as many you want here and they # will always be started. Each line must start with a unique number and that # will be the display number of that server. Usually just the 0 server is # used. 0=Standard0 1=Standard1 [server-Standard0] name=Standard server command=/usr/bin/X -sharevts -isolateDevice PCI:3:0:0 -layout seat1 :0 flexible=false [server-Standard1] name=Standard server command=/usr/bin/X -sharevts -isolateDevice PCI:1:0:0 -layout seat0 :1 flexible=falseОстальные секции оставляем без изменения. 5. Скрипт инициализации и запуска gdmДля инициализации я написал следующий скрипт. Его необходимо поместить под именем gdm-multiseat в каталог /etc/init.d.darion-debian:/etc/init.d# cat ./gdm-multiseat #! /bin/sh ### BEGIN INIT INFO # Provides: fake Xorg initialization # Should-Start: console-screen acpid # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: S 0 1 6 # Short-Description: fake Xorg preinit script for multiseat system # Description: Debian preinit script for the multiseat system ### END INIT INFO # # Author: Andrey ZhornyakЗатем необходимо удалить символьную ссылку на скрипт gdm из уровня 2 (на остальных уровнях можно оставить gdm): darion-debian:~# cd /etc/rc2.d darion-debian:/etc/rc2.d# rm /etc/rc2.d/*gdm darion-debian:/etc/rc2.d# ln -s ../init.d/gdm-multiseat S21gdm-multiseat После перезагрузки если, все прошло успешно, вы получите 3D Multiseat систему. Если необходимо добавить еще пару рабочих мест, необходимо повторить шаги со 2-го по 5-й. Возможно скрипт инициализации придется подредактировать. И не забывайте простое правило - по 1-ому ядру на пользователя. Если по прошествии некоторого времени вы решите заменить одну или несколько из видеокарт на более производительную, например 6200 на 8800GT, ничего менять в настройках не придется, драйвер менять не придется (в нем уже есть поддержка серий 8xxx, 9xxx). Просто замените видеокарту в системнике и наслаждайтесь повышенной производительностью. |