воскресенье, 4 марта 2018 г.

Обновление ядра linux и необходимых пакетов для работы Bumblebee с NVIDIA Optimus в Debian 9.3, а также устранение ошибки при работе модуля xserver-xorg-video-intel



Задача: устранить фризы и тормоза в графическом окружении от кривого драйвера для графической карты 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


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

Отправить комментарий