Переключите видеодрайверы в среде двойной загрузки

Какой самый простой способ заставить Ubuntu загружаться как на родном компьютере с установленной картой NVIDIA, так и в качестве гостя VMware. После установки пакета драйверов nvidia-304 я не могу загрузить его в VMware. Он застрял в цикле входа в систему с этой ошибкой в ​​.xsession-errors:

Xlib: расширение "GLX" отсутствует на дисплее ": 0".

Единственный релевантный ответ, который я нашел, это этот , но он не работает для меня. В драйверах NVIDIA нет switchlibglx.

РЕДАКТИРОВАТЬ: Результаты моего расследования. NVIDIA испортила систему своим модулем OpenGL через символическую ссылку в системном каталоге libglx.so. Их модуль может работать только с драйвером NVIDIA, который не загружается, если вы, очевидно, запускаете систему с другим видеоадаптером. По умолчанию нет простого способа выбрать модуль OpenGL для использования в зависимости от загруженного драйвера. Это классическая логика Unix. В любой сложной ситуации не пытайтесь придумать API и опции, просто перезаписать символическую ссылку по умолчанию в глобальном каталоге и позволить пользователю разобраться с этим беспорядком. NVIDIA просто использует стандартный костыль для установки драйвера и модуля. Существует три возможных решения:

1) устанавливать и удалять драйверы nvidia каждый раз, когда вы используете его в VMware

2) создавать сложный файл конфигурации, который запускает скрипт и перезаписывает символические ссылки во время загрузки в зависимости от на адаптере присутствует (см. ответ ниже)

3) как-то отключить использование расширений GLX в X-сервере для загрузки его в VMware

5
задан 13 December 2017 в 09:40

1 ответ

У Вас есть эта проблема, потому что Ваши X конфигураций пытаются загрузить драйвер Nvidia, который затем ищет совместимое устройство Nvidia. Такое устройство не существует в гостевой среде вместо этого VMware, виртуальное графическое устройство представлено вместо этого, и таким образом драйвер Nvidia не является корректным драйвером в госте ОС.

корректный драйвер для VMware виртуальный графический интерфейс является тем, обеспеченным xserver-xorg-video-vmware пакетом не те предоставленные Nvidia -* пакеты, которые только подходят для прямого доступа к GPU. Можно установить корректный драйвер с помощью следующей команды на госте:

sudo apt-get install xserver-xorg-video-vmware

Также удостоверяются, что 3D ускорение включено на конфигурации виртуальной машины и что Вы установили гостевые дополнения VMware правильно. Необходимо также удостовериться, что у Вас нет xorg.conf файла, который явно выбирает драйвер Nvidia, так как это перестанет работать.

, Если Вы хотели сценарий, Вы могли бы установить для выполнения во время начальной загрузки, прежде чем lightdm будет запущен, Вы могли попробовать что-то вроде этого:

#!/bin/bash
# Vendor identifiers
nvidia=\"10de\"
vmware=\"15ad\"

# Detect NVIDIA driver
nvidia_driver=`dpkg --get-selections | awk '/nvidia-[0-9]+\t+install/ { print $1 }'`

# Detect PCI bus ID
vga_bus_id=`lspci | awk '/VGA/ { print $1 }'`

# Detect VGA vendor identifier
vga_vendor=$(lspci -nm | awk "/$vga_bus_id/ { print \$3 }")

if [ $vga_vendor == $nvidia ]; then
   # Configure for nvidia GLX via update-alternatives
   update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/${nvidia_driver}/alt_ld.so.conf
   update-alternatives --set i386-linux-gnu_egl_conf /usr/lib/${nvidia_driver}/alt_ld.so.conf
   update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/${nvidia_driver}/ld.so.conf
   update-alternatives --set x86_64-linux-gnu_egl_conf /usr/lib/${nvidia_driver}/ld.so.conf
elif [ $vga_vendor == $vmware ]; then
   # Configure for mesa GLX via update-alternatives
   update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf
   update-alternatives --set i386-linux-gnu_egl_conf /usr/lib/i386-linux-gnu/mesa-egl/ld.so.conf
   update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf
   update-alternatives --set x86_64-linux-gnu_egl_conf /usr/lib/x86_64-linux-gnu/mesa-egl/ld.so.conf
else
   # Configure for mesa GLX via update-alternatives
   update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf
   update-alternatives --set i386-linux-gnu_egl_conf /usr/lib/i386-linux-gnu/mesa-egl/ld.so.conf
   update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf
   update-alternatives --set x86_64-linux-gnu_egl_conf /usr/lib/x86_64-linux-gnu/mesa-egl/ld.so.conf
fi

проверки сценария, какой идентификатор поставщика обнаруживается для видеокарты, если Nvidia это настроит ld для использования Nvidia, обеспеченной opengl библиотеки однако, если устройство VMware будет обнаружено, оно настроит для мезаструктуры, при этом мезаструктура будет значением по умолчанию, если никакая строка поставщика не распознана.

Много предположений делаются здесь работой привычки сценария правильно, если они не имеют место:

  1. установка Мультиlib принята таким образом настройки и для i386 и для x86_64
  2. , предполагается, что человечность, если драйвер Nvidia установлен, это не будет работать при установке драйвера Nvidia вручную, не используя склонный.

мне однако не установили VMware, таким образом, я только могу протестировать и быть уверенным, что он работает правильно, когда устройство Nvidia обнаруживается и человечность, если драйверы Nvidia установлены.

2
ответ дан 13 December 2017 в 19:40

Другие вопросы по тегам:

Похожие вопросы: