Автор статьи: Alexey Dmitriev Дата: 06.08.2003
Руководство по установке
NVIDIA Accelerated Linux Driver Set.
version 2.5
Автор – Алексей Дмитриев aka Dr.Spectre (dalex@mail.ru).
ChangeLog:
2.5 - убрана информация о дополнительных патчах для устновки на ядро 2.6, так как последние версии драйвера работают с ним нормально.
2.4 – добавлена информация о установке драйверов на ядро 2.6
В этой статье мы рассмотрим, как установить, настроить, и использовать драйвера к видеокартам NVIDIA. Взять последнюю версию драйвера и GLX можно здесь: Так как у меня (как наверно и у большинства читающих это руководство) архитектура IA-32, то мне нужна именно последняя версия Linux IA32. Если Вы хотите узнать о более детальной настройке NVIDIA Accelerated Linux Driver Set, Вы должны обратиться к Readme, прилагаемому к драйверу.
Минимальные требования к програмному обеспечению
o linux kernel 2.2.12 # cat /proc/version
o XFree86 4.0.1 # XFree86 -version
o Kernel modutils 2.1.121 # insmod -V
o binutils 2.9.5 # size --version
o GNU make 3.77 # make --version
o gcc 2.91.66 # gcc --version
Установка NVIDIA_KERNEL и NVIDIA_GLX из tar и rpm файлов.
С недавнего времени NVidia отдает свои драйвера в виде инсталлятора, типа вот такого - NVIDIA-Linux-x86-1.0-7676-pkg1.run , который сам компилирует модуль ядра и GLX библиотеки, и даже кажется прописывает необходимые изменения в конфигурационных файлах. Но так как я е люблю когда что-то или кто-то делает в моем компьютере, а я не вижу, что именно, то я решил взять старые добрые архивы с исходниками, чтобы ручками собрать все, что нужно и этими же ручками прописать необходимые изменения в конфигурационных файлах. К моему сожалению на странице с драйвером их не нашлось, поэтому я решил посмотреть, нет ли их на ftp (ftp://download.nvidia.com/XFree86/Linux-x86/). К сожалению там архивов тоже не оказалось. Но зато там я увидел NVIDIA_GLX-1.0-4496.src.rpm и NVIDIA_kernel-1.0-4496.src.rpm. Вот их то я и поставил на закачку. После того, как оба файла закачались, я с помощью mc (Midnight Commander) вытащил из них tar.gz файлы (это очень просто, наводишь курсор на файл и щелкаешь Enter. Потом переходишь в директорию Contents.spio внутри rpm и видишь там заветный файлик, который с помощью клавиши F5 можно скопировать куда хочется).
Тарболы с исходниками можно получить из NVIDIA-Linux-x86-1.0-7676-pkg1.run, запустив его с ключем --extract-only. В результате вы получите два архива с исходниками.
Кто-то скажет зачем такие извращения, когда можно просто пересобрать src.rpm в бинарный пакет и просто установить его. Но, если Вы общаетесь с rpm, то должны знать что при сборке rpm из src.rpm может возникнуть много неожиданностей, которые просто нельзя охватить в данном тексте.
Поэтому tar.gz и только!
Для тех, кто все таки захотел воспользоваться инсталлером, вы должны скачать файл NVIDIA-Linux-x86-1.0-7676-pkg1.run , и запустить его такой командой:
sh NVIDIA-Linux-x86-1.0-7676-pkg1.run
Файл .run это самораспаковывающийся архив. После запуска он распаковывает содержимое и запускает утилиту `nvidia-installer`.
Файл .run содержит некоторые дополнительные ключи командной строки:
--info (показывает информацию о .run файле)
--check (проверяет содержимое архива)
--extract-only (разворачивает содержимое и не запускает утилиту 'nvidia-installer')
--help (показывает информацию о ключах командной строки)
Помните! Перед началом установки Вы должны выйти из X сервера.
Для того, чтобы установить драйвера из tar файла, распакуйте каждый файл:
$ tar xzf NVIDIA_kernel.tar.gz
$ tar xzf NVIDIA_GLX.tar.gz
Перейдите в директорию NVIDIA_kernel. Наберите make install.
Эта команда скомпилирует модуль ядра nvidia.o, отлинкует nvidia.o, скопирует nvidia.o на место, и сделает попытку включения nvidia.o в работающее ядро:
$ cd NVIDIA_kernel
$ make install
Важно чтобы у вас стояла та же версия компилятора, которой собиралось активное ядро, иначе будет ругаться на несоответствие версий.
Проверьте чтобы в /lib/modules/2.2.х/video (для ядер 2.2) или в /lib/modules/2.4.x/kernel/video (для ядер 2.4) лежал файл nvidia.o, а в файле конфигурации модулей /etc/conf.modules или /etc/modules.conf или /etc/modutils/alias (в зависимости от системы) была такая строка ‘alias char-major-195 nvidia.o’ (в строке можно ввести дополнительные параметры, полный список которых можно увидеть с помощью команды "modinfo nvidia.o".
Вот некоторые из них:
• NVreg_EnableAGPSBA (AGP Side Band Addressing, по умолчанию выключено, даже если всеми поддерживается)
• NVreg_EnableAGPFW (AGP Fast Write, по умолчанию выключено, даже если всеми поддерживается)
• NVreg_ReqAGPRate (позволяет насильственно понизить или повысить скорость AGP, битовая маска: 1x, 2x, 4x)
• NVreg_UpdateKernelAGP (если 0, то вмешиваться в работу agpgart; попробуйте оба варианта, если имеются проблемы со стабильностью работы драйвера)
• NVreg_EnableVia4x
• NVreg_EnableALiAGP
Например, если Вы загружаете модули вручную:
insmod nvidia.o NVreg_ReqAGPRate=2
Если вы используете modprobe (/etc/modules.conf):
alias char-major-195 nvidia.o
options nvidia.o NVreg_ReqAGPRate=2 # force AGP Rate to 2x
Затем переходим в директорий NVIDIA_GLX.
Наберите make install -- эта команда скопирует файлы на место:
$ cd ../NVIDIA_GLX
$ make install
Имейте в виду что make install удалит все предыдущие версии установленных NVIDIA drivers.
Так как у меня один раз скрипт отработал не до конца, то лучше проверить, все ли стало куда надо.
Проверьте наличие всех компонентов:
/usr/X11R6/lib/modules/drivers/nvidia_drv.o
/usr/X11R6/lib/modules/extensions/libglx.so.x.y.z
/usr/X11R6/lib/modules/extensions/libglx.so -> libglx.so.x.y.z (симлинк)
/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/libGLcore.so.x.y.z
/usr/lib/libGLcore.so.x -> libGLcore.so.x.y.z (симлинк)
/lib/modules/`uname -r`/video/nvidia.o, или
/lib/modules/`uname -r`/kernel/drivers/video/nvidia.o
Установка пакета NVIDIA_kernel создает файлы в директории /dev:
crw-rw-rw- 1 root root 195, 0 Feb 15 17:21 nvidia0
crw-rw-rw- 1 root root 195, 1 Feb 15 17:21 nvidia1
crw-rw-rw- 1 root root 195, 2 Feb 15 17:21 nvidia2
crw-rw-rw- 1 root root 195, 3 Feb 15 17:21 nvidia3
crw-rw-rw- 1 root root 195, 255 Feb 15 17:21 nvidiactl
Установка драйверов 1.0-4496 с ядром Linux версии 2.6. (информация взята с
Редактирование вашего файла XF86CONFIG.
XFree86 версии 4.0 и выше использует файл конфигурации XFree86 4.x/etc/X11/XF86Config-4.
Если вы сомневаетесь, найдите строку начинающуюся с (==) Using config file: в вашем логе XFree86 (/var/log/XFree86.0.log).
Если у вас нет рабочего файла XF86Config, для работы можно использовать примерный конфигурационный файл который идет с XFree86, или тот который идет вместе с пакетом NVIDIA_GLX (он установлен в /usr/doc).
Вы также можете использовать программу xf86config.
Для получения большей информации о синтаксисе файла XF86Config, смотрите ман (man XF86Config).
Если у вас уже есть файл XF86Config, работающий с другим драйвером (например, nv драйвер), тогда все, Вам нужно делать, найти секцию Device и заменить:
Driver nv на Driver nvidia
В секции Module, убедитесь что есть строка:
Load glx
Вы должны удалить или что правильнее закомментарить (#) следующие строки:
Load dri
Load GLcore
если они существуют. Есть также многочисленные опции, которые могут быть добавлены к файлу XF86Config для тонкой настройки драйвера NVIDIA XFree86. Я опишу их ниже.
Если после этих действий у Вас Х сервер работает плохо, или вообще не работает, самое время прочитать ЧаВо.
Установленные компоненты.
NVIDIA Accelerated Linux Driver Set состоит из следующих компонентов (файл в скобках - полное имя компонента после установки; x.y.z обозначает текущую версию, симлинки создаются во время установки):
o kernel module (/lib/modules/`uname -r`/video/nvidia.o или /lib/modules/`uname -r`/video/nvidia.o).
Этот модуль ядра обеспечивает доступ низкого уровня к вашим аппаратным средствам NVIDIA для всех вышеуказанных компонентов. Обычно загружается в ядро когда сервер X запущен, и используется драйвером XFree86 и GL. nvidia.o состоит из двух частей: двоичная-только ядро, и ядро интерфейса, которое должно быть скомпилировано особо для вашей версии ядра. Имейте В Виду, что ядро linux нет имеет последовательный двоичный интерфейс подобно XFree86, так что важно, чтобы этот интерфейс ядра совпадал с версией ядра, которое Вы используете.
o XFree86 driver (/usr/X11R6/lib/modules/drivers/nvidia_drv.o);
этот драйвер нужен для XFree86 чтобы использовать вашу карту NVIDIA. nvidia_drv.o драйвер совместим с XFree86 4.0.1 или выше.
o модуль расширений GLX для XFree86;
(/usr/X11/lib/modules/extensions/libglx.so.x.y.z); этот модуль используется XFree86 для поддержки glx.
o OpenGL library (/usr/lib/libGL.so.x.y.z); эта библиотека обеспечивает вход API для всех OpenGL и функциональные вызовы GLX.
o OpenGL core library (/usr/lib/libGLcore.so.x.y.z); это библиотека подразумевающая использование libGL и libglx. Она содержит ядро, ускоряющее 3D. Вам не следует явно загружать ее в своем файле XF86Config --, об этом позаботиться libglx.
o OpenGL and GLX header files
(/usr/share/doc/NVIDIA_GLX-1.0/include/GL/gl.h, и /usr/share/doc/NVIDIA_GLX-1.0/include/GL/glx.h).
o ELF TLS OpenGL and OpenGL core libraries
(/usr/lib/tls/libGL.so.x.y.z and /usr/lib/tls/libGLcore.so.x.y.z).
Linux systems that utilize glibc 2.3 or greater with tls support enabled, use a new mechanism for thread local storage (TLS). This mechanism is incompatible with NVIDIA's previous thread local storage support; therefore, special ELF TLS libraries are provided, and installed in /usr/lib/tls/ on systems that support it.
The runtime loader will select between the OpenGL libraries installed in /usr/lib/, and those installed in /usr/lib/tls/.
Первый компонент (модуль ядра nvidia.o) включен в пакет NVIDIA_kernel, остальные компоненты - в пакет NVIDIA_GLX.
Настройка AGP
Есть несколько вариантов настроек модуля ядра nvidia.o для использования AGP: вы можете использовать модуль AGP Nvidia (NVAGP), или модуль AGP, который входит в ваше ядро (AGPGART). Это управляется через опцию "NvAGP" в вашем файле XF86Config-4:
Option "NvAgp" "0" ... выключает поддержку AGP
Option "NvAgp" "1" ... разрешает использовать NVAGP, если возможно
Option "NvAgp" "2" ... разрешает использовать AGPGART, если возможно
Option "NvAGP" "3" ... попытаться использовать AGPGART; если не получится использовать NVAGP
По умолчанию стоит 3 (до 1.0-1251 по умолчанию было 1).
Вы должны использовать тот модуль AGP, который лучше работает с AGP чипсетом на вашей материнской плате.
Если вы испытываете проблемы со стабильностью, вы можете отключить AGP и посмотреть решит ли это ваши проблемы. Также вы можете поэкспериментировать с другими модулями AGP.
Вы можете в любое время посмотреть текущий статус AGP через интерфейс файловой системы /proc (смотри Приложение O).
Для использования модуля AGPGART, его поддержка должна быть включена в вашем ядре или статически или в виде модуля.
Поддержка NVIDIA AGP не может использоваться если вы откомпилили AGPGART статически.
Рекомендуется собирать AGPGART ака модуль, чтобы была возможность убедиться, что он не загружен, когда вы пытаетесь использовать NVIDIA AGP.
Следующие наборы чипсетов поддерживают NVIDIA AGP; для остальных рекомендуется собрать и использовать AGPGART в виде модуля.
o Intel 440LX, Intel 440BX, Intel 440GX, Intel 815 ("Solano"), Intel 820 ("Camino"), Intel 830, Intel 840 ("Carmel"), Intel 845 ("Brookdale"), Intel 845G, Intel 850 ("Tehama"), Intel 860 ("Colusa"), AMD 751 ("Irongate"), AMD 761 ("IGD4"), AMD 762 ("IGD4 MP"), VIA 8371, VIA 82C694X, VIA KT133, VIA KT266, RCC 6585HE, Micron SAMDDR ("Samurai"), Micron SCIDDR ("Scimitar"), nForce AGP, ALi 1621, ALi 1631, ALi 1647, ALi 1651, ALi 1671, SiS 630, SiS 633, SiS 635, SiS 645, SiS 730, SiS 733, SiS 735, SiS 745.
Разгон видеокарты с помощью утилиты nvclock
NVClock позволяет вручную изменять тактовую частоту процессоров графических карт на основе набора микросхем NVIDIA, чтобы добиться предельной производительности.
Установка:
• взять здесь (http://www.evil3d.net/products/nvclock/) и развернуть исходные тексты.
• ./autogen.sh
• ./configure
• make
• make install
o /usr/local/bin/nvclock
Утилита не сохраняет измененные значения частот в NVRAM, так что ее необходимо вызывать каждый раз после запуска X Windows (например, поместить в .xinitrc). Если запускать ее до X Windows, то требуются права root, а модуль nvidia может сбросить изменения. Ключи запуска:
• -i (выдать информацию о текущих установках)
• -n MHz (установить частоту GPU)
• -m MHz (установить частоту памяти)
Не все значения частоты памяти возможны, например они устанавливаются с шагом 7 МГц (утилита сообщает реально установленную частоту). Утилита имеет свои представления о максимально возможных частотах. Их можно преодолеть с помощью ключа -f, но я не советую. Рекомендуется постепенно повышать частоту GPU (пока компьютер не зависнет ;), затем перезагрузиться и постепенно повышать частоту памяти (пока опять не зависнет ;). Не рекомендуется работать постоянно на максимально возможной частоте - это сильно сокращает время жизни видеоплаты и может привести к зависаниям при повышении температуры за бортом в самый неподходящий момент.
Интерфейс PROC
Интерфейс файловой системы /proc позволяет вам получать информацию во время работы о установленных драйверах, картах и статусе AGP. Эта информация находится в нескольких файлах в /proc/driver/nvidia. Это краткое описание для каждого этих файлов:
o version
Версия драйвера и версия компилятора, который использовался для создания модуля ядра.
o cards/0...3
Обеспечивает информацию о каждом включенном графическом адаптере NVIDIA (имя модели, IRQ, версия BIOS, тип шины). Помните, что версия BIOS доступна, только если работает Х сервер.
o agp/card
Информация о возможностях AGP установленных карт AGP.
o agp/host-bridge
Информация о host bridge (модель и возможности AGP).
o agp/status
Текущий статус AGP. Присутствует, если поддержка AGP включена в вашей системе, драйвер AGP используется.
ЧАсто задаваемые ВОпросы
В: При сборке модуля ядра NVIDIA появляется такая ошибка:
You appear to be compiling the NVIDIA kernel module with
a compiler different from the one that was used to compile
the running kernel. This may be perfectly fine, but there
are cases where this can lead to unexpected behaviour and
system crashes.
If you know what you are doing and want to override this
check, you can do so by setting IGNORE_CC_MISMATCH.
In any other case, set the CC environment variable to the
name of the compiler that was used to compile the kernel.
О: Вы собираете модуль ядра NVIDIA версией компилятора, отличной от версии которой было собрано активное ядро.
Для того, чтобы проверить версию компилятора gcc, которым было собрано ядро Linux, наберите команду:
cat /proc/version
Для проверки версии gcc, которой вы пытаетесь собрать модуль NVIDIA, наберите команду:
gcc -v
В: Как я могу запустить диагностику проблем с видео?
О: Один из вариантов диагностики проблем в XFree86 - файл лога в директории /var/log (файл называется: "/var/log/XFree86.<#>.log", где "<#>" версия сервера - часто это 0).
Строки, начинающиеся на "(II)" это информация, "(WW)" - предупреждения, а "(EE)" - это ошибки.
В: Как я могу сделать так чтобы в логе XFree86 писались более подробные сообщения?
О: По умолчанию, драйвер NVIDIA выводит относительно немного сообщений в stderr (стандартный вывод ошибок) и в файл лога XFree86. Если вы испытывате проблемы, возможно будет полезным включить избыточный вывод сообщений, используя в командной строке XFree86 ключи "-verbose" и "-logverbose". Драйвер NVIDIA будет выводить больше сообщений, если уровень вывода 5 или выше (по умолчанию в XFree86 уровень вывода 1 для stderr и уровень 3 для файла лога). Итак, для того, чтобы включить избыточный уровень вывода сообщений из драйвера NVIDIA в файл лога и stderr, вы можете запустить X сервер таким образом: 'startx -- -verbose 5 -logverbose 5'.
В: Мой X сервер не стартует, а лог файл содержит такую ошибку:
"(EE) NVIDIA(0): Failed to initialize the nvidia.o kernel module!"
О: Скорее всего ваш модуль ядра nvidia.o не функционирует нормально или не загружен.
Если вы видите в файле лога что-либо подобное "(EE) NVIDIA(0):
failed to initialize the nvidia.o kernel module!", то наиболее вероятно, что проблема с модулем ядра nvidia.o. Сначала проверьте, что модуль загружен. Для этого используйте '/sbin/lsmod'; если в списке нет nvidia.o, то попробуйте загрузить модуль явно, используя 'insmod nvidia.o' или 'modprobe nvidia.o', выйдя перед этим из X сервера. Если вы получили сообщение об unresolved symbols, значит модуль ядра был собран, используя файлы kernel headers версии, отличающейся от активного ядра.
Наконец, nvidia.o может выдавать сообщения об ошибках - для просмотра проверьте файл /var/log/messages, или другой файл, в который syslog перенаправляет сообщения ядра.
В: X сервер стартует, но приложения OpenGL applications сразу вываливаются.
О: Если сервер X стартует, а с OpenGL проблемы, то скорее всего проблемы с путями к библиотекам, или битыми символическими ссылками.
В: Приложения OpenGL вылетают с ошибкой:
Error: Could not open /dev/nvidiactl because the permissions
are too restrictive. Please see the FREQUENTLY ASKED QUESTIONS
section of /usr/share/doc/NVIDIA_GLX-1.0/README for steps
to correct.
О: Скорее всего модуль PAM заменил разрешения на файлы устройства NVIDIA. Для исправления этой проблемы рекомендуется отключить эту опцию. У разных дистрибутивов файлы, контролирующие эту функцию находятся в разных местах.
Как пример, в вашей системе это может находиться в файле /etc/security/console.perms вы должны отредактировать его, удалив строку, начинающуюся на "". Если ваша система имеет файл /etc/logindevperms, то вы должны отредактировать файл, удалив строку /dev/nvidiactl. Этот шаг помешает системе защиты PAM изменить разрешения на файлы устройства NVIDIA device. Затем, вы должны установить разрешения на файлы устройства командой:
chmod 0666 /dev/nvidia* chown root /dev/nvidia*
В: Приложения OpenGL вылетают и появляется такое сообщение:
WARNING: Your system is running with a buggy dynamic loader.
This may cause crashes in certain applications. If you
experience crashes you can try setting the environment
variable __GL_SINGLE_THREADED. For more information please
consult the FREQUENTLY ASKED QUESTIONS section in the file
/usr/share/doc/NVIDIA_GLX-1.0/README.
О: Динамический загрузчик в вашей системе имеет баг при работе с приложениями.
Это можно исправить введя в bash команду
export __GL_SINGLE_THREADED
или если у вас csh
setenv __GL_SINGLE_THREADED
В: Когда я играю в Quake3, он вылетает при смене видео режима; в чем дело?
О: Вероятно это проблема описанная выше.
Это можно исправить введя в bash команду
export __GL_SINGLE_THREADED
или если у вас csh
setenv __GL_SINGLE_THREADED
В: Когда я стартую X сервер, он вылетает а в файле лога есть такое сообщение:
(II) LoadModule: "nvidia"
(II) Loading /usr/X11R6/lib/modules/drivers/nvidia_drv.o
No symbols found in this module
(EE) Failed to load /usr/X11R6/lib/modules/drivers/nvidia_drv.o
(II) UnloadModule: "nvidia"
(EE) Failed to load module "nvidia" (loader failed, 256)
(EE) No drivers available.
О: В драйвере nvidia_drv.o были удалены нужные символы;
Обычно это происходит при установке из rpm и в этом случае нужно обновить версию rpm. А лучше, как советовали выше ставить драйвера из tar файлов.
В: Моя система работает неустойчиво. В чем дело?
О: Ваши проблемы могут быть связаны с AGP. Смотрите приложение, посвященное детальной настройке AGP.
В: Модуль ядра не грузится динамически, когда стартует Х сервер;
Я всегда перед этим должен делать 'modprobe nvidia.o'. В чем дело?
О: Убедитесь, что линия "alias char-major-195 nvidia.o" присутствует в вашем файле конфигурации модулей, это "/etc/conf.modules", или "/etc/modules.conf" или "/etc/modutils/alias" в зависимости от дистрибутива.
В: Почему приложения OpenGL работают медленно?
О: Вероятно ваша система использует другую библиотеку OpenGL, а не ту которая устанавливается с драйверами. Проверьте наличие компонентов:
/usr/X11/lib/modules/extensions/libglx.so.x.y.z
симлинк /usr/X11/lib/modules/extensions/libglx.so -> libglx.so.x.y.z
/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/libGLcore.so.x.y.z
симлинк /usr/lib/libGLcore.so.x -> libGLcore.so.x.y.z
В: Есть проблемы при запуске Quake2.
О: При установке Quake2 в директории программы создается символическая ссылка libGL.so, которая указывает в libMesaGL.so. Эта ссылка должна быть удалена или переименована. Затем, чтобы работать с Quake2 в режиме OpenGL, Вы должны набрать:
quake2 +set vid_ref glx +set gl_driver libGL.so
В: Есть проблемы при запуске Heretic II.
О: Та же проблема что и с Quake 2 нужно удалить ссылку libGL.so.
После этого программа должна найти libGL.so от Nvidia.
В: Могу ли я получить gl.h или glx.h для создания приложений OpenGL?
О: Предусмотрены gl.h и glx.h файлы от Nvidia для разработки OpenGL приложений. Эти файлы находятся в /usr/share/doc/NVIDIA_GLX-1.0/include/GL
Для использования этих файлов скопируйте их в /usr/include/GL.
В: Могу я получать уведомления о новых версиях драйверов?
О: Да. Заполните форму здесь:
В: Сервер X вываливается с ошибкой "Failed to allocate LUT context DMA"
О: Это одно из возможных последствий компиляции модуля nvidia.o версией компилятора, отличающейся от той, которой собрано ваше ядро (см. выше).
В: Если после того как вы запустили Кваку, руководствуясь советами Dr. Spectre, и она у вас валится в кору, как только на горизонте появится первый попавшийся монстр, то вам придется еще настраивать взаимодействие nvidia.o и AGP. Такое иногда случается в определенных комбинациях материнских и видео плат (скажем, у меня это I440LX и RivaTNT2 32 MB).
О: Решения предложены Geekkoo
Возможных решений 2. Первое и самое простое - вырубить AGP. Для этого просто впишите в XF86Config в секции Section Device
Identifier NVidia
Driver nvidia
строку - Option NvAgp 0.
При этом все что вы потеряете - это скорость. Но не много - у меня glxgears крутятся со скоростью 510 и 460 FPS с AGP и без него. Как уже писал Dr. Spectre, Nvidia может пользоваться как своим собственным agp модулем, так и системным модулем agpgart (NvAGP=1 и 2 соответственно.
NvAGP=3 - выбор из доступных модулей). Однако, изменение этого параметра не влияет ни на устойчивость, ни на скорость работы.
Если же вы старый оверклокер и для вас 10% потеря производительности - нож острый, то вот вам сложный способ.
Как написано в файле os-registry.c ядерного модуля, есть следующие параметры драйвера (приведены default значения), имеющие отношение к agp:
NVreg_EnableAGPFW = 0; (fast-write)
NVreg_EnableAGPSBA = 0; (side-band addressing)
Небольшая модификация кода os-registry.c, состоящая в замене #ifdef 0 -> #ifdef 1, позволяет получить еще несколько параметров:
NVreg_ReqAGPRate = 0x7; (==1|2|4 - маска позволяющая устанавливать скорость AGP шины)
NVreg_VideoMemoryTypeOverride = 1; (как написано в комментариях, некоторые карты неверно сообщают свой тип памяти, когда при загрузке модуль пытается уситановить его.
Для этого может потребоваться вручную задать этот тип: SDRAM = 1, SGRAM = 2)
NVreg_EnableVia4x = 0;
NVreg_EnableALiAGP = 0; (card-specific - read comments)
Теперь вам методом проб и ошибок (после того как вы переустановите модифицированный nvidia.o), предстоит найти наилучшие параметры. При этом не забывайте перед перезапуском X-ов делать rmmod nvidia.o (параметры считываются при загрузке модуля). Менять параметры нужно в файле /etc/ modules.conf (зависит от дистрибутива - может быть /etc/conf.modules, /etc/modutils/alias). Вот как он выглядит у меня:
alias char-major-195 nvidia.o.gz (псевдоним для драйвера - я его запаковал после установки, поэтому суффикс .gz)
options nvidia.o.gz NVreg_ReqAGPRate = 1 (AGPRATE =1x)
options nvidia.o.gz NVreg_EnableAGPFW = 1 (fast-write enabled)
options nvidia.o.gz NVreg_VideoMemoryTypeOverride = 1 (на всякий случай)
Квак #2 - при таких параметрах работает. Но screensaver atlantis все равно segfaltится.
Если эти вопросы и ответы не помогли Вам найти решение возникшей у Вас проблемы, то обращайтесь на www.linuxportal.ru/forums - там Вам постараются помочь.
|