Переключаться между nvidia-current и nouveau без перезагрузки?

24

Можно ли на лету переключаться между видео-драйверами BLOB и Nouveau от Nvidia?

Я думаю, что я должен быть в состоянии:

  1. [✓] Выгрузить nvidia
  2. [✓] Выгрузить нуво
  3. [✕] Восстановить консоль после выгрузки nouveau *
  4. [✓] Поменяйте местами файлы xorg.conf
  5. [✓] Позаботьтесь о черном списке
  6. [✓] Разобраться с libglx.so

*) После небольшого разговора с парнями из #nouveau, кажется, что это сложно или даже невозможно с текущей настройкой Ubuntu (встроенный vesafb). Я пытаюсь заставить его работать с uvesafb, но сейчас сценарии в ответе делают то, что я искал.

htorque
источник
звучит как очень рискованная сделка Oo, вы уверены, что хотите это сделать?
RolandiXor
4
Риск означает веселье. : P
htorque
На всякий случай, можете ли вы добавить следующие строки в ваш скрипт: chvt 1 chvt 7 Ссылка: hermann-uwe.de/tips-and-tricks/chvt
ericb
Мне просто хотелось указать, какой у вас хорошо структурированный пост. Приятно видеть! :)
Линд

Ответы:

12

Теперь у меня есть два скрипта, которые переключают драйверы, xorg.conf, занимаются внесением в черный список и libglx, поэтому ответ: да, это возможно.

Черный список работает с одним файлом, /etc/modprobe.d/содержащим либо blacklist nvidiaили blacklist nouveau. Я также заменил /lib/nvidia-current/modprobe.confманекен, иначе драйвер nvidia всегда будет создавать ссылку в /etc/modprobe.d/этом черном списке nouveau.

Переключиться в нуво:

 #!/bin/bash
 stop gdm

 rmmod nvidia

 sed -i "s/nouveau/nvidia/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

 update-alternatives --set gl_conf /usr/lib/mesa/ld.so.conf
 ldconfig

 modprobe nouveau

 cp /etc/X11/xorg.conf{.nouveau,}

 start gdm

После этого у меня работает nouveau и рабочая консоль (nouveaufb).

Переключиться на NVIDIA:

#!/bin/bash
stop gdm

echo 0 > /sys/class/vtconsole/vtcon1/bind
rmmod nouveau
rmmod ttm
rmmod drm_kms_helper
rmmod drm

sed -i "s/nvidia/nouveau/" /etc/modprobe.d/blacklist-nvidia-nouveau.conf

update-alternatives --set gl_conf /usr/lib/nvidia-current/ld.so.conf
ldconfig

modprobe nvidia-current

cp /etc/X11/xorg.conf{.nvidia,}

start gdm

→ Драйвер Nvidia работает, единственная проблема: после выгрузки драйвера nouveau консоль не работает. Мне нужен способ сбросить его или загрузить другой кадровый буфер, но, поскольку vesafb скомпилирован в ядро, я не знаю, что делать.

htorque
источник
Основная цель была достигнута, поэтому я принимаю это, пока кто-нибудь не сможет решить проблему с терминалом.
htorque
Кажется, есть новый вопрос, требующий этого: askubuntu.com/questions/855451/… Я связал ваш ответ там, но после тестирования я понял, что он не работает (больше). Может быть, вы можете обновить свой ответ.
студент
0

Я не верю, что это возможно, не только настройки режима ядра драйвера nouvou и nvidia - нет, но драйвер nvidia использует взломанную библиотеку xorg, что делает даже использование одной и той же установки на машине, требующей драйвера intel, проблемой , (см. перевернутые элементы ошибок и вопросов)

Мартин Оуэнс -доктормо-
источник
1
Я думаю, именно поэтому они добавили альтернативу 'gl_conf'. Использование альтернатив обновления позволяет легко переключаться между библиотекой Nvidia и «нормальной».
htorque
0

http://nouveau.freedesktop.org/wiki/KernelModeSetting/ предлагает запустить /etc/init.d/consolefont restart после rmmod-ing nouevau для восстановления текстового режима. Обратите внимание, что он был переименован в console-font на более поздних системах, и в Ubuntu 13.10 его нельзя назвать так вообще, но вот так: service console-font restart

Кроме того, это не всегда работает. В некоторых случаях запуск X ( запуск службы lightdm - или любой другой используемый вами DM) запускает режим gfx, а также дает рабочий текстовый режим при переключении на vt1 ( ctrl-alt-f1 ).

(Я использую это для установки драйвера nvidia в сеанс live CD)

Давид Балажич
источник