воскресенье, 29 сентября 2019 г.

Установка и настройка драйверов nvidia для X-сервера

Заменил в компьютере одну подержанную устаревшую материнскую плату на другую подержанную, устаревшую чуть менее. На прежней был встроенный видеоконтроллер от Intel, на новой - от Nvidia. Не задумываясь поставил свободный драйвер nouveau, однако столкнулся с проблемами: 1. изображение на экране изредка моргало, как будто кто-то периодически вставляет 25 кадр, 2. компьютер спонтанно зависал, предварительно заливая экран белым цветом в чёрные горизонтальные прерывистые полоски. Стал грешить на видеоконтроллер и его драйвер. Пытался заставить работать драйвер nvidia где-то с полчаса. Попытки увенчались успехом. Пока помнил последовательность настройки, записал всё в блокнот. Теперь из блокнота выбрасываю записи в блог, чтобы в следующий раз не ходить по всем граблям снова.

Для начала узнаем, видеконтроллер какого из производителей установлен в системе:
$ lspci | fgrep VGA
00:0d.0 VGA compatible controller: NVIDIA Corporation C61 [GeForce 7025 / nForce 630a] (rev a2)
В нашем случае это встроенный видеоконтроллер NVidia. Чтобы определить, какой драйвер следует использовать с этим видеоконтроллером, установим утилиту nvidia-detect и запустим её:
# apt-get install nvidia-detect
# nvidia-detect
Утилита должна сообщить имя пакета с драйвером видеоконтроллера. В моём случае это был пакет nvidia-legacy-304xx-driver. Установим этот пакет:
# apt-get install --install-recommends nvidia-legacy-304xx-driver
После установки пакета с драйвером будет собран модуль ядра, который нужно подгрузить. Сделать это можно при помощи следующей команды:
# modprobe nvidia-legacy-304xx
Вписываем модуль ядра nvidia-legacy-304xx в файл /etc/modules, чтобы при перезагрузке системы или включении компьютера этот модуль загружался автоматически.

Также нужно установить поддержку этого драйвера со стороны X-сервера. Для этого ставим пакет с именем xserver-xorg-video-nvidia-legacy-304xx:
# apt-get install xserver-xorg-video-nvidia-legacy-304xx
Свободный драйвер nouveau в X-сервере имеет более высокий приоритет, чем фирменный драйвер от NVidia. Поэтому, чтобы X-сервер использовал именно фирменный драйвер, нужно удалить из системы пакет, отвечающий за поддержку nouveau со стороны X-сервера:
# apt-get remove xserver-xorg-video-nouveau
Осталось перезапустить дисплейный менеджер, чтобы он запустил X-сервер, а X-сервер начал использовать новые драйверы. Я пользуюсь дисплейным менеджером lightdm, поэтому в моём случае это можно сделать следующими командами:
# systemctl stop lightdm
# systemctl start lightdm
По окончании настройки пакет nvidia-detect можно удалить, т.к. вероятность, что он вновь понадобится, довольно мала.
# apt-get purge nvidia-detect
P.S. Кстати, замена драйвера помогла решить проблему.

Комментариев нет: