Kubuntu Feisty и драйвера Nvidia

Алексей Федорчук
16 января 2007 г

До недавнего времени я не использовал никаких фирменных драйверов видеокарт для работы в Иксах — не испытывая потребности в третьем измерении, вполне обходился штатными иксовыми nv и ati, для карт с чипами от Nvidia и ATI, соответственно. Однако после установки Kubuntu Feisty в версии для AMD64 (на машину с соответствующим процессором) я столкнулся с тем, что фирменный драйвер — не роскошь, а необходимое средство для работы.

Целевая машина несла в себе материнскую плату ASUS M2NPV-MX на чипсете GeForce 6150 с интегрированной графикой GeForce 6. Не седая древность, конечно, но и не Бог весть какой модерн, так что никаких неожиданностей в Иксах не предвиделось. Каково же было мое изумление, когда после установки системы обнаружилась исключительная задумчивость при выполнении всех графических операций. Окна перетаскивались, как многопудовые мешки, прокрутка текста в браузере или редакторе напоминала неспешное накатывание морской волны на берег при нуле баллов по Бофорту. В общем, работать было положительно невозможно.

Просмотр соответствующего пункта в настройках системы (в Kubuntu это модернизированный Центр управления KDE) выявил причину того: оказывается, при инсталляции был автоматически задействован драйвер VESA. «Во…», сказал я вслед за сибирскими мужиками, и быстренько заменил в /etc/X11/xorg.conf строку

Driver         "vesa"

на

Driver         "nv"

Однако после рестарта Иксов стало еще хуже: запустились они с разрешением 800×600 (при родном для матрицы моего LCD-дисплея 1028×1024), и повысить его через Центр управления никак не удавалось. Когда же я попытался принудительно выставить разрешение 1028×1024 редактированием /etc/X11/xorg.conf, то вообще получил черный экран без признаков жизни X-сервера.

«Во…» — снова повторил я вслед за сибирскими мужиками, и понял, что не миновать мне установки фирменного драйвера.

Конечно, наиболее свежие фирменные драйвера можно получить с фирменного же сайта Nvidia, где они лежат в виде «самоинсталлирующегося» из командной строки архива. В принципе, установка их не сложна (в Сети можно найти несколько подробных инструкций на этот счет), но результат инсталляции не всегда предсказуем. А поскольку «свежесть» драйвера меня особо не интересовала, я и не стал заморачиваться этим вопросом.

Список возможных кандидатов на установку из репозитория легко определился командой

$ aptitude search nvidia

и выглядел следующим образом:

p   nvidia-glx
p   nvidia-glx-dev
p   nvidia-glx-legacy
p   nvidia-glx-legacy-dev
v   nvidia-kernel-1.0.7184
v   nvidia-kernel-1.0.8774
v   nvidia-kernel-1.0.9629
v   nvidia-kernel-1.0.9631
p   nvidia-kernel-common
p   nvidia-kernel-source
p   nvidia-legacy-kernel-source
p   nvidia-settings
p   nvidia-xconfig

Последовательный просмотр кандидатов посредством aptitude show привел меня к убеждению, что nvidia-glx — это то, что мне надо. Вследствие чего он был немедленно установлен

$ sudo aptitude install nvidia-glx

потянув за собой в качестве зависимости также nvidia-kernel-common. Произведя соответствующие манипуляции с файлом /etc/X11/xorg.conf, а именно, вставив строку

    Load           "glx"

в секцию «Module», и строку

    Driver         "nvidia"

в секцию «Device», я попытался запустить X-сервер. Ответом был черный экран с сообщением о том, что Иксы не могут отыскать ядерный модуль nvidia — путем несложных рассуждений я предположил, что он должен называться nvidia.ko. И действительно, просмотр обоих установленных пакетов показал полное наличие его отсутствия где бы то ни было.

«Во…» — в третий раз повторил я сакраментальную фразу сибирских мужиков и стал думать. Внимание мое привлек пакет nvidia-kernel-source, в котором резонно было бы ожидать именно исходников для сборки ядерного модуля. «Если модуля нет, его следует скомпилировать» — не менее резонно предположил я, и установил этот пакет:

$ sudo aptitude install nvidia-kernel-source

Результатом было появление в каталоге /usr/src тарбалла nvidia-kernel-source.tar.gz. Ничтоже сумняшеся, распаковываю его — и в недрах подкаталогов образовавшегося каталога /usr/src/modules обнаруживаю, среди всего прочего, вожделенный файл nvidia.c и сопутствующее ему хозяйство. Каковое остается только скомпилировать и инсталлировать. В этом деле очень способствует внимательное прочтение файла README, находящегося в том же подкаталоге. Он предписывает следующую простую последовательность действий:

$ make module
$ make install

Выполнив ее и перезагрузив машину, я, после лицезрения стартовой заставки от Nvidia, получил, наконец, и нормальную скорость перерисовки графики при штатном разрешении 1280×1024 и 24-битной глубине цвета. А установив пакет planetpenguin-racer (это одна из вариаций на тему tux-racer’а — пингвина-слаломиста, пожирающего рыбу во время спуска с горы на брюхе), убедился и в наличии 3D-функций. Я, конечно, не знаток этой игры, но, мне кажется, пигвинчик в ней двигался весьма шустро.

Тем не менее, вывод из описанной истории следует весьма грустный. Что же это, товарищи, делается? Раньше, сколько я помню себя в Linux’е, штатные драйвера из комплекта Иксов справлялись с двухмерной графикой на ура, и только для трехмерки требовалось устанавливать драйвера фирменные. Теперь же получается, что Иксы не обеспечивают минимально приемлемой функциональности даже в 2D — и для далеко не самых современных видеосистем. Ведь, насколько я понимаю, интегрированная графика GeForce соответствует дискретным чипам от Nvidia позапрошлого урожая, не так ли? И получается, что чем дальше, тем сложнее будет обходиться без фирменных драйверов. Какие тут могут быть разговоры о запрете подключения к ядру проприетарных модулей…