Документация по ОС FreeBSD Четверг, 21.09.2017, 17:57
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Multimedia

Драйвер для видеокарт NVidia [2012]
 Фактически видеокарты NVidia обладают лучшей поддержкой в FreeBSD, чем какие либо другие видеокарты. Чтобы воспользоваться всеми возможностями аппаратного ускорения и другими функциями - следует установить специальный драйвер. Для NVidia карт на данный момент существует три драйвера - nv, nouveau, nvidia. Первый драйвер - nv, является свободным драйвером и в данный момент устарел, использовать его на современных видеокартах не представляется возможным, к тому же, можно сказать, что драйвер не имеет реализации аппаратного ускорения. Драйвер nouveau является современной свободной реализацией драйвера nv, но с поддержкой аппаратного ускорения, драйвер пишется при помощи реверс-инжиниринга (NVidia не открывает спецификации своих чипов) и по своим функциям отстает от проприетарного драйвера (по крайней мере на момент написания статьи - отстает). Ну и собственно драйвер - nvidia, проприетарный драйвер от производителя видеокарт, поддерживающий на данный момент большинство функций для работы с графикой - его мы и будем рассматривать в этой заметке.

    Драйвер представлен в системе портов четырьмя версиями и двумя утилитами: nvidia-driver-71, nvidia-driver-96, nvidia-driver-173, nvidia-driver. Утилиты: nvidia-xconfig, nvidia-settings. Все эти порты расположены в /usr/ports/x11. Несколько версий драйвера расположены в хронологическом порядке, для разных классов видеокарт, например: 71 драйвер используется для видеокарт типа Riva TNT2, 96 - GeForce 4 mx400, 173 - GeForce 7300, и просто nvidia-driver - это самый последний драйвер для современных видеокарт. Утилиты: nvidia-xconfig - требуется для формирования xorg.conf, nvidia-settings - утилита с графическим интерфейсом для тонкой настройки видеокарты. 

Установка драйвера

    Подразумевается, что перед началом работы с драйвером выполнена установка и конфигрурирование XORG по статье "Настройка XORG + HAL". Допустим что имеется современная видеокарта GeForce 250 GTS. Установим nvidia-driver из портов. Переходим в каталог, в котором содержится порт драйвера видеокарты:

# cd /usr/ports/x11/nvidia-driver 

   Перед установкой драйвера следует произвести загрузку модуля ядра для поддержки linux. Производим загрузку модуля: 

# kldload linux 

   Затем произведем конфигурирование порта драйвера: 

# make config 

   На дисплее появится следующее меню:



   Следует обратить внимание на опцию FREEBSD_AGP. В нашем случае видеокарта имеет PCI-E реализацию и собственно AGP порта нет, значит можно смело снять этот параметр, однако если сборка порта производится на системе с AGP видеокартой (к примеру GeForce 5200) то в этом случае параметр нужно указывать. Опция ACPI_PM нужна видимо для возможности динамического отключения питания видеокарты, в нашем случае это совершенно не требуется, поэтому параметр тоже остается отключенным. Опция LINUX должна быть включена, иначе не удастся достичь аппаратного ускорения, по причине того что компоненты драйвера обращаются к специфическим процедурам, которые имеются только в режиме совместимости с linux. Опция WBINVD означает специальные операции с кешем, для какой цели она присутсвует я достоверно сказать не могу, поэтому оставляем этот параметр по умолчанию, т.е. отключенным. Запускаем процесс сборки драйвера: 

# make install clean 

   В процессе сборки так же соберутся необходимые компоненты для поддержки linux. После сборки нужно вписать в /etc/fstab специализированную файловую систему для поддержки linux, отредактируем /etc/fstab: 

# ee /etc/fstab 

 Часть файла /etc/fstab:  

...
linproc /compat/linux/proc linprocfs rw 0 0

   Затем смонтируем файловую систему: 

# mount linproc 

   Для автоматического запуска поддержки linux при старте системы требуется отредактирвать /etc/rc.conf и вписать туда строку: 

# ee /etc/fstab 

 Часть файла /etc/rc.conf:  

...
linux_enable="YES"

   Драйвер видеокарты присутсвует в системе в качестве модуля ядра, произведем его загрузку: 

# kldload nvidia 

   Если все сделано правильно, то на дисплее появится сообщение об успешном обнаружении видеочипа. Для того, чтобы не приходилось загружать модуль каждый раз, пропишем его в автоматическую загрузку. Создадим файл /boot/loader.conf и отредактируем его: 

# touch /boot/loader.conf
# ee /boot/loader.conf

 Содержимое файла /boot/loader.conf:  

nvidia_load="YES"

   Сохраняем файл, установка драйвера на этом закончена, но если сейчас пробовать запустить графический интерфейс, то скорее всего будет запущен штатный драйвер nv собирающийся по умолчанию вместе с XORG, поэтому следующим шагом будет настройка XORG для правильного выбора драйвера и дополнительных установок. 

Настройка XORG

   При использовании XORG + HAL создавать xorg.conf не обязательно, однако для правильной настройки нам все равно придется прибегнуть к конфигурированию xorg.conf, с учетом того что часть оборудования будет определена автоматически - ненужные секции будут убраны и нужные параметры добавлены. Далее в заметке я выложу готовый вариант моего конфигурационного файла, который нормально работает. Если требуется разобраться более досконально, то следует читать документацию, генерировать xorg.conf при помощи утилиты nvidia-xconfig и производить требуемые настройки самостоятельно (именно таким способом и был получен требуемый результат). Итак создаем xorg.conf и приводим его к следующему виду: 

# touch /etc/X11/xorg.conf
# ee /etc/X11/xorg.conf 

 Содержимое файла /etc/X11/xorg.conf:  

Section "ServerLayout"
      Identifier "X.org Configured"
      Screen 0 "Screen0" 0 0
      Option "BlankTime" "0"
      Option "StandbyTime" "0"
      Option "SuspendTime" "0"
      Option "OffTime" "0"
EndSection

Section "Module"
      Load "extmod"
      Load "record"
      Load "dbe"
      Load "glx"
      Load "dri"
      Load "dri2"
EndSection

Section "Monitor"
      Identifier "Monitor0"
      VendorName "Monitor"
      ModelName "TFT Panel"
      Option "DPI" "96 x 96"
EndSection

Section "Device"
      Identifier "Card0"
      Driver "nvidia"
      VendorName "NVIDIA Corporation"
      BoardName "GeForce"
EndSection

Section "Screen"
      Identifier "Screen0"
      Device "Card0"
      Monitor "Monitor0"
      SubSection "Display"
           Viewport 0 0
           Depth 24
      EndSubSection
EndSection

   Следует обратить внимание, что из конфига удалены секции описывающие загрузку шрифтов, настройки устройств ввода - клавиатуры и мыши. Данные секции автоматически отрабатываются современным XORG. Остальные параметры описаны с целью отключить энергосбережение дисплея, установить фиксированные DPI и указать XORGу, что следует использовать драйвер nvidia, а не что то иное. Эти строки выделены желтым цветом. На этом настройка закончена, и можно смело запускать иксы и работать. 

Возникающие проблемы и сложности

   Попробую описать вероятные сложности и проблемы, которые могут возникнуть даже если все сделано правильно. У меня имеется ноутбук RoverBook H470L, на котором постоянно, релиз от релиза, возникают странности - перестает нормально опеределяться и работать то одно, то другое оборудование. Попробуем решить возникающие сложности на его примере. 

   У ноутбука имеется видеоадаптер NVidia GeForce4 420, и первая ошибка которую совершит пользователь будет заключаться в том, что иксы не запустятся и старт XORG будет прерываться сообщением об ошибке: 

No devices detected.
Fatal server error
no screens found

   С точки зрения логики, совершенно непонятно в чем причина не определения видеоадаптера. Однако причина кроется в обычной невнимательности при загрузке модуля nvidia командой kldload. После выполнения этой команды на экране появляется сообщение от модуля - определена видеокатра или нет, в случае с установкой nvidia-driver на ноутбуке с адаптером GeForce4 420, при загрузке модуля на дисплее появляется сообщение: 

NVRM: The NVIDIA GeForce4 420 Go GPU installed in this system is
NVRM: supported through the NVIDIA 96.43.xx Legacy drivers. Please
NVRM: visit http://www.nvidia.com/object/unix.html for more
NVRM: information. The 285.05.09 NVIDIA driver will ignore
NVRM: this GPU. Continuing probe...

   Что в переводе означает - GeForce4 420 Go поддерживается драйвером версии 96.43.xx, а текущий драйвер версии 285.05.09 не поддерживает данный GPU. Фактически для такой видеокарты требовалось собирать nvidia-driver-96, а не текущий nvidia-driver. Следует выгрузить модуль ядра командой kldunload, удалить текущий драйвер, затем собрать драйвер nvidia-driver-96 и проблема будет решена. 

   Еще один вероятный источник проблем - неверное определение дисплея. Данная ситуация так же проявляется на RoverBook H470L, заключается она в том, что при старте XORG дисплей остается черным и ничего не происходит. Если при этом подключить к ноутбуку внешний монитор, то окажется что изображение выводится именно на него, а не на LCD матрицу ноутбука. Для того чтобы все работало нормально, придется принудительно указать порт дисплея. Для этого произведем изменения в /etc/X11/xorg.conf, в секцию Screen внесем изменения следующим образом: 

 Часть файла /etc/X11/xorg.conf:  

...
Section "Screen"
      Identifier "Screen0"
      Device "Card0"
      Monitor "Monitor0"
      Option "UseDisplayDevice" "DFP-0"
      SubSection "Display"
           Viewport 0 0
           Depth 24
      EndSubSection
EndSection


   Данный параметр прямо указывает куда производить вывод изображения - DFP-0. Надеюсь что данные примеры помогут читателю правильно настроить графический интерфейс. 


Источник: http://www.bsdnotes.ru/?lnk=x_xorg_nvidia
Категория: Multimedia | Добавил: oleg (27.05.2012) | Автор: Crazy Alex
Просмотров: 830 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2017