Cinnamon/OpenGL вылетает при запуске с виртуальной коробкой после установки драйверов AMD

Я установил систему (Linux Mint Debian Edition) на флешку, которую я запускаю либо на реальной машине дома (с картой AMD Radeon), либо внутри виртуальной коробки, когда я на чьем-то компьютере.

С драйвером Radeon с открытым исходным кодом все работало нормально, единственной проблемой, с которой я столкнулся, был вентилятор графической карты, работавший на полной скорости и очень шумный.

Поэтому я установил проприетарные драйверы от AMD, и он отлично работает на реальной машине, но теперь он не загружается внутри виртуальной коробки. Я исправил первую проблему с xorg.conf (удаление или создание нового файла решает проблему с загрузкой), и теперь он загружается нормально до запуска Cinnamon, а затем у меня появляется всплывающее окно с сообщением о сбое Cinnamon, и он находится в режиме отката.

В ~/.xsession-errors У меня, между прочим, есть эти ошибки:

[...]
Error getting login monitor: -2
[...]
libEGL warning: GLX/DRI2 is not supported
[...]
(cinnamon:3203): GLib-CRITICAL **: g_strsplit: assertion 'string != NULL' failed
(cinnamon:3203): Clutter-CRITICAL **: Unable to initialize Clutter: The OpenGL version could not be determined
Window manager error: Unable to initialize Clutter.
[...]

Кажется, проблема в OpenGL. Например, если я начну glxgears я получил

Xlib:  extension "GLX" missing on display ":0".
Error: couldn't get an RGB, Double-buffered visual

Я хотел бы загрузить старый драйвер (каким бы он ни был) в виртуальную коробку и загрузить драйвер AMD на реальную машину с картой Radeon. Это возможно? Я был бы в порядке, например, со сценарием, который обнаруживает при запуске внутри виртуальной коробки, и соответственно регулирует настройки, но я не знаю, что нужно настроить...

1 ответ

Решение

На основе комментария @essjae и этого ответа суперпользователя, вот шаги, которые решили мою проблему:

  1. переустановить дополнения virtualbox
    • это исправляет проблему драйверов virtualbox, которая испортила установщик ATI
    • но, к счастью, это не мешает драйверам ATI, то есть оба драйвера теперь сосуществуют в системе
  2. добавление скрипта (/etc/rc.local), который делает символическую ссылку на правильный xorg.conf файл каждый раз при загрузке системы

Здесь /etc/rc.local скрипт, который я использую:

if [ -L /etc/X11/xorg.conf ]
then
    rm /etc/X11/xorg.conf
fi

if [ `dmidecode -s system-product-name` = "Z68X-UD3P-B3" ]
then
    ln -s /etc/X11/xorg.conf.ati /etc/X11/xorg.conf
else
    ln -s /etc/X11/xorg.conf.auto /etc/X11/xorg.conf
fi

Вы должны запустить dmidecode -s system-product-name Команда в каждой системе, которую вы хотите использовать, чтобы увидеть, что она выводит и использовать это в ваших тестах. И, конечно, создать каждый /etc/X11/xorg.conf.* файл, на который ссылается ваш скрипт В моем случае, xorg.conf.ati содержит конфигурацию, созданную установщиком ATI, а xorg.conf.auto это просто пустой файл, позволяющий системе автоматически обнаруживать все.

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