Если вы обладатель legacy-карты nvidia, драйвера которой уже не поддерживаются, или просто по каким-то причинам вы не хотите использовать закрытое ПО то у вас есть два варианта:
- Использовать "родной" драйвер из X.Org (nv) и отказаться от 3D возможностей вашей карты.
- Использовать открытую альтернативу закрытым драйверам - проект nouveau.
Эта статья призвана помочь тем кто выбрал второй путь. И хотя упор в ней сделан на дистрибутив Gentoo, многие рекомменадции из неё подойдут и для других дистрибутивов.
Для тех оплачивает интернет по трафику: нужно приготовится потратить примерно десять мегабайт трафика на загрузку исходных текстов драйвера и сопутствующих компонентов.
Итак, для начала нам нужно подключить оверлей nouveau:
emerge layman layman --add nouveau
Всё. Оверлей добавлен. Убедится в этом можно просмотрев содержимое директории /usr/portage/local/layman/nouveau.
Сам драйвер жёстко замаскирован, да и требует последних (git-) версий ещё ряда компонентов, которые так же замаскированы. Чтобы размаскировать их нужно добавить следующие строки в файл /etc/portage/package.keywords:
media-libs/mesa ** x11-base/x11-drm ** x11-drivers/xf86-video-nouveau ** x11-libs/libdrm **
Далее очень хочется выполнить команду:
emerge nouveau
Однако это не правильно. К сожалению ebuild в оверлее написан не совсем корректно. Например модуль x11-drm не указан у nouveau в зависимостях. Поэтому правильно будет сделать вот так:
emerge x11-base/x11-drm media-libs/mesa x11-drivers/xf86-video-nouveau
Если всё прошло успешно, то остаётся только настроить драйвер. Для этого впервую очередь нужно оставноить X-сервер (если он был запущен):
/etc/init.d/xdm stop
Если вы используете драйвер nvidia - выгрзуите модуль:
modprobe -r nvidia
И удалите (или закомментируйте) строчку nvidia в файле /etc/modules.autoload.d/kernel-2.6.
Загрузите модуль nouveau и добавьте его в список модулей, загружаемых при загрузке:
modprobe nouveau echo nouveau >> /etc/modules.autoload.d/kernel-2.6
Убедитесь что модуль загрузился:
lsmod | grep nouveau
Теперь нужно переключится на встроеный в X.Org интерфейс OpenGL:
eselect opengl set xorg-x11
В файле /etc/X11/xorg.conf в секции Device поменть строку Driver ... на:
Driver "nouveau"
Далее нужно убедится что в секции Module указаны модули dri и glx:
Load "glx" Load "dri"
А так же присутствует (и не закомментирована!) секция:
Section "DRI" Group 0 Mode 0666 EndSection
Всё. Можно запускать графический сервер:
/etc/init.d/xdm start
После входа в систему рекоммендуется проверить работу драйверов командой glxgears. Если всё в порядке - вы увидите три разноцветные шестерёнки, а на консоль каждые пять секунд будут выводится данные о текущем fps.
Если шестерёнки будут крутится рывками, а на консоль будет выведено сообщение:
open DRM failed (Operation not permitted)
То нужно ещё раз проверить наличие и правильность указаний секции DRI в /etc/X11/xorg.conf, поскольку эта ошибка говорит о некорректно выставленных правах на устройство /dev/dri/cards0, которые и задаются в той секции.
Отдельно внимание следует уделить обновлению драйверов. В Gentoo при штатном обновлении пакеты, собраные зи репозиториев SVN/CVS/git, не обновляются. Чтобы их всё же обновить можно использовать утилиту rep-rebuild, ebuild которой есть в оверлее sunrise:
layman --add sunrise echo app-portage/rep-rebuild ~x86 >> /etc/portage/package.keywords emerge rep-rebuild
Теперь для обновления всех пакетов, собраных из репозиториев SVN/CVS/git, достаточно выполнить команду:
rep-rebuild --ask
Ключ --ask нужен для того, чтобы прежде чем что-то делать - программа спросила вашего подтвержедния на это действие.
На это всё. Надеемся (но не гарантируем!) что драйвер вас не разочарует.