Перевод документации драйвера NVIDIA для Linux

Глава 1. Вступление

1А. О драйвере NVIDIA для LINUX

Графический драйвер NVIDIA для Linux предоставляет аппаратное ускорение 2D операций и высокопроизводительную поддержку OpenGL при использовании графических процессоров NVIDIA.

Драйвер обеспечивает оптимальное программное ускорение для OpenGL- и X-приложений и поддерживает практически все современные графические процессоры NVIDIA (обратитесь к приложению А за перечнем поддерживаемых графических процессоров). Также в драйвере реализована поддержка функций TwinView, ТВ-выхода и цифровых плоских мониторов.

1B. О данном документе

Этот документ содержит инструкции для установки и использования драйвера NVIDIA для Linux. Главы 3, 4, 6 описывают процесс загрузки, установки и настройки драйвера. Глава 7 содержит часто задаваемые вопросы и ответы по установке драйвер, и Глава 8 содержит решения типичных проблем. Прочие главы содержат описания различных функций драйвера NVIDIA для Linux. Часто задаваемые вопросы об отдельных задачах сведены в соответствующие главы. Эти страницы размещены на сайте NVIDIA и при установке драйвера копируются в /usr/share/doc/NVIDIA_GLX-1.0/.

1С. Ожидаемый уровень знаний пользователя

Текст рассчитан на пользователя, имеющего представление об особенностях и терминологии Linux. Дополнительно, приложение I содержит информацию об этапах процесса установки, которая может быть полезна начинающим пользователям.

1D. Дополнительная информация

При возникновении необходимости в дополнительной информации, Глава 29 содержит ссылки на ресурсы с информацией о драйвере NVIDIA для Linux, а также краткий список дополнительных источников.

Глава 2. Минимальные требования к программному обеспечению

Программный компонентМинимальные требованияПроверить с помощью...
Ядро Linux (kernel)2.4.7cat /proc/version
XFree86/X.org4.0.1/6.7XFree86 -version/Xorg -version
modutils2.1.121insmod -version

Если необходима сборка модуля уровня ядра NVIDIA вручную:

Программный компонентМинимальные требованияПроверить с помощью...
binutils2.9.5size --version
GNU make3.77make --version
gcc2.91.66gcc --version
glibc2.0ls /lib/libc.so.* >6

Все официальные реализации ядра с 2.4.7 и более новые поддерживаются, предварительные версии, такие как 2.6.23-rc1, не поддерживаются, равно как и версии для разработчиков, такие как 2.3.x или 2.5.x. Ядро Linux можно загрузить с kernel.org или с одного из его зеркал.

Компоненты binutils и gcc можно загрузить с сайта GNU или одного из его зеркал.

Если используется интерфейс XFree86, но отсутствует файл  /var/log/XFree86.0.log, то, скорее всего, используется версия 3.x XFree86, и необходимо обновление.

Если вы устанавливаете Х-интерфейс впервые, часто проще начать с использования одного из драйверов с открытым исходным текстом, включенных в комплект XFree86 и X.Org («nv», «vga» или «vesa»). После того, как операционная система начнет нормально работать с драйвером с открытым исходным кодом, можно будет перейти на драйвер NVIDIA.

Обратите внимание, что новые графические процессоры NVIDIA могут не заработать с драйвером «nv» из поставки X.Org и XFree86. Например, драйвер «nv» из X.Org версии X11R7.2 не распознает видеокарты на базе графических процессоров семейства GeForce 8 и Quadro 4600/5600. Это исправлено в X.Org версии X11R7.3. Отдельные выпуски и индивидуальные пакеты X.Org можно загрузить с сайта X.Org.

Эти программные пакеты можно получить и от поставщика дистрибутива Linux.

Глава 3. Выбор и загрузка дистрибутива драйвера NVIDIA

Драйверы NVIDIA могут быть загружены с сайта NVIDIA.

Драйвер NVIDIA выполнен по унифицированной архитектуре: один драйвер поддерживает все современные графические процессоры NVIDIA. Поддержка устаревших графических процессоров осуществляется специальными выпусками драйвера. Обратитесь к приложению А за списком графических процессоров, считающихся устаревшими.

Драйвер NVIDIA поставляется в формате самораспаковывающегося архива с именем файла вида NVIDIA-Linux-x86-ХХХ.ХХ.run. Для 64-разрядных версий операционных систем Linux дистрибутив содержит как 64-разрядные компоненты драйвера, так и 32-разрядные компоненты для обеспечения совместимости. Пакеты с именем файла вида NVIDIA-Linux-x86-ХХХ.ХХ-no-compat32.run содержат только 64-разрядные компоненты.

Глава 4. Установка драйвера NVIDIA

Эта глава содержит инструкции по установке драйвера NVIDIA. Обратите внимание, что после окончания установки, но перед началом использования драйвера, должны быть вручную выполнены шаги, описанные в Главе 6. Дополнительная информация, могущая быть полезной начинающим пользователям Linux, содержится в приложении I.

4А. Перед началом установки

Перед началом установки вы должны выключить сервер Х-интерфейса и завершить все приложения, использующие OpenGL (учтите, что возможна работа некоторых приложений даже после остановки сервера Х-интерфейса). Вы также должны настроить запуск операционной системы на загрузку в консоль, а не напрямую в Х-интерфейс. Эта процедура облегчит восстановление в случае проблем в процессе установки драйвера. Обратитесь к приложению I за дополнительной информацией.

Если вы устанавливаете драйвер в системе, которая ранее была настроена на использование драйвера Nouveau, вы должны отключить его перед установкой драйвера NVIDIA. Обратитесь к разделу «Обращение с драйвером Nouveau» за дополнительной информацией

4В. Запуск инсталлятора

После загрузки файла NVIDIA-Linux-x86-ХХХ.XХ.run перейдите в каталог, содержащий файл дистрибутива и как пользователь «root» запустите файл:

# cd каталог
# sh NVIDIA-Linux-x86-ХХХ.XХ.run

Файлы .run представляют собой самораспаковывающиеся архивы. При выполнении они извлекают содержимое архива и запускают утилиту «nvidia-installer»,предоставляющую интерактивный интерфейс, проводящий вас через процесс установки.

Приложение «nvidia-installer» также устанавливает само себя в /usr/bin/nvidia-installer и может понадобиться потом для деинсталляции драйвера, авто-обновления драйвера и тому подобных задач. Использование утилиты подробнее описано ниже в этой главе.

Вы также можете указать ключи запуска .run файла. Типичные ключи запуска:

--info — вывод информации о '.run' файле и выход;

--check — проверка целостности архива и выход;

--extract-only — извлечение содержимого архива ./NVIDIA-Linux-x86-ХХХ.XХ.run без запуска «nvidia-installer»;

--help — вывод информации о типовых ключах запуска и выход;

--advanced-options — вывод информации о типовых и дополнительных ключах запуска и выход.

4С. Установка поддержки на уровне ядра

Драйвер NVIDIA содержит специальный модуль интерфейса, который должен быть скомпилирован отдельно для каждого ядра операционной системы. NVIDIA распространяет исходный код модуля интерфейса ядра.

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

После компилирования модуля интерфейса ядра требуется связать его с закрытой частью кода модуля NVIDIA уровня ядра. Для этого требуется наличие в системе линкера (linker). Линкер, обычно находящийся в /usr/bin/ld, является частью пакета «binutils». Вы должны установить в системе линкер перед установкой драйвера NVIDIA.

4D. Функции инсталлятора

Без ключей запуска .run файл запускает установщик сразу после извлечения из архива. Установщик также может быть запущен отдельным шагом в ходе установки, или после установки для проверки обновлений и т.п. задач. Основные ключи запуска «nvidia-installer»:

--uninstall — в процессе установки создаются резервные копии конфликтующих файлов и записи о скопированных новых файлах. Ключ uninstall откатывает установку драйвера, возвращая систему в исходное состояние;

--latest — соединение с FTP сайтом NVIDIA и вывод последней доступной версии драйвера и ссылки для загрузки дистрибутива последней версии;

--update — соединение с FTP сайтом NVIDIA, загрузка дистрибутива последней версии драйвера и его установка;

--ui=none — инсталлятор использует графический интерфейс на основе библиотеки ncurses, если таковая присутствует в системе. Иначе используется стандартный интерфейс командной строки. Этот ключ отключает использование графического интерфейса;

Глава 5. Устанавливаемые компоненты

Драйвер NVIDIA для Linux содержит следующие компоненты (имена файлов в скобках – полные имена компонентов после установки, «x.y.z» обозначает текущую версию. В этих случаях соответствующие символические ссылки (symlinks) создаются в процессе установки):

  • драйвер X-интерфейса (/usr/X11R6/lib/modules/drivers/nvidia_drv.so); он требуется для использования сервером Х-интерфейса оборудования NVIDIA;
  • расширение GLX для X-интерфейса (/usr/X11R6/lib/modules/extensions/libglx.so.x.y.z); этот модуль используется сервером Х-интерфейса для обеспечения поддержки GLX со стороны сервера;
  • модуль X-интерфейса для программного рендеринга через враппер (/usr/X11R6/lib/modules/libnvidia-wfb.so.x.y.z и, возможно, дополнительно /usr/X11R6/lib/modules/libwfb.so); этот модуль используется драйвером Х-интерфейса для выполнения программного рендеринга с графическими процессорами GeForce 8. Если библиотека libwfb.so уже присутствует в системе, «nvidia-installer» не перезаписывает ее, а создает символическую ссылку от libwfb.so к libnvidia-wfb.so.x.y.z;
  • библиотека OpenGL (/usr/lib/libGL.so.x.y.z); предоставляет точки входа API для всех вызовов функций OpenGL и GLX. С ней связываются OpenGL приложения во время выполнения;
  • библиотека ядра OpenGL (/usr/lib/libnvidia-glcore.so.x.y.z); используется библиотеками «libGL» и «libglx». Содержит основные функции аппаратного 3D ускорения. Вам не следует загружать ее через файл конфигурации Х-интерфейса — этим занимается «libglx»;
  • две библиотеки XvMC (компенсации движения X-видео): статическая библиотека и общая библиотека (/usr/X11R6/lib/libXvMCNVIDIA.a, /usr/X11R6/lib/libXvMCNVIDIA.so.x.y.z); обратитесь к приложению G за дополнительной информацией;
  • три библиотеки VDPAU: враппер верхнего уровня (/usr/X11R6/lib/libvdpau.so.x.y.z), библиотека отладчика (/usr/X11R6/lib/libvdpau_trace.so.x.y.z) и реализация NVIDIA (/usr/X11R6/lib/libvdpau_nvidia.so.x.y.z). Обратитесь к приложению H за дополнительной информацией;
  • две библиотеки CUDA (/usr/lib/libcuda.so.x.y.z, /usr/lib/libcuda.la); данные библиотеки обеспечивают исполнение CUDA-приложений;
  • модуль уровня ядра (/lib/modules/'uname -r'/video/nvidia.o или /lib/modules/'uname -r'/kernel/drivers/video/nvidia.o); этот модуль предоставляет низкоуровневый доступ к оборудованию NVIDIA для всех прочих компонентов. Он обычно загружается в ядро при запуске сервера Х-интерфейса и используется драйвером Х-интерфейса и OpenGL подсистемой. Модуль nvidia.o состоит из двух частей: только исполняемое ядро (binary), и интерфейс ядра, который должен быть скомпилирован специальной для используемого ядра. Обратите внимание, что ядро Linux не содержит полного исполняемого интерфейса, такого как сервер Х-интерфейса, так что необходимо, чтобы интерфейс ядра полностью совпадал с используемой версией ядра. Вы можете достичь этого либо собрав модуль интерфейса ядра самостоятельно, либо используя предварительно скомпилированные файлы для ядер, входящих в состав популярных дистрибутивов Linux;
  • библиотеки nvidia-tls (/usr/lib/libnvidia-tls.so.x.y.z и /usr/lib/tls/libnvidia-tls.so.x.y.z); эти файлы предоставляют локальное хранилище процедур библиотек OpenGL NVIDIA («libGL», «libnvidia-glcore», и «libglx»). Каждая библиотека nvidia-tls содержит поддержку определенной модели хранения процедур (такой как ELF TLS), и одна из них, подходящая для вашей системы, загружается при выполнении;
  • приложение nvidia-installer (/usr/bin/nvidia-installer) является инструментом NVIDIA для установки и обновления драйверов NVIDIA. Обратитесь к Главе 4 за дополнительной информацией;
  • приложение nvidia-xconfig (/usr/bin/nvidia-xconfig) является инструментом NVIDIA для настройки файлов конфигурации сервера X-интерфейса. Обратитесь к Главе 6 за дополнительной информацией;
  • приложение nvidia-settings (/usr/bin/nvidia-settings) является инструментом NVIDIA для внесения изменений «на лету» при запущенном сервере X-интерфейса. Обратитесь к Главе 24 за дополнительной информацией.

Проблемы возникают, когда приложение использует неправильную версию библиотеки. Такое происходит, когда в системе остаются старые библиотеки «libGL» или устаревшие символические ссылки. Если вы подозреваете, что что-то пошло не так во время установки драйвера, проверьте наличие следующих файлов и символических ссылок (это все файлы драйвера NVIDIA для Linux, а также их символические ссылки):

/usr/lib/xorg/modules/drivers/nvidia_drv.so,
/usr/lib/xorg/modules/libwfb.so (если сервер X-интерфейса достаточно новый), или
/usr/lib/xorg/modules/libnvidia-wfb.so и /usr/lib/xorg/modules/libwfb.so →libnvidia-wfb.so

/usr/lib/xorg/modules/extensions/libglx.so.x.y.z,
/usr/lib/xorg/modules/extensions/libglx.so → libglx.so.x.y.z

(могут также быть в /usr/lib/modules или /usr/X11R6/lib/modules)

/usr/lib/libGL.so.x.y.z
/usr/lib/libGL.so.x → libGL.so.x.y.z
/usr/lib/libGL.so → libGL.so.x

/usr/lib/libnvidia-glcore.so.x.y.z

/usr/lib/libcuda.so.x.y.z,
/usr/lib/libcuda.so → libcuda.so.x.y.z

/lib/modules/'uname -r'/video/nvidia.{o,ko}, или
/lib/modules/'uname -r'/kernel/drivers/video/nvidia.{o,ko}

Если имеются библиотеки с созвучными именами библиотек NVIDIA, утилита «ldconfig» могла создать неправильные символические ссылки. Рекомендуется переименовать или удалить конфликтующие библиотеки (убедитесь, что новые имена библиотек не совпадают с теми, что ищет ldconfig — добавление «XXX» к имени библиотеки обычно срабатывает), перезапустите «ldconfig», и проверьте, что были созданы правильные символические ссылки. Пример библиотеки, часто создающей конфликты — /usr/X11R6/lib/libGL.so*.

Если с библиотеками порядок, проверьте, что приложение использует правильные библиотеки. Например, чтобы проверить приложение /usr/X11R6/bin/glxgears на использование библиотек NVIDIA, выполните команду:

% ldd /usr/X11R6/bin/glxgears
linux-gate.so.1 => (0xffffe000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb7ed1000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0xb7ec0000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xb7de0000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00946000)
libm.so.6 => /lib/tls/libm.so.6 (0x0075d000)
libc.so.6 => /lib/tls/libc.so.6 (0x00631000)
libnvidia-tls.so.256.44 => /usr/lib/tls/libnvidia-tls.so.__DRV_VER__ (0xb7ddd000)
libnvidia-glcore.so.256.44 => /usr/lib/libnvidia-glcore.so.__DRV_VER__ (0xb5d1f000)
libdl.so.2 => /lib/libdl.so.2 (0x00782000)
/lib/ld-linux.so.2 (0x00614000)

Проверьте файлы, используемые для «libGL» — если это не библиотека NVIDIA, то надо удалить эти файлы, или же настроить путь поиска «ld» используя переменную среды LD_LIBRARY_PATH. Может быть полезным изучение страниц руководства (man) по «ldconfig» и «ldd».

Глава 6. Настройка X-интерфейса для драйвера NVIDIA

