Валерий Моторин ака wolf_black
2005
Установка драйвера видеокарты 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 написано здесь.
Но установка свободного драйвера nv не позволит вам использовать все возможности видеокарты, в том числе 3D-графику и OpenGL, то есть вы не сможете запусать 3D-скринсейверы, играть в любимые игрушки - типа quake3, пользоваться приложениями xtraceroute или maya. Но для этого есть драйвер, разработанный самой компанией Nvidia. Описание установки - Readme.txt, идущий с драйвером, подробно описывает процесс установки, но он умалчивает о некоторых моментах.
Вот этапы установки этого драйвера (всё делать под рутом):
/sys/i386/conf/GENERIC есть опции для версий системы STABLE (то есть на данный момент - 4.X):
options USER_LDT options SYSVSHMА для версий Current (то есть 5.X) достаточно:
options SYSVSHMЕсли их нет, то придётся пересобрать ядро с этими опциями.
linux_base, идущий с первым CD или устанавливаем его из портов - /usr/ports/emulators/linux_base/. Это нужно для работы драйвера.
readme.txt. Но лучше использовать рекомендованный разработчиками FreeBSD способ, описанный ниже.
/usr/ports/x11/nvidia-driver. Перед сборкой некоторые специалисты рекомендуют указать следующие флаги в Makefile:
WITH_FREEBSD_AGP=yes WITHOUT_LINUX=yes WITH_FORCE_AGP_RATE=yesЗатем набираем всего одну команду:
# makeи ждём окончания сборки, после которой появится каталог
work в текущем каталоге.
/usr/ports/x11/nvidia-driver/work/NVIDIA-FreeBSD-x86-1.0-4365/, набираем команду
# make setupи ждём окончания установки.
- 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.
/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.
/etc/X11/XF86Config-4, и никакой потребности я в нем не ощущал:-). В чем дело - не знаю, но подозреваю, что это описывается где-то в /usr/X11R6/lib/X11/xinit/xinitrc - больше вроде негде? - А.Ф.
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, несмотря на разные ухищрения даже очень опытных пользователей.