Alt linux nvidia drivers

Nvidia

На сегодня видеокарты от Nvidia являются одними из самых распространённых. Поддержка карт Nvidia в Linux может осуществляться следующими «драйверами» — модулями Xorg.

  • Свободным модулем vesa — настолько, насколько данная видеокарта поддерживает спецификацию vesa.
  • Модулем поддержки фреймбуфера — fbdev.
  • Свободным модулем nv — поддерживаются не все видеокарты, нет поддержки аппаратного 3D (как и у vesa и у fbdev)
  • Свободным модулем nouveau с поддержкой 3D. Eсть в Сизифе, но модуль ещё сырой.
  • Проприетарные модули Nvidia.

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

В зависимости от того, какая видеокарта, можно ставить один из поддерживающих её драйверов. Современный пакет kernel-modules-nvidia включает в себя несколько версий модулей ядра nvidia. Выбор того или иного ядра для соответствующей видеокарты осуществляется на основе содержимого файлов /usr/share/hwdatabase/videoaliases/nvidia-XXX.YYY.xinf, где XXX.YYY версия ядра nvidia, входящие в пакеты nvidia_glx_XXX.YYY и предоставляемые фирмой Nvidia.

В случае, если не одна из версий ядра не поддерживает вашу видеокарту, надо использовать свободный драйвер nouveau. Xorg автоматически пытается подобрать наилучший видеодрайвер. Для работы видеодрайвера nvidia необходимо, чтобы был загружен модуль ядра nvidia. Для работы видеодрайвера nouveau, нужно, чтобы был загружен модуль ядра nouveau. Если не загружен ни тот и не другой, то xorg будет пытаться использовать fbdev, vesa или nv, если ничто не получится, xorg (графика) отключится и надо будет в консоле от root исправить проблему.

Для того, чтобы посмотреть какие модули ядра загружены, можно использовать от root команду lsmod, например:

# lsmod | grep nvid # lsmod | grep nouve

Для того чтобы посмотреть, какой видеодрайвер используется, можно выполнить команды (предварительно установив при необходимости одноимённые пакеты ):

Смена открытых драйверов на проприетарные

Перед установкой проприетарных драйверов можно сделать, на всякий случай, точку восстановления

Если вы до этого переходили на свободные драйвера, убедитесь, что у вас в /etc/X11/xorg.conf.d нигде не прописан драйвер nouveau

Для перехода с nouveau на nvidia рекомендуется сначала обновить ядро

После перезагрузки выполнить команды:

Убедиться, что это свежее ядро. После этого выполнить команды:

$ su -l root
# rpm -e $(rpm -qf `modinfo -F filename nouveau`)
# apt-get install nvidia_glx_common && nvidia-install-driver
# make-initrd

После этого стоит перезагрузиться. Xorg сам пытается загрузить наилучший драйвер. Лог последнего запуска xorg находится в /var/log/Xorg.0.log.

Смена проприетарных драйверов на открытые

Шаг 0. Обновляем систему(желательно) и ядро (обязательно) до текущего состояния репозитория, как описано выше.

$ su - # apt-get update # apt-get dist-upgrade # update-kernel 

Шаг 1. Устанавливаем (если не установлены) пакеты:

Читайте также:  Linux remove file mask

Модуль для kernel-modules-drm-nouveau для вашего ядра

kernel-modules-drm-nouveau-std-def (un-def)
xorg-drv-nouveau xorg-dri-nouveau

Шаг 2. Если у вас есть 32-битные приложения (а у вас основная система на архитектуре x86_64), которым нужны 32-битные видео-драйвера, устанавливаем:

i586-xorg-drv-nouveau i586-xorg-dri-nouveau

Шаг 3. Устанавливаем открытый драйвер в конфигурационном файле /etc/X11/xorg.conf.d/10-monitor.conf . Для этого можно воспользоваться утилитой xsetup-monitor.

Пользователям nvidia необходимо выполнить следующую команду

Проверяем, что нигде в /etc/X11/xorg.conf.d/ или /etc/X11/xorg.conf не осталось упоминания модуля nvidia

