The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Создание 3D Multiseat на основе debian (video multiseat linux debian x11 xorg gdm)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: video, multiseat, linux, debian, x11, xorg, gdm,  (найти похожие документы)
From: darion76 <darion76@gmail.com.> Date: Mon, 24 Jul 2008 14:31:37 +0000 (UTC) Subject: Создание 3D Multiseat на основе debian Оригинал: http://www.automation.dn.ua/linux/3d-multiseat.html Операционная система Линукс нашла достойное применение не только на мощных и производительных серверах, не только во встраиваемых системах, не только в телефонах и комуникаторах и т.д., но и на домашних компьютерах многих пользователей. Настройка Линукса традиционно считается непростой задачей для пользователя. Однако следует учесть те дополнительные возможности, которые можно получить используя преимущества этой операционной системы. Достоинства Линукс известны большинству пользователей, даже тех кто никогда не сталкивался с opensource. Наиболее важные из них: - стабильность; - надежность; - открытость; - масштабируемость. Поскольку современный персональный компьютер способен обеспечить одновременную работу нескольких пользователей, необходимо использовать свойство системы Линукс чтобы усадить несколько членов семьи за один компьютер. Это и есть идея которая называется multiseat. Сама по себе она не нова. Уже достаточно давно люди используют Линукс для организации нескольких рабочих мест с одним системным блоком. Отличие описываемой системы состоит в максимальном использовании современных компьютерных аппаратных средств и системы Линукс. Теперь немного поподробнее. Когда появились материнские платы с поддержкой многоядерных процессоров и 4 разъемами PCI Ex 16x, вполне естественной моей мыслью было использовать это оборудование для получения нескольких рабочих мест без ограничения функциональных возможностей. Четыре PCI Ex 16x вполне обеспечат работу четырех пользователей, которые не будут обделены в смысле 3D игр и мощности системы при условии использования 4-ех ядерного процессора. В моем примере используется следующее аппаратное обеспечение : Материнская плата MSI K9A2 Platinum V2; Socket АМ2/AM2+; AMD 790FX+SB600; 4DDRII; PCI Express 2.0; HyperTransport 3.0; 4xP-Ex16 ; 1xP-Ex1; 2xP; Sound 8-ch; 1x1394a; Gigabit Lan; 4хSATAII; 1xATA133; SATAII RAID(0,1, 0+1); ATX Процессор Athlon 64 x2 4800+ Socket AM2; BOX; AMD; Dual-Core; 2500Mhz; 2x512KB; Brisbane; 0.065m; 65W; Revision G2; Dual-Channel DDRII Память 1024Mb DDR-II; PC-6400; Kingston Видеокарта1 8600GT Asus Silent Видеокарта2 6200TC Asus Silent Программное обеспечение: Debian 4.0 Etch, wine 1.0 Цель: обеспечить независимую работу 2 пользователей на указанном оборудовании без ограничения в использовании 3D ускорения. Далее следует пошаговая инструкция для тех кто захочет повторить 3D Multiseat. Я попытаюсь сделать её максимально доступной и понятной, но как всегда в подобных случаях вы должны понимать что действуете на свой страх и риск. Никакой ответственности за то что кто-то неправильно что-то сделал или не так понял мои рекомендации, если что-то вышло из строя или были потеряны важные данные я не несу. Особо лишь отмечу что в инструкции не отражены элементарные с точки зрения компьютерной техники вещи. Например, если указано что нужно установить видеокарту в системный блок, значит нужно сначала завершить работу компьютера и только после выключения устанавливать видеокарту. Также не рассматривается установка системы debian, если эта задача вам не под силу попробуйте обратиться к соответствующим сведениям, которые можно найти на установочном диске, либо в интернете. 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, можно оставить как есть. В моем случае настройки приняли следующий вид (реальная рабочая конфигурация): /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. 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 # set -e PATH=/sbin:/bin:/usr/sbin:/usr/bin GDM_SCRIPT=/etc/init.d/gdm MULTISEAT_FILE=/usr/share/gdm/defaults.conf.multiseat ORIG_FILE=/usr/share/gdm/defaults.conf.orig SYMLINK_FILE=/usr/share/gdm/defaults.conf test -x $GDM_SCRIPT || exit 0 case "$1" in start) rm -f $SYMLINK_FILE ln -s $ORIG_FILE $SYMLINK_FILE echo "Starting temporary single X server" /usr/bin/X -dpi 96 -audit 0 & sleep 5 /usr/bin/killall Xorg rm -f $SYMLINK_FILE ln -s $MULTISEAT_FILE $SYMLINK_FILE exec /etc/init.d/gdm start ;; stop) exec /etc/init.d/gdm stop ;; reload) ;; restart|force-reload) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/fakex {start|stop|restart|reload|force-reload}" exit 1 ;; esac exit 0 Затем необходимо удалить символьную ссылку на скрипт 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-ому ядру на пользователя. При использовании материалов статьи прямая гиперссылка на 3D Multiseat обязательна

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, dmitro (??), 20:50, 25/12/2010 [ответить]  
  • +/
               darion@darion-debian:~$ lspci | grep VGA
               01:00.0 VGA compatible controller: nVidia Corporation Unknown device  0402 (rev a 1)
       Из полученного списка видно что установлены 2 видеокарты. Первая GeForce 8600,

    Не видно из списка, что установлена 8600.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру