Статья конечно старовата, но актуальность ее от этого меньше не становится. Вместо XFree86 cейчас используется Xorg, линейка видеокарт значительно пополнилась и ядро 2.2.х больше практически не используется... В остальном же все верно и работоспособно.
1. Введение.
Для чего нужно устанавливать драйвер от NVIDIA?
В первую очередь - это дает возможность поддержки вашей системой
OpenGL, которая так необходима в играх. Во вторых - это использование
дополнительных возможностей вашей видеокарты, таких как TwinView,
TV-Out и т.д. Ну и в третьих - это все-таки большая производительность
драйвера, использующего оптимизированное ускорение для каждого чипсета
от NVIDIA.
Здесь не рассматриваются достоинства или недостатки драйверов от
NVIDIA, как и вопрос, почему эти драйверы не распространяются по
лицензии GPL или Open Source. Все это выходит за рамки данной статьи.
Большая часть информации для этой статьи взята из файла README
поставляемого с драйверами.
2. Поддерживаемое железо.
Как обычно, драйвер от NVIDIA является унифицированным и поддерживает
все собственные чипсеты, произведенные когда-либо, полный список
которых приведен ниже. Исключение составляет чипсет - RIVA 128/128ZX,
поддерживаемый драйвером `nv` в XFree86. Этот же драйвер с выходом
новой версии XFree86 4.3.0 от 23 февраля 2003 поддерживает
видеоадаптеры на следующих чипсетах Riva 128, 128ZX, TNT, TNT2 (Ultra,
Vanta, M64), GeForce (DDR, 256), Quadro, GeForce2 (GTS, Ultra, MX),
GeForce3, и Quadro2.
Полный список чипсетов поддерживаемых драйвером 4191 от NVIDIA:
- RIVA TNT
RIVA TNT2
RIVA TNT2 Ultra
Vanta
RIVA TNT2 Model 64
Aladdin TNT2
GeForce 256
GeForce DDR
Quadro
GeForce2 MX/MX 400
GeForce2 MX 100/200
GeForce2 Go
Quadro2 MXR/EX/Go
GeForce2 GTS
GeForce2 Ti
GeForce2 Ultra
Quadro2 Pro
GeForce4 MX 460
GeForce4 MX 440
GeForce4 MX 420
GeForce4 MX 440-SE
GeForce4 440 Go
GeForce4 420 Go
GeForce4 420 Go 32M
GeForce4 460 Go
Quadro4 550 XGL
GeForce4 440 Go 64M
Quadro4 NVS
Quadro4 500 GoGL
GeForce4 410 Go 16M
GeForce4 MX 440 AGP8X
GeForce4 MX 440SE AGP8X
GeForce4 MX 420 AGP8X
Quadro4 580 XGL
Quadro4 280 NVS
Quadro4 380 XGL
NV18M
NV18M Pro
GeForce2 Integrated GPU
GeForce4 MX Integrated GPU
GeForce3
GeForce3 Ti 200
GeForce3 Ti 500
Quadro DCC
GeForce4 Ti 4600
GeForce4 Ti 4400
NV25
GeForce4 Ti 4200
Quadro4 900 XGL
Quadro4 750 XGL
Quadro4 700 XGL
GeForce4 Ti 4800
GeForce4 Ti 4200 AGP8X
GeForce4 Ti 4800 SE
GeForce4 4200 Go
Quadro4 980 XGL
Quadro4 780 XGL
Quadro4 700 GoGL
NV30
NV30
NV30
NV30GL
NV30GL
Драйвер состоит из двух пакетов, которые нужно скачать и установить.
Пакет NVIDIA_GLX содержит библиотеки OpenGL и драйвер XFree86. Пакет
NVIDIA_kernel содержит модуль ядра, который необходим библиотекам из
пакета NVIDIA_GLX.
Устанавливать нужно оба пакета с совпадающими номерами версий.
Например, пакет NVIDIA_GLX-1.0-4191 должен использоваться только с
пакетом NVIDIA_kernel-1.0-4191.
Пакеты представлены в нескольких форматах: rpm, srpm и tar файлами.
Установка каждого типа пакета описано ниже. Выбор типа пакета в
основном зависит от персональных пристрастий. (Мне всегда по душе
приходились сжатые tar-файлы. Во первых они меньше по размеру, чем
rpm-пакеты. Во вторых - нет нужды пролистывать rpm-пакеты на предмет
определения, где и что располагается. А в третьих - MidnightCommander
позволяет разжимать tar-файлы нажатием одной кнопки.)
Двоичные rpm-пакеты используются только с ядром поставляемым
конкретным дистрибутивом (т.е. пакет
NVIDIA_kernel-1.0-4191.rh73up.i386.rpm должен использоваться с
однопроцессорным ядром поставляемым с RedHat 7.3).
Где возможно, NVIDIA поставляет отдельные rpm-пакеты для SMP
(мультипроцессорного) и однопроцессорного ядер каждого дистрибутива
(т.е. NVIDIA_kernel-1.0-4191.rh73smp.i686.rpm и
NVIDIA_kernel-1.0-4191.rh73up.i686.rpm соответственно). Плюс к этому
поставляются пакеты зависящие от архитектуры процессора или типа ядра
- i386, i586, i686, Athlon, Enterprise, Secure, Bigmem и т.д.
Если вы обновляли свое ядро (вручную или через обновление
дистрибутива) или специфичный rpm-пакет NVIDIA_kernel не представлен
для вашего дистрибутива, то необходимо использовать srpm-пакет с
исходниками NVIDIA_kernel или tar-файл.
Напротив, rpm-пакет NVIDIA_GLX не зависит от версии ядра и поэтому
использование srpm-пакета с исходниками необязательно. Устанавливайте
пакет NVIDIA_GLX rpm или tar файлом.
Если вы затрудняетесь в выборе файла для установки, то вы можете
использовать скрипт 'NVchooser.sh' находящийся на страничке для
скачивания драйверов. Запустив который в оболочке командой 'sh
NVchooser.sh' вы получите рекомендуемый тип пакетов для вашей системы.
Примечание: Почаще заглядывайте в репозиторий rpm-пакетов вашего
дистрибутива. Наверняка необходимый для вашей системы пакет уже
собран.
4. Минимальные требования к установке.
При установке бинарных пакетов:
linux kernel 2.2.12, смотриться так:
Код: Выделить всё
$ cat /proc/version
XFree86 4.0.1
$ XFree86 -version
Kernel modutils 2.1.12
$ insmod -V
необходимы следующие программы:
- binutils 2.9.5
$ size --version
GNU make 3.77
$ make --version
gcc 2.91.66
$ gcc --version
Все официальные релизы kernel от 2.2.12 и выше поддерживаются.spec-helper rpm
$ rpm -qi spec-helper
Предрелизы версий, как '2.4.3-pre2' не поддерживаются, как и
разрабатываемые версии 2.3.x или 2.5.x.
Если вы используете XFree86, но не имеете файл /var/log/XFree86.0.log,
тогда вы вероятно имеете версию 3.x XFree86 и должны повысить до
версии 4.x.
При настройке XFree86 4.x первый раз, лучше всего использовать open
source драйвер поставляемый с XFree86 (например 'nv', 'vga' или
'vesa'). Если XFree86 нормально функционирует с этим драйвером, то
очень просто будет переключиться на драйвер от NVIDIA.
Следует заметить, что новые графические процесоры NVIDIA могут не
работать со старыми версиями драйвера 'nv' поставляемого с XFree86.
Для примера, драйвер 'nv' XFree86 версии 4.0.1 не распознает семейство
процессоров GeForce2 и Quadro2 MXR. Однако, это было исправлено в
XFree86 версии 4.0.2.
5. Установка пакетов.
Перед началом установки драйвера вы должны выйти из X сервера. В
дополнении вы должны установить загрузку в консоль по умолчанию и
отключить автозагрузку X.
Примечание: Я этого не делал. Просто устанавливал драйвер из
консольного терминала под KDE, конфигурировал и нажимал "волшебную"
комбинацию клавиш - Ctrl-Alt-Backspace. И тут же видел результат - при
перезагрузке появился логотип NVIDIA.
Теперь настало время перейти непосредственно к установке. Для
простоты, в названиях пакетов не указана версия драйвера. Естественно,
что при установке необходимо вводить полное название файла. Т.е. когда
говориться 'NVIDIA_kernel.tar.gz' вы должны указывать полное имя:
'NVIDIA_kernel.1.0-4191.tar.gz'. И еще. Сначала всегда устанавливается
модуль драйвера ядра(NVIDIA_kernel),а потом библиотеки OpenGL
(NVIDIA_GLX).
Установка из RPM-пакетов
Ставим модуль ядра:
Код: Выделить всё
$ rpm -ivh NVIDIA_kernel.i386.rpm
Код: Выделить всё
$ rpm -ivh NVIDIA_GLX.i386.rpm
Переустанавливаем модуль ядра:
Код: Выделить всё
$ rpm -Uvh NVIDIA_kernel.i386.rpm
ошибки в деинсталляторе старых версий rpm-пакетов NVIDIA.
Поэтому сначала удаляем пакет OpenGL из системы:
Код: Выделить всё
$ rpm -e NVIDIA_GLX
Код: Выделить всё
$ rpm -ivh NVIDIA_GLX.i386.rpm
Перед сборкой собственного модуля ядра NVIDIA_kernel для вашей системы
вам необходиться в том, что у вас установлены заголовочные файлы для
вашего ядра (RedHat, для примера, включает заголовочные файлы в
rpm-пакет под названием 'kernel-source').
Пересобирем ядра с флагом '--rebuild':
Код: Выделить всё
$ rpm --rebuild NVIDIA_kernel.src.rpm
'--rebuild', для этого используем команду:
Код: Выделить всё
$ rpmbuild --rebuild NVIDIA_kernel.src.rpm
/usr/src/redhat/RPMS/i386/NVIDIA_kernel.i386.rpm, хотя пути могут
отличаться.
Используем указанный путь для установки:
Код: Выделить всё
$ rpm -ivh /usr/src/redhat/RPMS/i386/NVIDIA_kernel.i386.rpm
Код: Выделить всё
$ rpm -Uvh /usr/src/redhat/RPMS/i386/NVIDIA_kernel.i386.rpm
раздела для установки или переустановки NVIDIA_GLX из rpm-пакетов.
Установка / переустановка из TAR-файла
Распакуем файлы:
Код: Выделить всё
$ tar xvzf NVIDIA_kernel.tar.gz
$ tar xvzf NVIDIA_GLX.tar.gz
прошло нормально, то модуль компилируется, копируется в нужное место и
пробует загрузиться в запущенное ядро.
Код: Выделить всё
$ cd NVIDIA_kernel
$ make install
с модулем ядра.
Код: Выделить всё
$ cd ../NVIDIA_GLX
$ make install
нужное место.
Заметьте, что команда 'make install' для каждого пакета удаляет все
установленные предыдущие драйвера от NVIDIA.
6. Редактирование файла XF86Config.
Когда был выпущен XFree86 4.0, то он использовал немного отличный
синтаксис конфигурационного файла от версий 3.x., для того, чтобы обе
версии XFree86 могли сосуществовать на одной системе. Было решено, что
XFree86 4.x будет использовать конфигурационный файл
'/etc/X11/XF86Config-4' только, если такой существует, иначе
используется файл '/etc/X11/XF86Config' (на самом деле поиск ведется
не так просто, пожалуйста, смотрите man-страницу XF86Config для
полного описания путей поиска).
Будьте, уверены, что вы знаете, как XFree86 использует
конфигурационный файл.
Если вы не имеете рабочего файла XF86Config, то есть несколько
различных путей для начала. Можно использовать образец
конфигурационного файла идущего с XFree86. Можно использовать образец
файла включенного в пакет NVIDIA_GLX (он устанавливается в
/usr/share/doc/NVIDIA_GLX-1.0/). Вы также можете использовать
программу типа 'xf86config'. Некоторые дистрибутивы поставляют
собственную утилиту для генерирования файла XF86Config.
Если вы имеете рабочий файл XF86Config работающий с различными
драйверами (такими, как 'nv' или 'vesa' драйверами), тогда просто
нужно найти нужный раздел Device и заменить строку:
[code="xorg]Driver "nv" (или Driver "vesa")[/code]
на
[code="xorg]Driver "nvidia"[/code]
В разделе Module добавить строку если ее нет:
Код: Выделить всё
Load "glx"
Код: Выделить всё
Load "dri"
Load "GLcore"
XFree86 (дополнительные опции будут описаны в другой статье, например,
как включить TV-Out на видеокартах имеющих выход на телевизор).
Теперь после всех настроек можно давать старт (рестарт) X-серверу и
использовать новые библиотеки OpenGL от NVIDIA.
7. Заключение.
Я не знаю, какая получилась статья. Хотелось написать простым языком,
а получился почти дословный перевод readme от NVIDIA. Я надеюсь, что
это правильнее, т.к. не все являются гуру Linux и подробности не
помешают (меня вообще можно назвать "чайником"). Я буду очень рад,
если это статья поможет кому-то самостоятельно установить и настроить
драйвер от NVIDIA. Поэтому все отзывы и замечания приветствуются.