NVIDIA/nvidia-drivers/ru

x11-drivers/nvidia-drivers — это проприетарный графический драйвер для видеокарт nVidia. Альтернативой с открытым исходным кодом является nouveau.

Драйвера nVidia в дереве портежей выпускаются nVidia и собираются для ядра Linux. Они содержат блоб (от англ. binary linked object — объект двоичной компоновки), который берет на себя основную работу по взаимодействию с платой. Драйвера состоят из двух частей: модуля ядра и драйвера X11. Обе части включаются в один пакет. Вследствие особенностей упаковки драйверов nVidia, вам потребуется сделать некоторый выбор перед установкой драйверов.

Пакет nvidia-drivers включает в себя последние драйвера от nVidia с поддержкой всех плат. Имеется в наличии несколько версий пакета в зависимости от того, насколько у вас старая плата. Этот пакет использует eclass для обнаружения типа используемой платы, чтобы установить подходящую версию.

Аппаратная совместимость
Пакет поддерживает целый диапазон доступных плат nVidia. В зависимости от видеокарты, которой вы обладаете, для установки доступно большое число версий. Прочитайте официальную документацию nVidia Что такое устаревший драйвер?, для того, чтобы узнать, какую версию пакета nvidia-drivers вы должны использовать. Достаточно подходящий способ узнать это с помощью интерактивной формы предложен здесь. Введите вашу видеокарту (учитывая параметр Legacy в поле 'Product Type'), и вы должны получить наилучшую поддерживаемую версию, отображенную под формой.

The package supports a range of available nVidia cards. Multiple versions are available for installation, depending on the card(s) that the system has. See the official nVidia documentation, What's a legacy driver?, to find out what version of should be used. A pretty decent way to find this out through an interactive form. Enter the graphics card that is used by the system (mind the Legacy option in the 'Product Type' field) and the form should end up with the best supported version.

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

Заметьте, что Gentoo не предоставляет версии 71.86.xx. Если вашей карте требуются эти драйвера, рекомендуется использовать драйвер nouveau.

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

As mentioned above, the nVidia kernel driver installs and runs against the current kernel. It builds as a module, so the kernel must support the loading of kernel modules (see below).

Модуль ядра (nvidia.ko) состоит из проприетарной части (широко известной как двоичный блоб), которая управляет графическими чипами, и части с открытым исходным кодом (клей — англ. glue), которая во время исполнения работает как посредник между проприетарной частью и ядром. Они должны работать вместе слаженно, иначе вы столкнетесь с потерей данных (из-за паники ядра, сбоя X-сервера с несохраненными данными в X-приложениях) и даже повреждением аппаратного обеспечения (перегрев и другие проблемы с управлением питания тут же приходят на ум).

Kernel compatibility
From time to time, a new kernel release changes the internal ABI for drivers, which means all drivers that use those ABIs must be changed accordingly. For open source drivers, especially those distributed with the kernel, these changes are nearly trivial to fix since the entire chain of calls between drivers and other parts of the kernel can be reviewed quite easily. For proprietary drivers like nvidia.ko, it doesn't work quite the same. When the internal ABIs change, then it is not possible to merely fix the "glue", because nobody knows how the glue is used by the proprietary part. Even after managing to patch things up to have things seem to work nicely, the user still risks that running nvidia.ko in the new, unsupported kernel will lead to data loss and hardware failure.

