не знаю как это сделать.
не устанавливаются драйвера, скачанные с официального сайта.
Какой выбрать?
Сегодня мы попробуем решить эти две проблемы. Сначала давайте определимся, для каких целей и где мы будем использовать наш компьютер. Во-первых, для карточек Nvidia есть аж три драйвера: стандартный nv (пакет для установки — x11-driver-video-nv), немного более «продвинутый» и открытый nouveau (пакет для установки — x11-driver-video-nouveau) и закрытый пропиретарный nvidia. Первый хорошо использовать в офисе, например, чтобы работники в игры не играли. Он не поддерживает трехмерное ускорение, но можно смотреть фильмы, нормально работать с окнами. Именно за ним я вполне нормально прожил целых пол года на заре своего знакомства с линукс, но это от незнания. Второй драйвер, нуво, также открытый. Вот он уже вполне подходит для дома — умеет акселерацию и все, что из этого следует. К сожалению он имеет еще достаточно скудные возможности, недостаточно стабилен и во многом сильно уступает третьему драйверу — nvidia. Вот он все-таки отличный. По крайней мере намного качественнее других производителей, к примеру тех же ATI. Вот только лицензия не позволяет включать его в большинство дистрибьютивов, от куда и проблемы с установкой. Да, я знаю, что в репах мандривы есть и для третьего драйвер пакеты, но их ставить не так не интересно. Куда интереснее их собирать вручную. Делая это, вы рискуете научится! Вот и попробуем :)
Где взять?
Первые два — nv и nouveau есть в стандартных репозиториях в виде собранных пакетов. Просто ставим нужный пакет и все. Можно просто запустить
drakx11
, которая сама вытянет с интернета или диска нужные драйвера, установит их и настроит так, чтобы работало. Это самый простой способ, не требующий лишних телодвижений. Если жить под стандартным драйвером nv не хочется (и в игры не поиграешь, и современные красивые интерфейсы не запустишь. Хотя кубиком сейчас никого не удивишь), тогда фирменный nvidia и только. Также есть люди, которые принципиально все компилируют и не признают чужеродную бинарщину. Или если доступа к Всемирной нет? Что же делать в таком случае? Можно поступить следующими способами. Купить
Mandriva Linux Powerpack — но это довольно дорого, зато содержит пакеты драйверов и другой коммерческий софт, плюс поддержку имеет. Или бесплатно скачать
Mandriva One — в ней уже все установлено. Но мы, суровые красноглазые мужики, простые пути не выбираем и трудностей не боимся. Поэтому давайте разберем оффлайн-установку. Тем более, что в мандриве 2010.* сделать это достаточно проблематично. Для простых пользователей — хорошая головоломка. Для начала я дам немного информации про сам драйвер.
Информация.
Драйвер представляет собой файл размером порядка 20-30 МБ с расширением .run. Это самый обычный shell-скрипт, в конец которого приписали .tar.gz архив. Хотя нет, правильнее будет сказать так — архив, в начало которого дописали сценарий. При запуске сначала проверяется его целостность, потом с помощью программы dd он режется надвое: на текстовую и бинарную часть. Так как двоичные данные — это архив, то он распаковывается во временную папку и от туда выполняется программа установки —
nvidia-installer
. И все бы ничего, только вот разработчики Mandriva 2010 занесли этот и еще несколько драйверов в черный список. Зачем — я так и не понял. Может они решили заблочить потенциально опасное ПО, или дырку в безопасности — кто знает... Я только знаю, что это ничего, кроме лишнего геморроя не приносит. Ну что, будем с этим бороться. Про эту типа «защиту» расскажу позже.
Подготовка.
Драйвер содержит фирменные бинарные утилиты, библиотеки OpenGL, а также некоторые исходные тексты для сборки модуля ядра
nvidia.ko
. Для успешной компиляции последнего мы должны поставить инструменты разработчика — исходные тексты и заголовочные файлы для ядра. Это можно сделать с помощью таких команд (все осторожно выполняем от имени root или пользуемся sudo):
# urpmi kernel-source-latest kernel-desktop-devel-latest
По зависимостям вытянутся также и другие нужные нам программы, например компилятор gcc, autoconf,
make и так далее. В общем будет установлено около 350 мегабайт. Когда все будет готово, идем на сайт
www.nvidia.com и качаем последнюю версию драйвера. На момент написания статьи это была версия 260.19.21. Сохраняем в домашней папке. Однако прежде, чем начать установку, нужно, чтобы наш графический сервер был отключен — это необходимое требование установщика. Будет исполнено — переходим в виртуальную консоль нажатием клавиш
Ctrl+Alt+F1
и логинимся под рутом. Гасим Х:
# /etc/init.d/dm stop
Экран потухнет — это хорошо, значит мы остановили сервис. Возможно нам придется снова вернутся в консоль — опять жмем
Ctrl+Alt+F1
. Теперь то мы запустим обожаемый мной файловый менеджер
Midnight Commander
, или просто
mc
. Если его нет — ставим:
# urpmi mc
Это очень сильно упростит нам жизнь.
А теперь немного теории.
В Linux есть такая технология — динамическая загрузка и выгрузка модулей ядра. Практически все современные ядра являются модульными, и это очень удобно. Модуль — по сути это тот же драйвер. Например, мы установили новое оборудование — видеокарту Nvidia. В идеале мы должны скомпилировать модуль, установить его, подгрузить и спокойно работать. Загружается так:
# modprobe nvidia
Если модуль нам не нужен — выгрузим его:
# rmmod nvidia
Все это сделано для того, чтобы менять оборудование на лету и избежать перезагрузок, как в Windows. И это здорово — особенно очень полезно на серверах, где даже минута простоя может стоить очень дорого. В не динамических (статических) ядрах все иначе. В них нет модулей — все собрано в один большой файл, и чтобы добавить новый модуль, нужно пересобирать ядро, что довольно таки неудобно и долго. И еще одно. В статических ядрах загружаются сразу все драйвера без возможности отключения. Только представьте, сколько лишней ОЗУ будет использовано. А разработчики кидают туда как можно больше всего — на всякий случай, пригодится. Итак допустим, что модуль установлен. Однако криворукость программистов еще никто не отменял и драйвер может либо жутко глючить, либо работать не так, как хочется. Что делать? Удалять модуль не будем — не для того мы его ставили. Просто временно отключим — занесем в черный список. Черный список, иначе
blacklist
— это набор текстовых файлов, в которые заносят названия модулей, которые нужно отключить при загрузке. Именно так разработчики Mandriva 2010 и поступили. Вы только посмотрите файлы
/etc/modprobe.d/blacklist-mdv
и
/etc/modprobe.d/blacklist-compact
— там столько всего вкусненького. Ну что ж, разблокируем драйвера:
# rm -f /etc/modprobe.d/blacklist-compact
# rm -f /etc/modprobe.d/blacklist-mdv
# echo 'blacklist pcspkr' > /etc/modprobe.d/blacklist-mdv
# echo 'blacklist snd-pcsp' >>/etc/modprobe.d/blacklist-mdv
Последние две строчки отключают эту долбаную пищалку, которая поздним вечером как пикнет — усраться можно! И еще один необходимый трюк:
# echo nvidia >> /etc/modprobe.preload
Теперь все готово, приступаем, наконец-то к установке.
Установка.
Распакуем драйвер и соберем модуль:
# chmod +x NVIDIA-Linux-x86-260.19.21.run
# ./NVIDIA-Linux-x86-260.19.21.run -x
# cd NVIDIA-Linux-x86-260.19.21/kernel
# make
# make -f Makefile.kbuild
Драйвера до версии 195 имели другое строение установочного дистрибьютива. Там вместо папки kernel есть usr/src/nv — там и проводим сборку модуля. Компиляция завершится с ошибкой вроде этой:
FATAL: Error inserting nvidia (/lib/modules/2.6.33.5-desktop586-2mnb/kernel/drivers/video/nvidia.ko):No such device
, но все будет хорошо. Далее устанавливаем и перезагружаемся:
# make install
# reboot
Ошибка возникает потому, что модуль пытается подгрузится, но ему что-то мешает. Перезагружаем компьютер. При загрузке экран будет моргать — это тоже нормально, пытается загрузится модуль из файла
/etc/modprobe.preload
в неположенное для этого время. Может вылезти сообщение с ошибкой и предложением исправить — не трогаем. Уходим на консоль Alt+F1 и теперь запускаем программу установки:
# cd NVIDIA-Linux-x86-260.19.21/
# ./nvidia-installer
На все вопросы отвечаем «Yes». Все должно работать нормально и Х-сервер запустится сам. Если этого не произошло, делаем ручками:
# echo "" > /etc/modprobe.preload
# /etc/init.d/dm start
В крайнем случае перезагружаемся. Вот и все, можно радоваться 3D ускорению, играм и компизу!
Напоследок скажу, что это способ найденный мной лично. Но это не значит, что он единственный и неповторимый. Очень даже возможно, что именно Вы найдете способ попроще и напишешете мне о нем :)