LINUX.ORG.RU

Можно ли помирить свободные драйвера NVidia и проприетарные?

 , ,


0

1

К примеру, что-то в граб вписать. Или что-то похожее. Но суть в том, чтобы можно было быстро (в течение пары минут) переключиться на альтернативу (хоть с перезагрузкой, хоть без)


нельзя. только если автоматизировать занесение дров в блэклист

das_tier ★★★★★
()

Ставь vesa, не сможешь в танки играть.

kinik ★★☆
()

Дуалбут с вендой норм.

paran0id ★★★★★
()

unplug vga
modprobe -r nouveau && modprobe nvidia && ln -s /etc/X11/xorg.conf-nvidia /etc/X11/xorg.conf && echo «Ha4aJbHuK, npuHuMau`»
Скоро подниму багтрекер =)
Кста, вдруг не заработает то не мне отвечать)

ubuntuawp ★★
()

У свободный драйверов используется библиотека LibGL из состава mesa, а у проприетарных своя библиотека. Так вот, если после установки проприетарных драйверов в Debian сохраняется где-либо библиотека из состава mesa, а не перезаписывается проприетарной версией, то в принципе для перехода на открытый драйвер вам достаточно остановить xorg-server, выгрузить проприетарный модуль nvidia, переключиться на LibGl из состава mesa, после чего загрузить открытый модуль, положить другой конфиг xorg-server`а, в котором указан открытый драйвер и запустить xorg-server.

Если не сохраняется, то нужно будет переустановит mesa и сохранить где-нибудь эту библиотеку.

С другой стороны, вроде даже на LoR проскакивала информация, о том, что nvidia хотят «пилить» прослойку, что бы могли нормально сосуществовать две версии LibGL, открытая и проприетарная.

kostik87 ★★★★★
()

Алгоритм примерно такой:

nvidia -> nouveau: 1) гасим X-сервер; 2) rmmod nvidia, modprobe nouveau; 3) update-alternatives --set glx /usr/lib/mesa-diverted; 4) убираем /etc/X11/xorg.conf — в нём прописан драйвер nvidia и без него X на nvidia не стартуют, а на nouveau X заводится без конфиг-файла; 5) стартуем X-сервер

nouveau -> nvidia: 1) гасим X-сервер; 2) rmmod nouveau, modprobe nvidia; 3) update-alternatives --set glx /usr/lib/nvidia; 4) возвращаем на место /etc/X11/xorg.conf; 5) стартуем X-сервер

uuwaan ★★
()
Ответ на: комментарий от TODD

а зачем переключаться?

На блобе не работает фреймбуфер, а на нуво не работает ничего, кроме фреймбуфера.

Anon
()
Ответ на: комментарий от uuwaan

дык незнаю пока, еслиб знал уже запилил бы.

irton ★★★★★
()

Сам не пробовал, но, думаю, алгоритм примерно таков:

  • для каждого ядра создаём две initramfs (в одной нет модуля nvidia, в другом — nouveau);
  • соответственно, для каждой из initramfs создаём отдельную запись в grub2.conf;
  • создаём юнит systemd, который
    • определяет, ядро с какой из initramfs сейчас загружено,
    • в зависимости от результата выполнения предыдущей операции подсовывает/удаляет xorg.conf и создаёт правильный линк libGL.so.1 (указывающий либо на блобо-либу, либо на Mesa'овскую),
    • должен отрабатывать до старта графического интерфейса;
  • что-либо ещё, исходя из дополнительных хотелок;
  • профит!
carasin ★★★★★
()
Ответ на: комментарий от qux

А аналог вызова eselect для негенты?

eselect в данном случае просто берет на себя нудную работу по прописыванию необходимых симлинков, переменных окружения и прочих необходимых настроек. Больше и подробнее там.

init_6 ★★★★★
()
Последнее исправление: init_6 (всего исправлений: 1)
Ответ на: комментарий от init_6

В конкретных нудных действиях и вопрос. Насчет «там» —

$ git clone https://git.overlays.gentoo.org/gitroot/proj/eselect.git
Cloning into 'eselect'...

$ cd eselect/

$ git grep opengl

$ find -iname '*opengl*'

$

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

qux
()

Поигрался только что с сабжевым вопросом на F19 x64. Коротко: можно, несложно, можно автоматизировать, но а) завести 32битную нативную игру /me не осилил; б) за час иксы сдохли три раза минимум. Второе можно списать на проблемы конкретного сетапа, первое вряд ли.

Без перезагрузок по-моему никак, nouveau вряд ли на лету выгрузится.

Подробнее.

Дрова ставил из rpmfusion. Как понял, там их запаковали так, что никакие симлинки и библиотеки не переписываются. Но шаманить, понятно, все равно надо. Для «туда»:

1.1) В меню grub стало «set gfxpayload=text» вместо моего «set gfxpayload=1280х1024х32».

1.2) В параметры ядра добавилось: «nouveau.modeset=0 rd.driver.blacklist=nouveau video=vesa:off». Привет, 80х25.

1.3) «blacklist nouveau» для modprobe (не путать с тем, что выше).

1.4) Проверить наличие конфигов из 2.3.

Для «обратно»:

2.1) Использовать старую grub menuentry. Конфиг без изменений, в смысле.

2.2) Блеклистить уже nvidia, а не nouveau. Именно для modprobe, не в параметрах ядра и initramfs.

2.3) Переименовать или переместить куда подальше конфиги, добавленные официальным драйвером. У меня они такие:

a) /etc/X11/xorg.conf

Section "Device"
        Identifier  "Videocard0"
        Driver      "nvidia"
EndSection

b) /etc/X11/xorg.conf.d/00-nvidia.conf

Section "Files"
        ModulePath   "/usr/lib64/nvidia-304xx/xorg"
        ModulePath   "/usr/lib64/xorg/modules"
EndSection

c) /etc/ld.so.conf.d/nvidia-304xx-lib.conf

/usr/lib/nvidia-304xx

d) /etc/ld.so.conf.d/nvidia-304xx-lib64.conf

/usr/lib64/nvidia-304xx

После последнего пункта запустить ldconfig.

Вроде всё. К остальному:

3.1) nvidia-settings очень тормозит. Зависания на десятки секунд с полной загрузкой CPU и фризами системы. Иногда после этого картинка превращается в тыкву, иногда гаснет монитор (но питание не выключает). Температуру GPU показывает 48°С.

3.2) Игра «Savage: Rebirth» (нативная 32битная) не запускалась с руганью типа «Screen 0 is not DRI capable» и безуспешными попытками загрузить swrast (успех тут тоже не годится, если правильно понимаю). 32битные библиотеки официального драйвера вроде установлены. В смысле, пакет с какими-то точно стоит, а что игре не хватает — хз.

3.3) Для научного интереса, разница в попугаях glxgears — почти ровно в 2 раза (700/1500). В KDE с рюшками.

3.4) Офсайт врет, что моё железо (6600) поддерживается последней веткой драйверов (325). Это не так уже около года.

qux
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.