Файл конфигурации X-интерфейса хранит настройки сервера X. В этой главе описываются вносимые необходимые изменения для задействования драйвера NVIDIA. Полный список настроек содержится в приложении B.

Дистрибутив драйвера NVIDIA включает в себя утилиту «nvidia-xconfig», разработанную специально для облегчения редактирования файла конфигурации X-интерфейса. Разумеется, вы можете отредактировать файл и вручную.

6А. Использование NVIDIA-XCONFIG для настройки X-интерфейса

Утилита «nvidia-xconfig» находит файл конфигурации X-интерфейса и изменяет его для использования драйвера NVIDIA. В большинстве случае достаточно ответить «Yes» когда установщик предложит выполнить nvidia-xconfig. Если вам понадобится изменить конфигурацию позднее, вы можете запустить nvidia-xconfig снова из терминала. Утилита делает резервную копию файла конфигурации X-интерфейса перед внесением в него изменений.

Обратите внимание, что сервер X-интерфейса должен быть перезапущен для вступления в силу всех сделанных изменений в конфигурации. Дополнительная информация содержится в руководстве к «nvidia-xconfig», которое может быть вызвано командой:

% man nvidia-xconfig

6В. Редактирование файла конфигурации вручную

В апреле 2004 организация X.org выпустила сервер Х-интерфейса, основанный на XFree86. Хотя ваша система может содержать X.org сервер Х-интерфейса вместо прежнего XFree86, различия между ними не имеют влияния на пользователей Linux за двумя исключениями:

  • файл конфигурации релиза X.org находится в /etc/X11/xorg.conf, тогда как файл конфигурации XFree86 находится в /etc/X11/XF86Config. Оба файла используют одинаковый формат. В этом документе оба файла проходят как «Файл конфигурации X-интерфейса»;
  • файл журнала сервера X.org находится в /var/log/Xorg.#.log, тогда как журнал сервера XFree86 хранится в /var/log/XFree86.#.log (где # — номер сервера, обычно 0). Формат файлов почти идентичен. В этом документе оба файла проходят как «Файл журнала X-интерфейса».

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

(==) Using config file:

в файле журнала X-интерфейса. Эта строка содержит имя и расположение файла конфигурации X-интерфейса.

Если не имеется рабочего файла конфигурации Х-интерфейса, есть ряд способов получить готовый. Образец заполнения файла конфигурации включен как в дистрибутив XFree86, так и в драйвер NVIDIA (в /usr/share/doc/NVIDIA_GLX-1.0/). Утилита «nvidia-xconfig», входящая в состав пакета драйвера NVIDIA, может создать файл конфигурации. Дополнительная информация о формате файла конфигурации может быть найдена в руководстве XF86Config (man XF86Config или man xorg.conf).

Если имеется рабочий файл конфигурации X-интерфейса для иного драйвера (например, встроенных «n» или «vesa»), тогда просто отредактируйте файл как показано ниже. Удалите строку:

Driver "nv" (или Driver "vesa", или Driver "fbdev")

и замените ее строкой:

Driver "nvidia"

Удалите следующие строки:

Load "dri"
Load "GLCore"

В секции "Module" добавьте строку (если её ещё нет):

Load "glx"

Если файл конфигурации X-интерфейса не содержит секции "Module", вы можете пропустить последний шаг, если используется сервер Х-интерфейса X.Org или XFree86 версии 4.4.0 и более новой. Если вы используете сервер Х-интерфейса XFree86 старой версии, добавьте следующие строки в файл конфигурации Х-интерфейса:

Section "Module"
Load "extmod"
Load "dbe"
Load "type1"
Load "freetype"
Load "glx"
EndSection

Имеется множество опций файла конфигурации для настройки драйвера NVIDIA. Обратитесь к приложению B за полным списком.

После завершения редактирования файла вы можете перезапустить Х-интерфейс и начать использование аппаратного ускорения OpenGL. После перезапуска Х-интерфейса все приложения, использующие OpenGL должны автоматически начать использовать драйвер NVIDIA. При возникновении проблем обратитесь к Главе 8 за определением и решением типичных проблем.

 /