Ключевые слова:video, driver, xfree86, framebuffer, (найти похожие документы)
From: Andy Gorev <gorev@mail333.com>
Newsgroups: http://www.atmsk.ru
Date: Mon, 20 Jun 2003 13:01:37 +0000 (UTC)
Subject: Заметки по настройке FrameBuffer и XFree86 для Nvidia видеокарт
Оригинал: http://www.atmsk.ru/index.php?option=articles&task=viewarticle&artid=59
Nvidia-HOWTO
Пролог: в статье идет речь о драйверах для видеоплат Nvidia и
настройке фрейм-буфера. Материал собран по многочисленным вопросам в
рассылках altlinux-community.
Начнем пожалуй с консоли. Существует два режима работы (SVGATextMode
опустим) - это обычная консоль и фреймбуфер.
В обычной консоли можно использовать шрифты с глифами 8х8 и 8х16 (по
умолчанию). Для смены шрифта надо править в файле /etc/sysconfig/i18n
параметр SYSFONT, с последующим запуском #setsysfont. Посмотреть,
какие вообще есть консольные шрифты можно в пакете console-tools.
Установка глифа 8х8 реально увеличивает объем влезающей на экран
информации без смены разрешения. И это самый простой способ, если
отказаться от фреймбуфера. При этом пропадает лого при загрузке и
много проблем icon_smile.gif Но остается медленная развертка. И очень
многих это не смущает.
При использовании фреймбуфера есть два варианта.
Первый вариант - vesafb. Этот фреймбуфер автоматически вызывается,
если вы ставили Мастер. Отключить сплэш при загрузке, оставив при этом
vesafb можно, если убрать параметр ядра fbprogress=/dev/ttyS10. Этот
параметр задается в загрузчике. В Мастере, файл /boot/grub/menu.lst
Этот файл надо просто исправить и все. LILO нужно переустанавливать
при любых изменениях.
Инициализация непосредственно vesafb производится опцией ядру vga=788
(в этом случае 800х600х16b). Разрешение изначально задается при
инсталляции и прописывается в этот параметр в десятичном значении.
Чтобы изменить разрешение, нужно прописать номер нужного режима в этом
параметре (можно использовать значения hex). Значения режимов можно
посмотреть в файле /usr/share/doc/kernel-doc/fb/vesafb.txt пакета
kernel-doc.
Недостатком такого решения является то, что частота вертикальной
развертки у вас ВСЕГДА в консоли будет 60 гц.
Дело в том, что vesafb писался еще в конце 90-х годов, когда стандарт
VESA VBE 3.0 только зарождался. Описаны были только стандартные режимы
VESA 2.0. Теоретически vesafb поддерживает VESA 3.0 и высокие частоты,
но у автора небыло тогда железки, поддерживающей свежий стандарт чтобы
это проверить. Практически-же этот самый "свежий" и до сих пор
актуальный стандарт снял с себя всякую ответственность за
резервирование новых режимов, и возложил это на производителей железа.
В нашем случае мы имеем Nvidia с поддержкой VESA 3.0, а значит
высокочастотными режимами, которые описаны у платы в BIOS. Загвоздка в
том, что этой информации нигде нет. Я боюсь даже что номера режимов
могут менятся от чипсета к чипсету.
Поэтому, при использовании vesafb мы получим 60 гц. Это может довольно
тяжело смотреться на 15" мониторе в 1024х768.
Второй вариант фреймбуфера - rivafb. Чтобы его использовать, надо
убрать опцию ядра "vga=", и редактировать файл
/etc/sysconfig/framebuffer. Его приблизительное содержание может быть
таким:
ENABLE=yes
MODULE=rivafb
ARGS="noblink=1"
MODE=1024x768-70
TTYS="1 2 3 4 5 6 12"
При этом должен быть установлен пакет fbset.
Этот фреймбуфер поддерживает базу режимов, которые можно посмотреть в
/etc/fb.modes и даже создавать самому. Опции модуля передаваемые в
переменной ARGS можно узнать набрав modinfo rivafb.
Преимущество этого фреймбуфера в том, что он позволит вам выставить в
консоли практически максимально-возможное разрешение и частоту
разветки, которые вы захотите. Недостаток в том, что он написан
каким-то кулхацкером (со слов Nvidia) с использованием кода XFree =>
крошит акселирированные драйвера от Nvidia и вносит потенциальную
нестабильность в XFree вообще. Многие люди тем не менее продолжают
использовать это решение без всяких проблем. Поэтому если вам нужен
высокочастотный фреймбуфер, и вы не играете c glx - это то, что вам
нужно.
Теперь переходим к иксам.
Тут тоже все двузначно. Существует два сервера для Nvidia-плат. Первый
- nv. Поставляется вместе с XFree86 и, по многочисленным отзывам,
наиболее стабилен. Так как этот сервер пишет команда XFree, оно и
понятно. Если возникают проблемы с glx то надо пробовать этот сервер.
Преимущества - стабилен, работает с любым фреймбуфером. Недостатки -
не поддерживаются Nvidia фишки, поэтому например не работают OpenGL
игры, и отсутствие поддержки GeForce 3 & 4. Конфигурируется просто и
изящно:
Driver "nv" в секцию Device файла XF86Config ручками или
мнгочисленными конфигураторами от xf86config до XFdrake. Об опциях
этого драйвера можно посмотреть тут. (http://www.xfree86.org/current/nv.4.html) Этот вариант подходит тем,
кто пользуется Nvidia только для работы. icon_wink.gif
Второй сервер - акселерированный сервер от Nvidia с которым работает
всё или почти всё. Его обычно стараются заточить на десктоп.
Преимущества очевидны. Недостатки - только недавно Nvidia заявила об
"официальной" поддержке Линукса => драйвера вечно сырые и их
стабильность меняется от версии к версии; в последних версиях
оптимизируется код для самого свежего железа - история в точности как
с Детонаторами под виндос; наконец эти драйвера не дружат с rivafb.
Достаточно переключиться в консоль, и обратно в Х-ы, чтобы начать
судорожно давить SysRq. Но если не переключаться ... (я знаю таких),
тоже вроде работает (но они особо и не играют, тогда зачем такой
драйвер).
Теперь об установке. Если вы используете Mandrake или RH - вперед на
http://www.nvidia.com/ там есть все для вас. Останется только разобраться.
Если вы пользуетесть Альтом, то надо установить два пакета
Nvidia-kernel и NVIDIA_GLX.
Первый должен совпадать по версии с вашим ядром. Содержит он ядерный
модуль (что-то типа DRI), который воткнется туда после depmod -a и
запуска иксов (с соответствующим сервером).
Второй - непосредственно сервер для XFree86 и OpenGL библиотеку от
Nvidia. После установки надо убедиться что используемый Driver в
XF86Config теперь "nvidia", в секции Module убрано Load "dri", а Load
"glx" заменено на Load "/usr/X11R6/lib/modules/extensions/libglx.so".
Это минимальная конфигурация, при которой у вас уже будут работать
простые вещи типа tuxracer. Для полной работоспособности не хватает
симлинка в /usr/X11R6/lib (libGL.so -> libGL.so.1).
Сервер nvidia содержит множество параметров (среди них есть и
полезные) которые можно узнать из /usr/share/doc/NVIDIA_GLX/README.
Например как отключить сплэш Nvidia, сконфигурять twinview и TV-out,
или переключиться на NVAGP.
Если будете эксперементировать с NVAGP, то надо выкинуть agpgart из
/etc/modules. В зависимости от настроек сервера, он будет использовать
NVAGP или загрузит модуль agpgart.
Существует официальный форум, (http://www.nvnews.net/vbulletin/forumdisplay.php?&forumid=14)
где можно найти ответы по самым
последним железкам. Hint: там работает вполне грамотный поиск.
Напоследок подскажу, что на этом сайте в разделе ссылок про железо
можно найти еще много интересного, особенно для владельцев Geforce,
тем более двухголовых. :-)