четверг, 11 сентября 2014 г.

Установка драйвера NVIDIA на ноутбук с линукс дистрибутивом Kali

Проведем краткий обзор установки проприетарного драйвера для видеокарты NVIDIA.
Смотрим, какая видеокарта установлена в нашем компьютерне:
#lspci | grep VGA
Делаем обновление системы:
#apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
Устанавливаем заголовочные файлы:
#apt-get -r install linux-headers-$(uname -r)
Устанавливаем ядро NVIDIA:
#apt-get install nvidia-kernel-$(uname -r)
Устанавливаем DKMS для NVIDIA:
#apt-get install nvidia-kernel-dkms
Во время выполнения этой команды появяться два диалоговых окна. Первый будет говорить про конфликт между установленным по умолчанию драйвером nouveau (для NVIDIA он устанавливается по умолчанию) и устанавливаемым нами драйвером, а второй будет говорить, что у вас нету файла xorg.conf (если его у вас действительно нет, а по умолчанию он отсутствует) и его надо создать. На обоих диалогах отвечаем ОК. 
Приступим к созданию файла xorg.conf. Для этог делаем следующее:
#apt-get install nvidia-xconfig
И запустим команду:
#nvidia-xconfig
#reboot
Если не получается войти в графический интерфейс после перезагрузки - вы можете вернуться к предыдущему состоянию просто удалив xorg.conf.
Если загрузка GUI прошла успешно, то проверяем работу GLX модуля:
#apt-get install mesa-utils
#glxinfo | grep -i "direct rendering"
Вывод должен быть следующим:
"direct rendering: Yes"
Проверяем, загружен ли модуль NVIDIA:
#lsmod | grep nvidia
Следующая команда не должна давать никакого вывода:
#lsmod | grep nouveau
Драйвер nouveau должен быть заблокирован. Убедитесь в этом посмотрев содержание следующих файлов:
/etc/modprobe.d/nvidia.conf
/etc/modprobe.d/nvidia-blacklists-nouveau.conf
/etc/modprobe.d/nvidia-kernel-common.conf
Когда-то эти файлы надо было редактировать вручную. Сейчас это делается автоматически при инсталляции проприетарного драйвера.
Для того чтобы удалить проприетарный драйвер NVIDIA (если уж что-то пошло совсем не так), делаем такие действия:
#apt-get remove nvidia-kernel-dkms
#reboot
Описанные выше шаги типичны для всех компьютеров с картой NVIDIA и не есть специфическими для какого-либо дистрибутива.
Если у нас нотбук, то может возникнуть такая проблема. Обычно NVIDIA карта устанавливается в ноутбук как вторая видео карта (в виду ее высокого энергопотребления, как я понимаю). В качестве первичной обычно используется что-то другое, типа интеловской. Поэтому для использования "совместно" двух видеокарт на линукс системах был создан проект bumblebee. Демон bumblebeed запускается при старте системы. Клиентом этого сервиса является команда optirun. Аргументом этой команды является программа, которую мы хотим выполнять на NVIDIA карте. Со стороны это выглядит так. Мы имеем два конфигурационых файла для Х-сервера (если вы дочитали до этого момента, то вам не надо объяснять, что это такое), один для одной видеокарты, второй для другой. В качестве основной конфигурации Х-сервера мы используем "первый" файл (там указан, например, интеловский видеодрайвер), но как мы только используем команду optirun, bumblebeed для аргумента optirun использует "вторую" конфигурацию Х-сервера, а там указано испорльзование NVIDIA драйвера.
Теперь рассмотрим установку всего этого на систему вместе с CUDA.
#apt-get install freeglut3-dev libxmu-dev
Скачиваем пакет virtualgl http://sourceforge.net/projects/virtualgl/
Делаем
#dpkg -i virtualgl*.deb
#vim .bashrc
добавляем строку:
export PATH=$PATH:/opt/VirtualGL/bin
# vim /etc/apt/sources.list
добавляем строку:
deb http://ftp.debian.org/debian wheezy-backports main contrib non-free
#apt-get update  
#apt-get install bumblebee-nvidia primus
#apt-get install nvidia-glx
Создаем следующие файлы и редактирем их (после изучения комментариев, написанных в них):
#cp /etc/bumblebee/xorg.conf.nvidia.dpkg-new /etc/bumblebee/xorg.conf.nvidia
#cp /etc/bumblebee/bumblebee.conf.dpkg-new /etc/bumblebee/bumblebee.conf
В первом делаем такие изменения:
Section "Device"
Identifier "DiscreteNvidia"
Driver "nvidia"
VendorName "Nvidia Corporation
BusID "PCI:03:00:0"
Значение BusID узнаем из вывода команды:
#lspci | egrep 'VGA|3D'
Нюанс: вывод будет показывать 03:00.0 - то есть точку заменяем на двоеточие.
Во втором файле редактируем соответствующие строки: 
Driver=nvidia
KernelDriver=nvidia-current
Рестартуем демон:
#/etc/init.d/bumblebeed restart
Ну и тестируем, сравниваем скорости, которые будут выводиться в консоли:
#optirun glxgears
#glxgears
Сравнивая выводы этих команд мы должны увидеть разницу в скорости выполнения команд на разазных видеокартах вашего ноутбука. Если до этого момента все прошло как написано, то установка CUDA должна пройти без неожиданностей. Загружаем и запускаем загруженный бинарный файл на выполнение, отвечаем на пару вопросов и получаем возможность писать программы на CUDA. Помним, что работаем на ноутбуке, а значит NVIDIA карта у нас "вторая". Поэтому откомпиллированные CUDA программы запускаем используя optirun.
Написано по материалам со следующих ссылок:
http://www.blackmoreops.com/2014/06/27/kali-linux-1-0-7-kernel-3-14-install-proprietary-nvidia-driver/
https://forums.kali.org/showthread.php?21956-%28Guide%29-Installing-Nvidia-Bumblebee-CUDA-for-Optimus-enabled-Laptops


2 комментария:

Шурик комментирует...

Работает просто волшебно ;)
P.S. 2020 год)

Unknown комментирует...

Спасибо теперь после перезагрузки ничего не запускается)