Цели
- Цель этого поста: выяснить, что
xorg.conf
конфигурации необходимы для использования каждого из моих двойных мониторов в качестве отдельного X-экрана.
- Промежуточная цель для этого поста: выяснить, почему я не могу запустить X с моим руководством.
xorg.conf
конфигурация.
- Метрика успеха: когда я могу запустить
xглаза
или другие приложения X11 в сценарии, который указывает, на каком из моих мониторов они отображаются.
- Конечная цель: запустить контейнеры LXC GUI (имеется в виду полный рабочий стол), чтобы они отображались в полноэкранном режиме на выбранном мониторе. Я хочу иметь возможность совместно использовать клавиатуру и перемещать курсор между мониторами, но не перемещать окна.
Моя система
- Ubuntu Server 20.04, видеокарта Nvidia GT 710. Водитель
nvidia-dkms-470-сервер
. Я использую соединения HDMI и DVI.
- В системе присутствуют и другие видеокарты, но они имеют псевдонимы и будут использоваться для транзитных целей. Не вижу причин, по которым это должно быть актуально, но видеодрайверы меня раньше удивляли.
Ожидаемое поведение:
- Когда я бегу
startx &
, X должен запуститься нормально, и тогда я смогу открыть xглаза
на экране 0 или 1 с помощью ДИСПЛЕЙ =: 0,0
или же ДИСПЛЕЙ =: 0,1
соответственно.
Фактическое поведение:
Я не могу запустить X с сообщением «экраны не найдены».
Судя по логам xf86OpenConsole
может быть связано с проблемой, но я понятия не имею, что это такое.
Это Xorg.0.log
после того, как я попробую sudo startx &
.
[ 3083.851] (II) Модуль nvidia: vendor="NVIDIA Corporation"
[3083.851] скомпилировано для 1.6.99.901, версия модуля = 1.0.0
[3083.851] Класс модуля: видеодрайвер X.Org
[ 3083.851] (II) Модуль выгрузки: "nvidia"
[ 3083.851] (II) Выгрузка nvidia
[3083.851] (II) Не удалось загрузить модуль "nvidia" (уже загружен, 0)
[ 3083.851] (II) LoadModule: "нуво"
[ 3083.852] (WW) Предупреждение, не удалось открыть модуль nouveau
[3083.852] (EE) Не удалось загрузить модуль "nouveau" (модуль не существует, 0)
[3083.852] (II) LoadModule: "установка режима"
[3083.852] (II) Загрузка /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 3083.854] (II) Настройка режима модуля: vendor="X.Org Foundation"
[3083.854] скомпилировано для 1.20.11, версия модуля = 1.20.11
[3083.854] Класс модуля: видеодрайвер X.Org
[3083.854] Класс ABI: видеодрайвер X.Org, версия 24.1
[ 3083.854] (II) LoadModule: "fbdev"
[3083.854] (II) Загрузка /usr/lib/xorg/modules/drivers/fbdev_drv.so
[ 3083.855] (II) Модуль fbdev: vendor="X.Org Foundation"
[3083.855] скомпилировано для 1.20.1, версия модуля = 0.5.0
[ 3083.855] Класс модуля: видеодрайвер X.Org
[3083.855] Класс ABI: видеодрайвер X.Org, версия 24.0
[ 3083.855] (II) LoadModule: "веса"
[ 3083.855] (II) Загрузка /usr/lib/xorg/modules/drivers/vesa_drv.so
[ 3083.856] (II) Модуль vesa: vendor="X.Org Foundation"
[3083.856] скомпилировано для 1.20.4, версия модуля = 2.4.0
[3083.856] Класс модуля: видеодрайвер X.Org
[3083.856] Класс ABI: видеодрайвер X.Org, версия 24.0
[ 3083.856] (II) Драйвер NVIDIA dlloader X 470.82.01 Среда, 27 октября, 21:23:16 UTC 2021
[ 3083.856] (II) Унифицированный драйвер NVIDIA для всех поддерживаемых графических процессоров NVIDIA
[3083.856] (II) настройка режима: Драйвер для драйверов ядра Modesetting: kms
[ 3083.856] (II) FBDEV: драйвер для фреймбуфера: fbdev
[ 3083.856] (II) VESA: драйвер для чипсетов VESA: vesa
[3083.856] (WW) xf86OpenConsole: сбой setpgid: операция не разрешена
[3083.856] (WW) xf86OpenConsole: не удалось установить идентификатор: операция не разрешена
[ 3083.856] (WW) Возврат к старому методу проверки для настройки режима
[ 3083.856] (WW) Возврат к старому методу проверки для fbdev
[ 3083.856] (WW) Возврат к старому методу проверки для настройки режима
[ 3083.856] (WW) Возврат к старому методу проверки для fbdev
[ 3083.856] (EE) Устройства не обнаружены.
[3083,856] (EE)
Фатальная ошибка сервера:
[ 3083.856] (EE) экраны не найдены(EE)
[3083,856] (EE)
Обратитесь в службу поддержки The X.Org Foundation.
на http://wiki.x.org
- если я удалю
xorg.conf
, X запускается нормально, но без двух экранов X (только Экран 0
), как показано на выходе xrandr:
~$ судо xrandr -q
Экран 0: минимум 8 x 8, текущий 4160 x 1440, максимум 16384 x 16384
VGA-0 отключенный первичный (нормальный левый инвертированный правый по оси x по оси y)
DVI-D-0 подключен 1600x1200+0+0 (обычное левое перевернутое правое по оси x по оси y) 367 мм x 275 мм
1600x1200 60,00*+
1280x1024 75,02 60,02
1152x864 75,00
1024x768 75,03 60,00
800x600 75,00 60,32
640x480 75,00 59,94
HDMI-0 подключен 2560x1440+1600+0 (обычное левое перевернутое правое по оси x по оси y) 597 мм x 336 мм
2560x1440 59,95*+
2048x1152 60,00
1920x1440 60,00
1920x1200 59,88
1920x1080 60,00 59,94 50,00 60,05 60,00 50,04
1680x1050 59,95
1440x900 59,89
1440x576 50,00
1440x480 59,94
1280x1024 75,02 60,02
1280x720 60,00 59,94 50,00
1024x768 75,03 70,07 60,00
800x600 75,00 72,19 60,32 56,25
720x576 50,00
720x480 59,94
640x480 75,00 72,81 59,94 59,93
Первые попытки
- я сделал свой
xorg.conf
основываясь на этом: https://download.nvidia.com/XFree86/Linux-x86_64/304.137/README/configmultxscreens.html
- Я подозреваю, что есть что-то еще, что мне нужно в разделе мониторов
xorg.conf
, но я не уверен, что это такое.
- Я чувствую, что мониторы должны ссылаться на
Экран
определения
каким-то образом, но мои случайные догадки о том, как это сделать, были
бесплодный.
- Мне трудно адаптировать
xorg.conf
примеры, которые я нашел для своих конкретных обстоятельств. Я не знаю, что является обязательным для моего оборудования или дистрибутива/версии.
/etc/X11/xorg.conf
:
Раздел «Устройство»
Идентификатор "nvidia0"
Драйвер "нвидиа"
BusID "PCI:44:00:0"
Экран 0
EndSection
Раздел «Устройство»
Идентификатор "nvidia1"
Драйвер "нвидиа"
BusID "PCI:44:0:0"
Экран 1
EndSection
Раздел «Экран»
Идентификатор "Экран0"
Устройство "нвидиа0"
Монитор "Монитор0"
Глубина по умолчанию 24
Подраздел «Дисплей»
Глубина 24
Режимы «1600х1200» «1024х768» «800х600» «640х480»
EndSubsection
EndSection
Раздел «Экран»
Идентификатор "Экран1"
Устройство "нвидиа1"
Монитор "Монитор1"
Глубина по умолчанию 24
Подраздел «Дисплей»
Глубина 24
Режимы «1600х1200» «1024х768» «800х600» «640х480»
EndSubsection
EndSection
Раздел «Монитор»
Идентификатор "Монитор0"
EndSection
Раздел «Монитор»
Идентификатор "Монитор1"
Вариант "Слева" "HDMI-1"
EndSection
Раздел "ServerLayout"
Идентификатор «Основной макет»
Экран 0 "Экран 0"
Экран 1 "Экран 1" слева от "Экрана 0"
EndSection
Обновление - частичный успех:
- Реконфигурирован
xorg.conf
с использованием nvidia-xconfig
.
- Теперь я могу начать X
- Нет никакой радости в том, чтобы получить X Screen для каждого монитора.
- Мой текущий
xorg.conf
:
# nvidia-xconfig: файл конфигурации X, сгенерированный nvidia-xconfig
# nvidia-xconfig: версия 470.82.01
Раздел "ServerLayout"
Идентификатор "Layout0"
Экран 0 "Экран0" 0 0
InputDevice "Клавиатура0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Раздел «Файлы»
EndSection
Раздел «Устройство ввода»
# генерируется по умолчанию
Идентификатор "Мышь0"
Драйвер "мышь"
Опция "Протокол" "авто"
Опция "Устройство" "/dev/psaux"
Опция "Emulate3Buttons" "нет"
Опция "ZAxisMapping" "4 5"
EndSection
Раздел «Устройство ввода»
# генерируется по умолчанию
Идентификатор "Клавиатура0"
Драйвер "кбд"
EndSection
Раздел «Монитор»
Идентификатор "Монитор0"
Имя поставщика "Неизвестно"
Название модели "Неизвестно"
Опция "ДПМС"
EndSection
Раздел «Устройство»
Идентификатор "Device0"
Драйвер "нвидиа"
Экран 0
VendorName "Корпорация NVIDIA"
Вариант «Монитор-DVI-D-0» «DVI»
EndSection
Раздел «Экран»
Идентификатор "Экран0"
Устройство "Device0"
Монитор "Монитор0"
Глубина по умолчанию 24
Подраздел «Дисплей»
Глубина 24
EndSubSection
EndSection
Раздел «Монитор»
Идентификатор "Монитор1"
Имя поставщика "Неизвестно"
Название модели "Неизвестно"
Опция "ДПМС"
EndSection
Раздел «Устройство»
Идентификатор "Устройство1"
Драйвер "нвидиа"
Экран 1
VendorName "Корпорация NVIDIA"
Опция "Монитор-HDMI-0" "HDMI"
EndSection
Раздел «Экран»
Идентификатор "Экран1"
Устройство "Устройство1"
Монитор "Монитор1"
Глубина по умолчанию 24
Подраздел «Дисплей»
Глубина 24
EndSubSection
EndSection
- Но
xrandr
пока только показывает Экран0
~$ судо xrandr -q
Экран 0: минимум 8 x 8, текущий 4160 x 1440, максимум 16384 x 16384
VGA-0 отключенный первичный (нормальный левый инвертированный правый по оси x по оси y)
DVI-D-0 подключен 1600x1200+0+0 (обычное левое перевернутое правое по оси x по оси y) 367 мм x 275 мм
1600x1200 60,00*+
1280x1024 75,02 60,02
1152x864 75,00
1024x768 75,03 60,00
800x600 75,00 60,32
640x480 75,00 59,94
HDMI-0 подключен 2560x1440+1600+0 (обычное левое перевернутое правое по оси x по оси y) 597 мм x 336 мм
2560x1440 59,95*+
2048x1152 60,00
1920x1440 60,00
1920x1200 59,88
1920x1080 60,00 59,94 50,00 60,05 60,00 50,04
1680x1050 59,95
1440x900 59,89
1440x576 50,00
1440x480 59,94
1280x1024 75,02 60,02
1280x720 60,00 59,94 50,00
1024x768 75,03 70,07 60,00
800x600 75,00 72,19 60,32 56,25
720x576 50,00
720x480 59,94
640x480 75,00 72,81 59,94 59,93
Изменить: еще одно примечание: я попытался указать идентификаторы PCI в разделе «Устройство», например BusID "PCI:44:0:0"
. Это на самом деле кажется причиной моей предыдущей проблемы с X, не начинающейся с:
[229.284] (WW) xf86OpenConsole: сбой setpgid: операция не разрешена
[229.284] (WW) xf86OpenConsole: не удалось установить идентификатор: операция не разрешена
Еще одно обновление
Я удалил PCI BusID
спецификация из Устройство
часть xorg.conf
, так как по какой-то причине это мешало мне запустить X с xf86OpenConsole
ошибки указанные выше.
Однако я заметил, что в более поздней документации Nvidia предлагается использовать Макет сервера
раздел. Я добавил второй экран в этот раздел, и он изменил вывод xrandr
, но не так, как я хотел. В нем по-прежнему упоминается только Screen0, но теперь нет информации о моем мониторе HDMI (хотя у меня на нем есть курсор). Теперь это результат xrandr
:
~$ судо xrandr -q
Экран 0: минимум 8 x 8, текущий 1600 x 1200, максимум 16384 x 16384
VGA-0 отключенный первичный (нормальный левый инвертированный правый по оси x по оси y)
DVI-D-0 подключен 1600x1200+0+0 (обычное левое перевернутое правое по оси x по оси y) 367 мм x 275 мм
1600x1200 60,00*+
1280x1024 75,02 60,02
1152x864 75,00
1024x768 75,03 60,00
800x600 75,00 60,32
640x480 75,00 59,94
И мой xorg.conf
на данный момент выглядит так:
Раздел "ServerLayout"
Идентификатор "Layout0"
Экран 0 "Экран0" 0 0
Экран 1 "Экран 1" справа от "Экрана 0"
InputDevice "Клавиатура0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Раздел «Файлы»
EndSection
Раздел «Устройство ввода»
# генерируется по умолчанию
Идентификатор "Мышь0"
Драйвер "мышь"
Опция "Протокол" "авто"
Опция "Устройство" "/dev/psaux"
Опция "Emulate3Buttons" "нет"
Опция "ZAxisMapping" "4 5"
EndSection
Раздел «Устройство ввода»
# генерируется по умолчанию
Идентификатор "Клавиатура0"
Драйвер "кбд"
EndSection
Раздел «Монитор»
Идентификатор "Монитор0"
Имя поставщика "Неизвестно"
Название модели "Неизвестно"
Опция "DPMS" "DVI"
EndSection
Раздел «Устройство»
Идентификатор "Device0"
Драйвер "нвидиа"
Экран 0
VendorName "Корпорация NVIDIA"
Вариант «Монитор-DVI-D-0» «DVI»
EndSection
Раздел «Экран»
Идентификатор "Экран0"
Устройство "Device0"
Монитор "Монитор0"
Глубина по умолчанию 24
Подраздел «Дисплей»
Глубина 24
EndSubSection
EndSection
Раздел «Монитор»
Идентификатор "Монитор1"
Имя поставщика "Неизвестно"
Название модели "Неизвестно"
Опция "DPMS" "HDMI"
EndSection
Раздел «Устройство»
Идентификатор "Устройство1"
Драйвер "нвидиа"
Экран 1
VendorName "Корпорация NVIDIA"
Опция "Монитор-HDMI-0" "HDMI"
EndSection
Раздел «Экран»
Идентификатор "Экран1"
Устройство "Устройство1"
Монитор "Монитор1"
Глубина по умолчанию 24
Подраздел «Дисплей»
Глубина 24
EndSubSection
EndSection
Изменить: еще одна вещь: я попытался добавить Опция "ЗафодХедс"
в разделы моего устройства, но это не помогло. Возможно, это не то, что я хотел, или, может быть, я не правильно настроил, я не знаю.