Я поставил перед собою задачу настроить отдельный вывод видео на TV-out на моей карточке. Сразу оговорюсь, что пробовал TwinView и он мне не подошел, потому что у меня родное разрешение на ноуте - 1280х800, а мой телефизор держит максимум 1024х768. Поэтому в режиме TwinView получается виртуальная обрасть на телевизоре с разрешением 1024х768, но реальный размер видео окна - 1280х800.
Режим Xinerama я не пробовал, ибо не дотёпал, что это и с чем его едят.
Итак, я пришел к варианту запуска двух X серверов на одной GPU (ядро графического процессора).
Делюсь этим в надежде, что кто-то воспользуется моим результатом, и не будет ломать себе голову неделю а то и больше.
Вот шаги, которые я предпринял.
1. Перекомпилил ядро для большей производительности системы (можно и не перекомпиливать) - 2.6.16.1.
2. Установил к своему рабочему ядру исходники в папке /usr/src/linux-2.6.16.1 и поменял сим.линк /usr/src/@linux на /usr/src/linux-2.6.16.1
3. Скачал последние дрова на Nvidia GeForce c сайта разработчика. Последняя версия дров - 1.0-8756 - http://www.nvidia.com/object/linux_display...2_1.0-8756.html
Предпоследнюю версию 8178 приходилось патчить на предмет компиляции на ядре выше 2.6.12
Дрова стали без проблем.
4. Сгенерил файл /etc/X11/xorg.conf с помощью фирменной утилиты nvidia-xconfig
5. Читал очень внимательно доки в файле /usr/share/doc/NVIDIA_GLX-1.0/README.txt и в итоге постоил вот таку конфигурацию. В раскладке файла комментирую что и для чего. Красным выделением мои добавления к стандартным.
Листинг моего файла /etc/X11/xorg.conf
------------------
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder3) Sun Apr 9 23:43:26 PST 2006
Section "ServerLayout"
Identifier "layout1"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" rightOf "Screen0" # включаем второй монитор - в моем случае телевизор. И указываем, что второй экран будет продолжением первого, с правой стороны от него.
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "Mouse1" "CorePointer"
InputDevice "SynapticsMouse1" "AlwaysCore"
EndSection
Section "Files"
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Mandrake 6.0 and later now use a font server independent of
# the X server to render fonts.
FontPath "unix/:-1"
EndSection
Section "Module"
Load "dbe" # Double-Buffering Extension
Load "v4l" # Video for Linux
Load "extmod"
Load "type1"
Load "freetype"
Load "synaptics"
Load "glx" # 3D layer # 3D акселерация с закрытыми драйверами от nVidia
EndSection
Section "ServerFlags"
#DontZap # disable <Crtl><Alt><BS> (server abort)
# allows the server to start up even if the mouse does not work
#DontZoom # disable <Crtl><Alt><KP_+>/<KP_-> (resolution switching)
Option "allowmouseopenfail"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "ExplorerPS/2"
Option "Device" "/dev/mouse"
Option "ZAxisMapping" "6 7"
EndSection
Section "InputDevice" # это настройки моего тачпада
Identifier "SynapticsMouse1"
Driver "synaptics"
Option "Protocol" "auto-dev"
Option "Device" "/dev/input/mice"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "BottomEdge" "4200"
Option "SHMConfig" "on"
Option "FingerLow" "25"
Option "LeftEdge" "1700"
Option "MaxTapMove" "220"
Option "MaxTapTime" "180"
Option "FingerHigh" "30"
Option "VertScrollDelta" "100"
Option "AccelFactor" "0.0015"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "keyboard"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll,compose:rwin"
EndSection
Section "Monitor" # первый монитор, т.е. LCD матрица на ноуте
Identifier "Monitor0"
VendorName "ASUS"
ModelName "LCD"
HorizSync 30.0 - 110.0
VertRefresh 50.0 - 150.0
Option "DPMS"
EndSection
Section "Monitor" # второй монитор - Телевизор
Identifier "Monitor1"
VendorName "not defined"
ModelName "TV"
HorizSync 30.0 - 50.0
VertRefresh 60.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce Go 7300"
BusId "PCI:3:0:0" # обязательно определяем, где сидит наша карточка на шине PCI. Можно узнать с помощью команды lspci
Screen 0
EndSection
Section "Device" # дубляж первой карточки. На ней есть TV-out и система его распознает как второй видео выход
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce Go 7300"
BusId "PCI:3:0:0" # ставим здесь то же значение,что и на первом модуле видео выхода на нашей карточке
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1280x800" "1024x768" # видео режимы на матрице
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "TVStandard" "PAL-B" # стандарт видео выхода
# Option "TVOutFormat" "SVIDEO" # не применял, потому что система сама все корректно определила
# Option "ConnectedMonitor" "TV" # не применял, потому что система сама все корректно определила
SubSection "Display"
Depth 24
Modes "800x600" # видео режим на телевизоре
EndSubSection
EndSection
6. Сохраняем файл, перегружаем X сервер, подключаем телевизор и наслаждаемся. Если сервер не запускается, смотрим логи на предмет ошибок в настройках файла конфигурации.
7. Второй стол запускается только тогда, когда я входу в окна (у меня КЕДы). Система создает второй рабочий стол и на него можно переходить прямо передвигая мышку. Приложения не переносятся с одного стола на другой, потому что это два отдельных X сервера. Также у каждого такого X сервера свои настройки рабочего стола.
Ну вроде бы все. Старался как можно внятно, но получилось как "всегда".