OpenWay|POSIX-saga|FreeBSD etc.|All Linux|Apps|POSIX-live|SiteMap
FreeBSD и другие
(C) Указанные авторы, 2004, отныне и вовек
Links|Install|System|Use|Admin|DFBSD|BSD|Other

Ставим драйвер Nvidia на FreeBSD-5.x

Валерий Моторин ака wolf_black

Установка драйвера видеокарты Nvidia в системе FreeBSD изредка вызывает некоторые затруднения. Если вы при установке системы сделали конфигурацию своего XF86Config, то разработчиками вам будет предложен свободный драйвер nv. Все шаги, чтобы заставить Иксы запуститься, стандартны, и описанны не раз. Впрочем, если вы уже конфигурировали ранее Иксы в Linux, затруднений не возникнет.

То есть вам нужно установить Иксы (лучше версии 4.3.0), идущие с любым комплектом FreeBSD 5.X на первом диске. А потом запустить под root команду:

$ xf86config

После чего будет создан файл /etc/X11/XF86Config. Впрочем, это же можно сделать из утилиты sysinstall в секции Configure -> XFre86 -> xf86config при установке системы или после неё. Далее, если Иксы - версии 4.3.0, то нужно (зчем -станет ясным из дальнейшего - А.Ф.) создать файл /etc/X11/XF86Config-4 и перекинуть в него все записи из /etc/X11/XF86Config. Затем в этом файле смотрим, что в секции Device обязательно есть строка -

Driver "nv".

Несколько подробней про конфигурирование Иксов для FreeBSD написано здесь http://www.freebsd.org.ru/handbook/x-config.html.

Но установка свободного драйвера nv не позволит вам использовать все возможности видеокарты, в том числе 3D-графику и OpenGL, то есть вы не сможете запусать 3D-скринсейверы, играть в любимые игрушки - типа quake3, пользоваться приложениями xtraceroute или maya. Но для этого есть драйвер, разработанный самой компанией Nvidia. Описание установки - Readme.txt, идущий с драйвером, подробно описывает процесс установки, но он умалчивает о некоторых моментах.

