Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX и Hardware > Использование нескольких мониторов (dual monitors)


Автор: powerfox 23.9.2007, 15:29
Итак, вчера мне пришло в голову подсоединить старый монитор к ноутбуку. Очень удобно иметь 2 дисплея.

[*]Требования к железу

У меня что-то похожее по настройкам на карту с двумя выходами (DVI и VGA), только торчит один vga (а встроенный дисплей подключён внутри).
Для подключения нескольких дисплеев можно использовать систему с
a) видеокартой с несколькими выходами.
б) несколькими видеокартами.
в) ноутбуки, где есть возможность использовать встроенный дисплей одновременно со вторым.

[*]Подготовка конфигов для дисплеев

Я рекомендую сначала настроить оба дисплея по отдельности. Полагаю, что тот с которым вы уже работали, конфигурировать не надо. Забэкапте конфиг, назовите его, например, xorg.conf.first.
Я настоятельно рекомендую сделать резервную копию xorg.conf!

Выключите компьютер, отсоедините монитор 1 и подключите второй (в ноутбуках при подключении второго встроенный обычно выключается, если что измените настройки BIOS - об этом так же будет сказано ниже).

Рекомендую грузиться в режим recovery (без иксов), так как если у вас сочетание  CTRL+ALT+Backspace настроено на перезапуск Xorg, то в случае неудачного запуска X, система может зависнуть (на некоторое время - X обычно делает N попыток запуститься). Если же вы сразу загрузились в X и всё заработало - можете пропустить данную секцию.
Попробуйте запустить X, в случае неудачи - убейте его и выполните
Код

X -configure

Экран будет мерцать, а потом получите сообщение, что создан конфиг ~/xorg.cong.new. Протестируйте его:
Код

X -config ПУТЬ_К_НОВОМУ_КОНФИГУ

Если всё заработало, то вы можете приступить к настройке системы для работы с двумя (и более) мониторами.

[*]BIOS
http://gentoo-wiki.com/HOWTO_Dual_Monitors :
Цитата

    *  In AWARD BIOS (v4.51PG), menu: Integrated Peripherals -> Init Display First -> [PCI Slot / AGP]
    * In AMIBIOS (v 08.00.08), menu: PCIPnP -> PCI Bus Scan Order -> [Ascent/Descent]
    * In other BIOSs it's called: Bios First Boot -> [AGP/PCI] 

В моём биосе потребовалось настроить пункт питания мониторов (сменить авто на both).
Загрузите свою обычную систему. Должны работать оба дисплея (пока что используется старый конфиг), а второй монитор просто копирует картинку с первого - всё это работает на аппаратном уровне.