When a new, incompatible kernel version is released, it is probably best to stick with the newest supported kernel for a while. Nvidia usually takes a few weeks to prepare a new proprietary release they think is fit for general use. Just be patient. If absolutely necessary, then it is possible to use the epatch_user command with the nvidia-drivers ebuilds: this allows the user to patch nvidia-drivers to somehow fit in with the latest, unsupported kernel release. Do note that neither the nvidia-drivers maintainers nor Nvidia will support this situation. The hardware warranty will most likely be void, Gentoo's maintainers cannot begin to fix the issues since it's a proprietary driver that only Nvidia can properly debug, and the kernel maintainers (both Gentoo's and upstream) will certainly not support proprietary drivers, or indeed any "tainted" system that happens to run into trouble.

Требуемые параметры ядра
Если вы используете genkernel all для конфигурации ядра, тогда все в порядке. Если нет, дважды проверьте конфигурацию ядра, так чтобы поддержка загружаемых модулей была включена:

If genkernel all was used to configure the kernel, then everything is all set. If not, double check the kernel configuration so that this support is enabled:

Вам также нужно включить в ядро поддержку диапазонных регистров типа памяти (англ. Memory Type Range Register - MTRR):

Также, если у вас видеокарта AGP, вы можете дополнительно включить в ядро поддержку драйвера apggart, как встроенного в ядро, так и в качестве модуля. Если вы не используете встроенный в ядро apggart, то драйверы будут использовать собственную реализацию apggart, называемую NvAGP. На определенных системах, это приводит к лучшей производительности, чем встроенный в ядро agpgart, а на некоторых, выполняется хуже. Вам потребуется оценить это на своей собственной системе для достижения наилучшей производительности. Если вы не уверены что делать, используйте встроенный в ядро agpgart:

Альтернативой для кадрового буфера является uvesafb, который может быть установлен вместе с nvidia-drivers.

Ebuild-файл nvidia-drivers автоматически обнаруживает версию вашего ядра, основываясь на символьной ссылке. Пожалуйста, убедитесь, что эта символьная ссылка указывает на корректные исходные коды и что ваше ядро сконфигурировано правильно. Обратитесь к разделу «Конфигурация ядра» Настольной книги Gentoo для получения подробностей по конфигурации ядра.

Сперва, вам необходимо выбрать правильные исходные тексты ядра используя eselect. Если вы используете gentoo-sources-3.7.10, список доступных ядер может выглядеть следующим образом:

В результате, приведенном выше, заметно, что ядро linux-3.7.10-gentoo помечено звездочкой (*), для того, чтобы продемонстрировать, что это то ядро, на которое указывает символьная ссылка.

Если символьная ссылка не указывает на корректные исходные тексты, вы можете ее обновить, выбирая номер требуемых вами исходных текстов ядра, как в приведенном далее примере.

Драйвера
Теперь самое время установить драйвера. Вы можете это сделать сначала следуя Описанию настройки X-сервера, и, затем, установив VIDEO_CARDS="nvidia" в. После того, как вы установите X-сервер,, он затем установит правильную версию nvidia-drivers для вас.

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

Драйвера
Теперь самое время установить драйвера. Вы можете это сделать сначала следуя Описанию настройки X-сервера, и, затем, установив VIDEO_CARDS="nvidia" в. После того, как Вы установите X-сервер,, он затем установит правильную версию nvidia-drivers для Вас.

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

X-сервер
После установки подходящих драйверов, вам надо сконфигурировать X-сервер для использования драйвера nvidia вместо драйвера по умолчанию nv.

Once the appropriate drivers are installed, configure the X server to use the nvidia driver instead of the default nv driver.

Запустите eselect, так чтобы X-сервер использовал GLX библиотеки nVidia:

Тестирование видеокарты
Для того, чтобы протестировать вашу видеокарту, запустите X и введите команду glxinfo, которая является частью пакета mesa-progs. Она должна сообщить, что direct rendering активирован:

To test the nVidia card, fire up X and run glxinfo, which is part of the package. It should say that direct rendering is activated:

Для проверки кадровой частоты — FPS, запустите glxgears.

Включение поддержки nvidia
Некоторые инструменты, такие как mplayer и xine-lib, используют локальный USE-флаг, называемый xvmc, включающий поддержку XvMCNVIDIA. Это полезно при просмотре видео высокого разрешения. Добавьте xvmc в список USE-флагов в, или добавьте его как USE-флаг в media-video/mplayer и/или media-libs/xine-lib в файле.

Some tools, such as and, use a local USE flag called   which enables XvMCNVIDIA support, useful when watching high resolution movies. Add in  in the USE variable in  or add it as USE flag to   and/or   in.

Серии GeForce 8 и более поздние GPU выходят с поддержкой VDPAU, которая заменила собой поддержку XvMCNVIDIA. Смотри статью VDPAU для включения поддержки VDPAU.

Также есть несколько приложений, которые используют USE-флаг nvidia, поэтому вы можете пожелать добавить его в файл.

Затем, запустите emerge -uD --newuse @world для пересборки приложений, которые выигрывают от изменения этого USE-флага.

Использование инструмента управления настройками от NVidia
nVidia также предоставляет вам инструмент для управления настройками. Этот инструмент разрешает вам просматривать и изменять настройки графики без перезапуска X-сервера. Он доступен через Portage как media-video/nvidia-settings. Как упомянуто ранее, он будет задействован автоматически, если вы установили драйвера с USE-флагом gtk, прописанным в файле или в.

nVidia also provides a settings tool. This tool allows the user to monitor and change graphical settings without restarting the X server and is available through Portage as. As mentioned earlier, it will be pulled in automatically when installing the drivers with the  USE flag set in  or in.

Включение OpenGL/OpenCL
Для включения OpenGL и OpenCL.

Вы должны проверить, чтобы сервер Xorg не был запущен во время проведения этих изменений.

Устранение неполадок




Драйвер не инициализируется, если включены прерывания MSI
Драйвер NVIDIA в Linux по умолчанию использует Message Signaled Interrupts (прерывания инициируемые сообщениями, MSI). В результате этого мы получаем совместимость и расширяемость, в основном из-за отсутствия необходимости разделения IRQ. На некоторых системах наблюдаются проблемы с поддержкой MSI, хотя они хорошо работают с прерываниями virtual wire (виртуальные провода). Это приводит к невозможности запустить X вместе с драйвером NVIDIA, либо к проблемам инициализации CUDA.

Прерывания MSI можно запретить параметром модуля ядра NVIDIA. Это можно сделать в командной строке при загрузке модуля, либо (более правильно) через файлы конфигурации модулей дистрибутива (например, через те, что находятся в ).

Например:

Работа с 2D ускорением на машинах с 4 Гб памяти и больше.
Если вы испытываете проблему с ускорением 2D графики nVidia, вероятно, вы не смогли настроить диапазон совмещения записи (write-combining range) в MTRR. Чтобы это проверить, пересмотрите содержимое следующих файлов

When nVidia 2D acceleration is giving problems, then it is likely that the system is unable to set up a write-combining range with MTRR. To verify, check the contents of :

Every line should contain write-back or write-combining. When a line shows up with uncachable in it then it is necessary to change a BIOS setting to fix this.

Перезагрузитесь и войдите в BIOS, затем найдите настройки MTRR (возможно, под CPU Settings). Измените настройки с continuous на discrete и перезагрузитесь обратно в Linux. Теперь вы обнаружите, что записи со словом uncachable больше нет и 2D-ускорение работает без каких-либо неполадок.

Когда я пытаюсь загрузить модуль ядра, я получаю сообщение no such device
Это обычно вызвано одной из следующих проблем:

This is usually caused by one of the following issues:

1. Вы вовсе не имеете видеокарты nVidia. Проверьте вывод lspci, чтобы удостовериться, что видеокарта nVidia установлена и обнаружена.

Xorg сообщает, что не может найти какие-либо экраны
Когда вы загружаете компьютер, и получаете черный экран или командную строку в консоли, вместо графического интерфейса пользователя; вы можете нажать Ctrl+Alt+F2, чтобы вызвать командную строку, если она отсутствует. Затем вы можете запустить команды:

чтобы увидеть вывод работы Xorg. Если одной из первых ошибок идет сообщение о том, что Xorg не может найти какие-либо экраны, следуйте этим шагам, чтобы разрешить вашу проблему.

Должно быть достаточно запуска следующей команды перед перезагрузкой:

Но если это не работает, запустите lspci и вы найдете вашу видеокарту, начинающуюся примерно так: 01:00.0 VGA compatible controller: модель вашей видеокарты

Возьмите первую часть, 01.00.0 и поместите ее в /etc/X11/xorg.conf вместе с параметром BusID:

When after booting the system, it ends up with a black screen or a console prompt instead of the GUI; then press to bring up a console prompt. Next, run:

to see the output of Xorg. If one of the first errors is that Xorg can't find any screens, then follow the following steps to resolve the issue.

It should be enough to run the following command before rebooting:

But if that doesn't work, run lspci and notice that the video card starts off like this:

Take the first bit,  and put it in the  file with the   option:

Direct rendering не активирован
Если Direct rendering не работает, это может быть потому, что вы включили Direct Rendering Manager в ядро, что вызывает конфликт с драйвером. Вы можете посмотреть статус Direct Rendering следуя инструкциям раздела Тестирование вашей карты.

Во-первых, отключите Direct Rendering Manager (CONFIG_DRM) в ядре :

И соберите заново x11-drivers/nvidia-drivers, так как драйвер может быть пересобран с DRM-символами ядра. Это должно исправить вашу проблему.

Документация
Пакет драйверов nVidia также поставляется с исчерпывающей документацией. Она устанавливается в каталог /usr/share/doc и может быть просмотрена с помощью следующей команды:

The nVidia driver package also comes with comprehensive documentation. This is installed into and can be viewed with the following command:

Kernel module parameters
The nvidia kernel module accepts a number of parameters (options) which can be used to tweak the behaviour of the driver. Most of these are mentioned in the documentation. To add or change the values of these parameters, edit the file. Remember to run update-modules after modifying this file, and bear in mind to reload the  module before the new settings take effect.

Отредактируйте /etc/modprobe.d/nvidia.conf в Вашем любимом редакторе:

Обновите информацию о модулях:

Выгрузите модуль nvidia...

...и загрузите его снова:

Расширенная конфигурация X-сервера
GLX-интерфейс также имеет огромное количество параметров, которые можно настроить. Они управляют конфигурацией выхода TV, одновременным выводом на два монитора, определением частоты монитора, и так далее. Опять же, все доступные параметры подробно описаны в документации.

The GLX layer also has a plethora of options which can be configured. These control the configuration of TV out, dual displays, monitor frequency detection, etc. Again, all of the available options are detailed in the documentation.

Если вы хотите использовать какие-либо из этих параметров, вам необходимо их перечислить в соответственном разделе Device в файле конфигурации X (обычно находящемся в /etc/X11/xorg.conf). Например, предположим я хочу отключить всплывающий логотип — splash logo:

Смотрите также

 * Переключение между nouveau и nvidia-drivers.
 * Драйвер NVIDIA для ноутбуков с видеокартой Optimus.

Благодарности
Мы хотим поблагодарить следующих авторов и редакторов за их вклад в это руководство: Sven Vermeulen, Joshua Saddler, M Curtis Napier and Chris Gianelloni.