В принципе, этих шагов достаточно, чтобы после перезагрузки загрузиться с открытыми драйверами, однако не будет работать сплэш. Для его починки необходимо проделать следующие дополнительные шаги.

Шаг 4. Удаляем при необходимости файл /etc/modprobe.d/blacklist-alterator-x11

# rm -f /etc/modprobe.d/blacklist-alterator-x11

или наоборот записываем в него вместо блокировки nouveau , блокировку nvidia

Шаг 5. Перезагружаем компьютер.

Шаг 6. Выполняем команду make-initrd

При следующей загрузке сплэш должен заработать.

Замена драйверов nouveau/nvidia «на лету»

Постановка задачи

Была поставлена задача загружать два ядра с разными модулями :

Ядро std-def c драйвером nvidia, а ядро un-def с драйвером nouveau.

В процессе исследования, выяснилось, что если загружен ядерный модуль nouveau или nvidia — xorg сам находит и загружает нужный видео драйвер, без указания его в конфигурационных файлах xorg.

Реализация с помощью blacklist

  • Устанавливаем в оба ядра модули nvidia и nouveau.
  • Создаём файл /etc/modprobe.d/blacklist-nvidia-x11.conf и записываем туда: [1]
blacklist nvidia blacklist nouveau
  • Удаляем, если есть в файлах конфигурации все упоминания о том, какой драйвер применяется — nvidia или nouveau. [2]
  • Создаём файл /etc/rc.d/rc.local следующего содержания:
#!/bin/bash if [ -n `uname -r | grep std-def` ];then modprobe nvidia else modprobe nouveau fi 

Всё — можно перезагружаться — при выборе ядра un-def у нас теперь используется свободный драйвер nouveau, при использовании std-def используется проприетарный модуль nvidia. [3] [4] [5]

  1. ↑ Если оставить только один драйвер, то не будет грузиться
  2. ↑ Если в файле ничего кроме этого ценного нет, то можно и сам файл удалить
  3. ↑ Теоретически этот метод можно применять и в других случаях, например с fflrx/radeon
  4. ↑ Это можно применять и с одним ядром, для быстрого перехода с свободного драйвера на проприетарный и обратно, просто отредактировав файл /etc/rc.d/rc.local
  5. ↑ Это можно применять и совсем в другом случае, например при подборе нужного модуля Wifi из серии v43 / b44 / wl

Автоматическая реализация

Ничего не трогаем, просто устанавливаем оба набора пакетов (и Nvidia и nouveau). При загрузке и старте xorg операционная система сама выбирает оптимальный драйвер

Краткий алгоритм установки драйверов серии 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 .
Читайте также:  Linux reboot to bios

Возможные баги

Иногда (при смене версий пакетов и расхождении ABI ) xorg-x11-server требует, чтобы в /etc/X11/xinit/xserverrc было прописано:

X_server='X -nolisten tcp -ignoreABI'

Второй способ — в /etc/x11/xorg.conf добавить опцию:

Section "ServerFlags" Option "IgnoreABI" "true" EndSection

Третий, и наиболее правильный способ в дистрибутивах на основе бранча 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 и память

Суть: при установке проприетарных драйверов происходит подмена GL-библиотек на проприетарные. По непонятной причине многие скомпилированные с libGL программы и библиотеки (в особенности libcairo) потребляют на 10-20 мегабайт (!) RSS больше. Вот небольшой кусок для сравнения (смотрим на gimp, script-fu и nm-appleti, вторая колонка — это RSS):

По ссылке видно, что в XFCE может набежать порядка 300 Мб. Это может быть проблемой. Для экономии памяти проще всего использовать nouveau.

Обновление

Для обновления обеих частей драйвера (ядерной и иксовой) следует применять совокупность команд:

apt-get update && apt-get dist-upgrade && update-kernel

Борьба с «тирингом» при использовании официальных драйверов

При использовании «открытых» драйверов (nouveau), наблюдается «тиринг» (tearing) изображения, на официальных же драйверах эту проблему можно решить следующим образом (из терминала):

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 < ForceCompositionPipeline = On >"