[*]Пару слов о xorg.conf
Настройка видео в X сводится к тому, что вы создаёте устройства (видеокарты), мониторы и на их основе настраиваете объект Screen (чтобы он работал его надо добавить в ServerLayout. Если вы имеете 2 видеокарты, то вы можете создать 2 секции device (для каждой из них), 2 секции monitor (для каждого дисплея) и 2 объекта Screen (связанного с различными парами device-monitor). В данном случае вам потребуется добавить в ServerLayout два элемента Screen.

[*]Редактирование xorg.conf

Я конфигурирую X для работы с двумя дисплеями, подключенными к 1-й видеокарте, в моём случае это интегрированная Intel 950 (945GM). Настройка для другой карты почти идентична.

Создайте новый файл и копируйте в него содержимое старого конфига. 
Начнём с секции "Device".
Измените Identifier вашей секции на "card0", можно использовать любое имя, но лучше, придумать такое, чтоб не запутаться. Если у вас 2 карты, то можно использовать их модели в качестве имени. Копируйте секцию и измените во второй имя на card1.

Цитата

Section "Device"
    Identifier    "card0"
    Driver  "i810"
    BusID  "PCI:0:2:0"
    Option "MonitorLayout" "CRT,LFP"
    Screen 0
    Option "DRI" "false"
EndSection


Section "Device"
    Identifier    "card1"
    Driver  "i810"
    BusID  "PCI:0:2:0"
    Option "MonitorLayout" "CRT,LFP"
    Screen 1
    Option "DRI" "false"
EndSection

Строка " Option "MonitorLayout" "CRT,LFP" " показывает типы мониторов. Если оба ЖК, то замените CRT на LFP (если не заработает, то снова выставьте CRT).
BusID можно посмотреть с помощью lspci, это особенно важно для владельцев нескольких карт.

Теперь настроим мониторы. Для этого в существующей секции просто измените имя, например на monitor0 (чтобы потом различать со вторым). С конфига ~/xorg.conf.new копируйте секцию monitor, изменив имя, например, на monitor1.
Цитата

Section "Monitor"
    Identifier    "monitor1"
    Option  "DPMS"
    HorizSync    30-81
    VertRefresh    56-76
EndSection

Section "Monitor"
    Identifier "monitor0"
    Option "DPMS"
    #HorizSync 30-81
    #VertRefresh 56-76
    #Modeline "1280x1024@60" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
    EndSection


Операции со Screen аналогичны. Не перепутайте то, какие настройки монитора и карту вы связываете с каждым из screen:
Цитата

Section "Screen"
    Identifier    "LaptopScreen"
    Device  "card0"
    Monitor  "monitor0"
    DefaultDepth    24
    SubSection "Display"
  Depth  1
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  4
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  8
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  15
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  16
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  24
  Modes  "1024x768"

  ViewPort    0 0
    EndSubSection
EndSection

Section "Screen"
    Identifier    "LeftScreen"
    Device  "card1"
    Monitor  "monitor1"
    DefaultDepth    24
    SubSection "Display"
  Depth  1
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  4
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  8
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  15
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  16
  Modes  "1024x768"
    EndSubSection
    SubSection "Display"
  Depth  24
  Modes  "1024x768"
  #ViewPort    0 0
    EndSubSection
EndSection


И последний штрих, "ServerLayout":
Цитата

Section "ServerLayout"
    Identifier     "Dual-monitor Layout"
    Screen      0  "LaptopScreen" Rightof "LeftScreen"
        Screen      1  "LeftScreen" 0 0
    Option "Xinerama" "On"
    Option "Clone" "off"
   Далее должны быть InputDevice и прочее, вставьте их со старого конфига!
EndSection

Rightof указывает на то, как расположены мониторы. В моём случае второй монитор находится левее ноутбука (стало быть ноутбук - правее). Возможны следующие ключевые слова: RightOf (правее), LeftOf (левее), Above (над), and "Below (под). Так же есть Relative, но тогда требуется указать с какой позиции начинается второй монитор:
Цитата

Screen      0  "LaptopScreen" Relative "LeftScreen" 1024 0


[*]Возможные проблемы
У меня в Кубунту 7.04 обоина и панель на ноутбуке обрезаны (занимают 1/5 монитора), хотя окна могут использовать весь дисплей. В OpenSUSE 10.1 такой проблемы нет. Я попробовал поставить kde 3.5.7 с гатси  - это не решило проблему, придётся, наверное, пробовать собрать вручную.

Как обычно, гугл вам в помощь. Мне очень сильно помог следующий howto:
http://gentoo-wiki.com/HOWTO_Dual_Monitors

Кстати, beryl/compiz и прочую нечисть вполне можно использовать и с несколькими дисплеями.
Добавлено @ 15:30
Буду рад любым комментариями, критике, дополнениям.

P.S. Прикрепил в качестве примера мой xorg.conf

Автор: bilbobagginz 23.9.2007, 16:11
Примечу, что в следующем выпуске Убунту, Gutsy Gibbon, 7.10 будет намного облегчена задача настройки дисплея ( и многочисленных ), и возможно скоро эта морока не будет такой морокой.

Спасибо за хорошую статью!


Автор: powerfox 23.9.2007, 16:18
Цитата(bilbobagginz @  23.9.2007,  17:11 Найти цитируемый пост)
следующем выпуске Убунту, Gutsy Gibbon, 7.10 будет намного облегчена задача настройки дисплея ( и многочисленных ), и возможно скоро эта морока не будет такой морокой.

Скрестим пальцы. KDE 4 уже не за горами, там будет много улучшений в плане настройки.
Я пробовал настроить через kcontrol - получался битый конфиг и X падал.


Цитата(bilbobagginz @  23.9.2007,  17:11 Найти цитируемый пост)
Спасибо за хорошую статью!

Всегда рад стараться. smile Надеюсь, что простым юзерам тоже понравится.

Автор: JackYF 23.9.2007, 17:13
Хорошая статья. +1.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)