Вот этапы установки этого драйвера (всё делать под рутом):

  1. Проверяем, что в конфигурации ядра /sys/i386/conf/GENERIC есть опции для версий системы STABLE (то есть на данный момент - 4.X):
    	options USER_LDT
    	options SYSVSHM
    	
    А для версий Current (то есть 5.X) достаточно:

    	options SYSVSHM 
    	
    Если их нет, то придётся пересобрать ядро с этими опциями.
  2. Проверяем, чтобы был устанновленн комплект эмулятора linux_base, идущий с первым CD или устанавливаем его из портов - /usr/ports/emulators/linux_base/. Это нужно для работы драйвера.

  3. Получаем драйвер. Здесь существует два способа, первый из которых заключается в том, чтобы скачать драйвер отсюда - http://www.nvidia.com/object/freebsd_1.0-4365 и установить, следуя readme.txt. Но лучше использовать рекомендованный разработчиками FreeBSD способ, описанный ниже.
    Второй способ - это собрать из портов. Для этого идём в /usr/ports/x11/nvidia-driver. Перед сборкой некоторые специалисты рекомендуют указать следующие флаги в Makefile:
    	WITH_FREEBSD_AGP=yes
    	WITHOUT_LINUX=yes
    	WITH_FORCE_AGP_RATE=yes
    	
    Затем набираем всего одну команду:
    	# make 
    	
    и ждём окончания сборки, после которой появится каталог work в текущем каталоге.
  4. Установка драйвера. Заходим в каталог /usr/ports/x11/nvidia-driver/work/NVIDIA-FreeBSD-x86-1.0-4365/, набираем команду
    	# make setup
    	
    и ждём окончания установки.
  5. Проверка установки. После установки проверьте, появились ли следующие файлы:
    	- libGL.so /usr/X11R6/lib
    	- libGL.so.1 /usr/X11R6/lib
    	- libGLcore.so /usr/X11R6/lib
    	- libGLcore.so.1 /usr/X11R6/lib
    	- nvidia_drv.o /usr/X11R6/lib/modules/drivers
    	- libglx.so /usr/X11R6/lib/modules/extensions
    	- libglx.so.1 /usr/X11R6/lib/modules/extensions
    	- nvidia0 /dev
    	- nvidia1 /dev
    	- nvidia2 /dev
    	- nvidia3 /dev
    	- nvidiactl /dev
    	- libGL.so.1.0.1.0-4365 /compat/linux/usr/lib
    	- libGLcore.so.1.0.1.0-4365 /compat/linux/usr/lib
    	
    А в каталоге /boot/kernel должен объявиться файл nvidia.ko.
  6. Дополнительное конфигурирование XF86Config-4. Теперь заходим в /etc/X11/XF86Config-4 и смотрим, чтобы в его секции Module были следующие записи:
    	Section "Module"
    	Load "bitmap"
    	Load "dbe"
    	Load "dri"
    	Load "extmod"
    	Load "glx"
    	Load "speedo"
    	Load "type1"
    	EndSection
    	
    А в секции Device должны быть:
    	Section "Device"
    	Driver "nvidia" # вместо "nv, обратите особое внимание
    	VendorName "nVidia Corporation"
    	BoardName "NV18 [GeForce4 MX 440 AGP 8x]"
    	#ИЛИ КАКАЯ У ВАС КАРТА
    	EndSection
    	
    Если их не окажется - нужно перенести соответствующие фрагменты из /etc/X11/XF86Config.
    От редактора: Сказанное в предыдущих абзацах необходимо не всегда. У меня, например (а во FreeBSD я обычно устанавливаю Иксы из бинарников с http://www.xfree86.org) никогда не было файла /etc/X11/XF86Config-4, и никакой потребности я в нем не ощущал:-). В чем дело - не знаю, но подозреваю, что это описывается где-то в /usr/X11R6/lib/X11/xinit/xinitrc - больше вроде негде? - А.Ф.
  7. Дополнительные опции. Спецы советуют запись
    	linux_enable="YES"
    	
    убрать из /etc/rc.conf, но поместить строку
    	nvidia_load="YES"
    	
    в /boot/loader.conf, это загрузка подсистемы linux. Также следует проверить, что после установки в файле /boot/loader.conf появились следущие опции:
    	agp_load="YES" 
    	nvidia_load="YES"
    	
    Если их нет, пропишите вручную. Это иницализация AGP и cобственно загрузка самого драйвера.

Вот казалось бы и всё, но бывает, что система после запуска Иксов перегружается, для этого нужно установить патч machdep.c.diff к ядру. Он идет в каталоге ~/doc c драйвером Nvidia. Это делается так - есть такой файл - /sys/i386/i386/machdep.c, его и патчим:

cd /usr/src/sys/i386/i386/
patch -p0 -i /usr/X11R6/share/doc/NVIDIA/machdep.c.diff

после чего пересобираем ядро.

В заключение хочу сказать, что всё-таки перед установкой внимательно ознакомьтесь c readme.txt, идущим с драйвером. Ещё хочу сказать, что фирменный драйвер не всегда работает с некоторыми видеокартами линейки TI и FX от Nvidia. Это, по всей видимости, связанно с тем, что сам драйвер появился в 2002 году, когда некоторых типов карт не было, и не было возможности их протестировать. А также, в общем-то, по недостаточному вниманию разработчиков драйвера (для FreeBSD) в самой компании на предмет ошибок (мнение не только моё).

Хочу предостеречь также от карт, собранных в Южной Азии, я читал про несколько инцидентов, когда они ну никак не хотели работать с FreeBSD, несмотря на разные ухищрения даже очень опытных пользователей.


Обсуждение проекта