Задача:
устранить фризы и тормоза в графическом
окружении от кривого драйвера для
графической карты Intel HD Graphics 5500 (Broadwell
GT2), а также сохранить работоспособность
bumblebee с дискретной
видеокартой NVIDIA
Optimus.
Что
имеем: ноутбук Lenovo B70-80 с установленным
чистым Debian 9.3 с ядром 4.9.0-4-amd64. В данном
ноутбуке, как показывает выхлоп от $inxi
-G, две видеокарты: Intel HD Graphics 5500 (Broadwell
GT2) и NVIDIA GK208M [GeForce 920M]. Рандомно наблюдаются
фризы при прокрутке текста в тяжёлых
программах типа Firefox и LibreOffice, кратковременное
резкое потемнение экрана при просмотре
видео на YouTub в всё той же Огненной Лисе,
а также произвольное «убегание экрана
по вертикальной и горизонтальной
плоскостях» с выявлением следующей
ругани в логи:
kernel: [drm:gen8_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
На
многочисленных форумах, багтрекерах и
в ченджлоге к релизу версий ядра linux на
http://kernel.org/ рекомендуется
обновить ядро. Чем мы и займёмся.
1.
Обновляем список пакетов:
#apt-get update
2.
Смотрим какие есть в бэкпортах новые
"ядерные" пакеты:
#apt search linux-image | grep bpo.*-amd64
На
момент написания инструкции, APT выдал
следующие результаты:
linux-headers-4.13.0-0.bpo.1-amd64/stretch-backports
4.13.13-1~bpo9+1 amd64
linux-headers-4.14.0-0.bpo.2-amd64/stretch-backports,now
4.14.7-1~bpo9+1 amd64
linux-headers-4.14.0-0.bpo.2-rt-amd64/stretch-backports
4.14.7-1~bpo9+1 amd64
linux-headers-4.14.0-0.bpo.3-amd64/stretch-backports,now
4.14.13-1~bpo9+1 amd64
linux-headers-4.14.0-0.bpo.3-rt-amd64/stretch-backports
4.14.13-1~bpo9+1 amd64
linux-image-4.13.0-0.bpo.1-amd64/stretch-backports
4.13.13-1~bpo9+1 amd64
linux-image-4.13.0-0.bpo.1-amd64-dbg/stretch-backports
4.13.13-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.2-amd64/stretch-backports,now
4.14.7-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.2-amd64-dbg/stretch-backports
4.14.7-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.2-rt-amd64/stretch-backports
4.14.7-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.2-rt-amd64-dbg/stretch-backports
4.14.7-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.3-amd64/stretch-backports
4.14.13-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.3-amd64-dbg/stretch-backports
4.14.13-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.3-rt-amd64/stretch-backports
4.14.13-1~bpo9+1 amd64
linux-image-4.14.0-0.bpo.3-rt-amd64-dbg/stretch-backports
4.14.13-1~bpo9+1 amd64
3.
Обновляем ядро до версии 4.14.0:
#apt-get install linux-headers-4.14.0-0.bpo.2-amd64 linux-image-4.14.0-0.bpo.2-amd64
4.
Правим grub.cfg с выставлением времени
ожидания в 15 секунд (пункт НЕОБЯЗАТЕЛЕН!
- это чисто моя хотелка ;):
#nano /boot/grub/grub.cfg
и
меняем значение «5» в строках set timeout=5
на set timeout=15
5.
Перегружаем ноутбук:
#reboot
6.
Проверяем отсутствие ошибки от модуля
intel:
#dmesg -T && journalctl -b -p3 | grep i915
7.
Удаляем пакеты и конфиги старого модуля
nvidia с зависимостями с последующей
очисткой системы от ставшими ненужными
пакетов:
#apt purge nvidia*
#apt autoremove
8.
Удаляем пакеты и конфиги старой версии
интерфейса подачи питания на дискретную
видеокарту с зависимостями и последующей
очисткой системы от ставшими ненужными
пакетов:
#apt purge dkms bbswitch-dkms
#apt autoremove
9.
Устанавливаем из бэкпортов новые версии
интерфейса подачи питания на дискретную
видеокарту, несвободного модуля для
нашего NVIDIA Optimus, а так же пакета bumblebee с
зависимостями:
#apt-get -t stretch-backports install dkms bbswitch-dkms nvidia-kernel-dkms nvidia-xconfig nvidia-settings bumblebee-nvidia
10.
Далее необходимо удалить пакет бэкенда
virtualgl и его конфиги. Этот пункт предполагает,
что у Вас имеется последняя версия
пакета virtualgl. В противном случае, скачиваем
его по следующей ссылке:
Удаляем пакет
virtualgl и конфиг
(Примечание: dpkg-reconfigure virtualgl почему-то
не помогает):
#apt purge virtualgl
Я
предварительно сложил скачанный вручную
пакет virtualgl в основную архивную директорию
пакетов APT, т.е. в /var/cache/apt/archives
Переходим
в соответствующую директорию:
#cd /var/cache/apt/archives
и
устанавливаем пакет:
#dpkg -i ./virtualgl*
Перегружаем
ноутбук: #reboot
11.
Тестируем работу intel-модуля в бенчмарке
(Предполагается, что Вы ранее установили
пакет mesa-utils):
$glxgears
11.
Для работы игр требующих для работы
ТОЛЬКО видеокарту NVIDIA, доставляем пакет
primus:
#apt-get -t stretch-backports install primus
Тестируем
bumblebee с GPU NVIDIA через primus:
$vblank_mode=0 optirun -b primus glxgears
P.S.:
в Steam для запуска игр требующих для
работы ТОЛЬКО видеокарту NVIDIA можно
указать параметры запуска соответствующих
игр через связку optirun и primus. Для этого
нужно сделать следующее. В Вашей
библиотеке купленных/скачанных игр
вызываем кликом правой кнопки мыши по
соответствующей игре всплывающее окно
и нажимаем на пункт «Свойства», далее
идём в «Установить параметры запуска...».
Вписываем нижеуказанную строчку и
сохраняем:
vblank_mode=0 optirun -b primus
%command%
P.P.S.:
После обновления ядра, dmesg и
журнал логов systemd -
стали
выдавать вот такую ругань в сторону
модуля WiFi:
kernel:
[ 4793.836881] ath: phy0: Could not kill baseband RX
Решается
перенастройкой пакета с модулями для
atheros:
#dpkg-reconfigure
firmware-atheros