Монитор может мерцать секунду-две. Если команда выполнилась без ошибок, нужно проверить, ушла ли проблема (если проблема сохраняется, можно попробовать указать опцию «ForceFullCompositionPipeline» вместо «ForceCompositionPipeline»). Если тиринга больше нет, пропишите данный режим в Xorg.conf, чтобы эта настройка видеокарты применялась при каждом запуске системы, предварительно сделав резервную копию файла xorg.conf:

cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

Затем откройте файл в текстовом редакторе с привилегиями суперпользователя — допустим, с помощью nano:

Читайте также:  Mount nfs on oracle linux

В разделе Section «Screen» должно быть примерно следующее:

Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "Stereo" "0" Option "metamodes" "nvidia-auto-select +0+0 < ForceCompositionPipeline = On >" SubSection "Display" Depth 24 EndSubSection EndSection

Если опции «metamodes» нет, добавьте ее с рабочим для себя вариантом. У некоторых уже есть опция «metamodes» в файле /etc/X11/xorg.conf, как в примере ниже для настройки с двойным монитором:

Option "metamodes" "VGA-0: 1152x864_60 +0+0, DVI-D-0: 1680x1050_60 +0+864"

Если это так, просто измените строку так, чтобы она выглядела следующим образом:

Option "metamodes" "VGA-0: 1152x864_60 +0+0, DVI-D-0: 1680x1050_60 +0+864 < ForceCompositionPipeline = On >"

Теперь перезагружаемся и наслаждаемся плавной картинкой.

Что делать, если у вас отсутствует файл /etc/X11/xorg.conf

Сейчас всё реже используется файл xorg.conf. Он становится ненужным. Вместо него используются файлы с расширением *.conf в каталоге /etc/X11/xorg.conf.d/ всё должно работать автоматом без участия человека.В этих файлах указываются отдельные параметры, которые надо подправить в настройках xorg.conf. Остальные параметры xorg выбирает автоматом. Но иногда бывает полезно создать файл xorg.conf, чтобы "посмотреть" какие параметры есть для этой видеокарты.
Для создания xorg.conf для драйвера nvidia, открываем программу nvidia-settings и переходим в раздел X Server Display Configuration, нажимаем кнопку "Save to X Configuration File" (тем самым мы создадим необходимый для нас файл xorg.conf). Так же нужно снять галочку с Merge with existing file (совместить с существующим файлом). Проверьте наличие файла xorg.conf, после чегo можно или сохранить его, или удалить познакомившись с текущими настройками, а можно часть из настроек перенести в отдельный файл в каталоге /etc/xorg.conf.d.
В идеале задумано, что всё должно работать без участия оператора. После установки драйверов nvidia , если они поддерживают карту, то после перезагрузки должны включиться они, если нет, то должна включиться nouveau. Вмешательство человека только портит этот механизм - пытаются насильно включить nvidia через альтератор, а в результате и nvidia не грузится (из-за того что карту не поддерживает), ни nouveau, так как в xorg.conf.d насильно вписали (альтератором) nvidia.

Удаление старых драйверов Nvidia

Для удаления старых драйверов Nvidia можно от имени root запустить скрипт:

удаляющий ненужные пакеты nvidia_glx_* .

Удаление всех модулей Nvidia

Внимание! Удаляйте компоненты системы только в том случае, если вы знаете, что делаете, исключительно на свой страх и риск!

Даже при отсутствии оборудования Nvidia в системе могут быть установлены модули Nvidia, например на компьютерах под управлением Альт Рабочая станция К. Для удаления этих модулей можно от имени root выполнить команду:

# apt-get remove apt-scripts-nvidia

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

Ссылки

  • 32-битный OpenGL на 64-битной системе с драйвером NVIDIA
  • Установка_проприетарных_драйверов_NVIDIA_и_ATI
  • apt-scripts-nvidia (пакет содержит реализацию команды apt-get install-nvidia )
  • анонс nvidia-clean-driver (удаление ненужных nvidia_glx_* )
  • Обновление ОС
  • Обновление ядра

Источник

Оцените статью
Adblock
detector