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'), и вы должны получить наилучшую поддерживаемую версию, отображенную под формой.

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

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

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

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

Совместимость ядра
Время от времени, новый релиз ядра изменяет внутренний двоичный интерфейс приложений (англ. ABI, application binary interface) для драйверов, что означает, что все драйвера, которые используют этот интерфейс, должны быть соответствующим образом изменены. Для драйверов с открытым исходным кодом, особенно распространяемых с ядром, эти изменения практически тривиальны для исправления, так как целая цепочка вызовов между драйверами и другими частями ядра может быть просмотрена достаточно легко. Для проприетарных драйверов типа nvidia.ko, это далеко не так. При изменении внутреннего двойчного интерфейса приложений, вы не можете просто исправить используемый клей, потому что вам неизвестно как этот клей используется проприетарной частью. Если вам удастся наладить работу и все будет работать исправно, вы все еще рискуете тем, что работа nvidia.ko в новом, неподдерживаемом ядре приведет к потере данных и аппаратному сбою.

Когда выпускается новая, несовместимая версия ядра, возможно, некоторое время лучше всего придерживаться новейшего поддерживаемого ядра. Обычно, Nvidia требуется несколько недель для подготовки нового проприетарного релиза, который, по их мнению, подходит для общего использования. Просто будьте терпеливы. Если вы хотите отбросить все предосторожности, ebuild-файл nvidia-drivers поддерживает команду epatch_user из класса eutils.class: это позволит вам исправить nvidia-drivers для их совместимости с последним, неподдерживаемым релизом ядра, с которым вы хотите работать. Однако заметьте, что ни сопроводители пакета nvidia-drivers, ни Nvidia не окажут вам поддержки, как только у Вас появятся проблемы. Ваша гарантия на аппаратное обеспечение, возможно, будет аннулирована. Мейнтейнеры Gentoo не смогут начать исправлять ваши проблемы, так как это проприетарный драйвер, который может быть отлажен только Nvidia. Мейнтейнеры ядра (как пакета Gentoo, так и разработчики самого ядра), определенно не будут поддерживать проприетарные драйвера, или, в самом деле, любую испорченную систему, которая может вызвать проблемы.

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

Вам также нужно включить в ядро поддержку диапазонных регистров типа памяти (англ. 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 для загрузки модуля ядра в память. Если вы обновляете ядро, то сначала должны удалить предыдущий модуль.

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

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

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

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

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

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

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

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

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

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

Включение 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. Чтобы это проверить, пересмотрите содержимое следующих файлов

Каждая строка должна содержать write-back или write-combining. Если вы видите строку со словом uncachable, то должны изменить настройки BIOS, чтобы это исправить.

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

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

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

2. Версия x11-drivers/nvidia-drivers, установленная на данный момент, не поддерживает вашу модель видеокарты. Проверьте файл README в каталоге /usr/share/nvidia-drivers-*/, чтобы просмотреть список поддерживаемых устройств, или воспользуйтесь поиском драйвера на сайте http://www.geforce.com/drivers. Смотри раздел Which_version выше.

3. Другой драйвер ядра получил управление аппаратными ресурсами. Проверьте результат работы команды lspci -k, чтобы посмотреть связан ли другой драйвер, например "nouveau", с видеокартой. Если это так, вам нужно отключить этот драйвер или его замаскировать.

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

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

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

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

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

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

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

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

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

Параметры модулей ядра
Модуль ядра nvidia принимает набор параметров (options), который позволяет вам настроить поведение драйвера. Большинство из них упомянуто в документации. Для того, чтобы добавить или изменить значения этих параметров, отредактируйте файл /etc/modprobe.d/nvidia.conf. Не забудьте запустить update-modules после изменения этого файла. Держите в уме, что вам потребуется перезагрузить модуль nvidia перед тем, как новые настройки вступят в силу.

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

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

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

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

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

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

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

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

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