Nvidia
Настройка видеокарт Nvidia в Сизифе
Постановка вопроса
На сегодня видеокарты от Nvidia являются одними из самых распространённых. Поддержка карт Nvidia в Linux может осуществляться следующими «драйверами» — модулями Xorg.
- Свободным модулем vesa — настолько, насколько данная видеокарта поддерживает спецификацию vesa.
- Модулем поддержки фреймбуфера — fbdev.
- Свободным модулем nv — поддерживаются не все видеокарты, нет поддержки аппаратного 3D (как и у vesa и у fbdev)
- Свободным модулем nouveau с поддержкой 3D. Eсть в Сизифе, но модуль ещё сырой.
- Проприетарные модули Nvidia.
На сегодняшний день политика компании Nvidia такова, что она разделила все свои видеокарты на 5 групп. В зависимости от того, какая видеокарта, можно ставить один из поддерживающих её драйверов.
Краткий алгоритм установки драйверов серии legacy
Данный алгоритм устарел. В современном Сизифе всё это делается скриптами, но если произошёл сбой в их работе, вы можете сделать эти операции за них.
С недавнего времени xorg-x11-server-1.4 модули legacy вошли в основной пакет Nvidia. Как поменять текущий модуль ядра (все операции требуют прав root)?
- Выключаем X-ы, например telinit 3,
- Выгружаем модуль nvidia: rmmod nvidia,
- Меняем символическую ссылку, например ln -s /lib/modules/nvidia/{версия ядра} /lib/modules/{версия ядра}/nVidia/nvidia.ko,
- Прописываем в /lib/modules/{версия ядра}/.versions/nvidia: 1.0.9639,
- depmod -a,
- modprobe nvidia,
- Проверяем, что в xorg.conf прописан модуль nvidia,
- x11setupdrv, (начиная с ALT 5.0 и выше не нужно, т.к. скрипт встроен в запуск X-сервера)
- Запускаем X-ы, например telinit 5.
- {версия ядра} — это та версия, в которой вы хотите настроить работу драйверов Nvidia.
Возможные баги
Иногда (при смене версий пакетов и расхождении ABI ) xorg-x11-server требует, чтобы в /etc/X11/xinit/xserverrc было прописано:
X_server='X -nolisten tcp -ignoreABI'
вместо
X_server='X -nolisten tcp'
Второй способ - в /etc/x11/xorg.conf добавить опцию
Section "ServerFlags"
Option "IgnoreABI" "true"
EndSection
Третий, и наиболее правильный cпособ в дистрибутивах на основе бранча p7 и выше в /etc/sysconfig/xserver раскомментировать IGNORE_ABI=yes:
# The Xorg server checks the ABI revision levels of each module that it loads.
# It will normally refuse to load modules with ABI revisions that are newer
# than the server's.
# See Xorg(1) for more information about option.
# Value: yes/no
IGNORE_ABI=yes
Видеокарты типа Optimus
В последнее время появились ноутбуки с несколькими видеокартами (Nvidia+Intel или Radeon+Intel).
Для таких видеокарт существует инструкция по подключению и следующая информация:
- По умолчанию монитор показывает картинку с Intel GPU.
- В зависимости от реализации может быть или отсутствовать возможность переключения сигнала между GPU, при этом в новых ноутбуках обычно её нет физически
- Если переключение физически есть, соответствующая настройка может быть или отсутствовать в BIOS (в последнем случае может пригодиться всякое switcheroo).
- Отсутствие переключателя в BIOS заменяется программным Bumblebee или собратьями.
- Задействовать Optimus (чип nvidia или ati) можно через VirtualGL.
В нормальных ноутах в BIOS может быть 3 положения переключателя видеокарты: встроенная, optimus и дискретная (nvidia,ati). Здесь достаточно прикрутить программный переключатель, если устроит перезагрузка для переключения X-ов на другую видеокарту (без optimus вообще).
Проприетарный libGL/libglx и память
История вопроса: списке рассылки Community и altbug #25609.
Суть: при установке проприетарных драйверов происходит подмена GL-библиотек на проприетарные. По непонятной причине многие скомпилированные с libGL программы и библиотеки (в особенности libcairo) потребляют на 10-20 мегабайт (!) RSS больше. Вот небольшой кусок для сравнения (смотрим на gimp, script-fu и nm-appleti, вторая колонка — это RSS):
$ tail ps-e-n* ==> ps-e-nouveau <== ahttpd 7180 145444 0.0 script-fu 7920 189864 0.0 polkitd 10560 505520 0.0 colord 11388 216252 0.0 nm-applet 17084 805108 0.1 X 28152 122200 0.1 gimp 63512 671152 0.3
==> ps-e-nvidia <== ahttpd 7176 145444 0.0 colord 8900 216084 0.0 polkitd 10560 505520 0.0 script-fu 28404 227524 0.1 nm-applet 39252 846136 0.2 X 53104 149612 0.3 gimp 85412 1104308 0.5
По ссылке видно, что в XFCE может набежать порядка 300 Мб. Это может быть проблемой. Для экономии памяти проще всего использовать nouveau.