как установить NVIDIA на ноутбуке с Linux

На современных ноутбуках с процессором Intel часто идут две видеокарты, одна интегрированная на чипсете Intel, вторая дискретная — в основном NVIDIA. Производители объясняют это тем, что интегрированная карта Intel сильно экономит заряд батареи  и позволяет значительно увеличить время работы ноутбука в автономном режиме. Не так сильно греется (нет необходимости в дополнительном теплоотводе). Поддерживает OpenGL инструкции и все современные игры можно запускать на видеокарте Intel.

Почему не устраивает Intel

Казалось бы, сплошные плюсы у Intel, но в чем же подвох? А подвох в том, что на дешевых ноутбуках (не знаю как на дорогих) интегрированная Intel видеокарта дает плохое изображение. Проявляется это в мерцании экрана и как следствие усталости глаз. Попытка поменять частоту ШИМ ни к чему не привела. Изображение стало стабильнее, но потом все равно глаза уставали. Не понято, почему это происходило в Linux, ведь под Windows на том же ноутбуке не было проблем с интеловской видеокарточкой. Нужно было как-то задействовать дискретную NVIDIA карту.

В современных ноутбуках видео-подсистема устроена так, что основной видеотрафик (десктоп, офис, терминал) идет через Intel видеокарту, а через NVIDIA шел видеопоток только с приложений специально привязанных к этой карте, например, игры. А вот, чтобы пустить весь видеосигнал через NVIDIA никак не получалось. Пробовал множество дистрибутивов Linux и нигде не мог найти ответа на этот вопрос. Все было заточено под энергосбережение, т.е. основной видеокартой шел Intel, а NVIDIA для экстремальных нагрузок. А хотелось, чтобы NVIDIA работала все время.

Как перейти на NVIDIA

После гугления и курения форумов пришел к выводу, что вопрос настройки NVIDIA на ноутбуках интересует многих людей. Но четкого руководства по полному переходу на NVIDIA не было. Все зависело от конкретного дистрибутива Linux и то, что у кого-то получилось при полном повторении всех шагов не приводило к результату на твоем ноутбуке.

В итоге, после нескольких попыток с Ubuntu, OpenSuSe, CentOS у меня получилось сделать NVIDIA основной видеокартой в Ubuntu 17.10 на моем ноутбуке ASUS 540.

Установка

Рассмотри установку NVidia на чистой Ubuntu 17.10 (из коробки).

Добавляем репозитарий из которого будем ставить:

sudo apt add repository ppa:xorg-edgers/ppa

Затем ставим драйвера и вспомогательные утилиты:

sudo apt-get install nvidia-361 nvidia-settings nvidia-prime

Здесь стоит обратить внимание на версию пакета nvidia. Не всегда самая последняя является лучшей. Надо смотреть отзывы на форумах.

Подгружаем драйвер в модуль:

lsmod
sudo modprobe nvidia

Проверяем, как установился драйвер:

lsmod | egrep nvidia
~/Dropbox/Linux/Ubuntu$ lsmod | egrep nvidia
nvidia_uvm            663552  0
nvidia_drm             45056  6
nvidia_modeset        843776  5 nvidia_drm
nvidia              13004800  382 nvidia_modeset,nvidia_uvm
drm_kms_helper        167936  2 i915,nvidia_drm
drm                   356352  12 i915,nvidia_drm,drm_kms_helper

Командой glxinfo определяем карту, которая будет выполнять OpenGL инструкции:

glxinfo | egrep render

Вывод этой команды должен содержать название дискретной видеокарты:

 glxinfo | egrep render
direct rendering: Yes
OpenGL renderer string: GeForce 840M/PCIe/SSE2
GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth, 
GL_KHR_robustness, GL_KTX_buffer_region, GL_NVX_conditional_render, 
GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, 
GL_NV_parameter_buffer_object2, GL_NV_path_rendering, 
GL_ARB_compute_variable_group_size, GL_ARB_conditional_render_inverted, 
GL_KHR_robustness, GL_KTX_buffer_region, GL_NVX_conditional_render, 
GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, 
GL_NV_parameter_buffer_object2, GL_NV_path_rendering, 
GL_EXT_protected_textures, GL_EXT_render_snorm, GL_EXT_robustness, 
GL_NV_conditional_render, GL_NV_copy_buffer, GL_NV_copy_image, 
GL_NV_packed_float_linear, GL_NV_path_rendering, 
GL_OES_fbo_render_mipmap, GL_OES_geometry_point_size,

Теперь воспользуемся замечательной утилитой nvidia-settings, которую мы поставили вместе с драйверами. Nvidia-settings предоставит исчерпывающую информацию о параметрах дискретной видеокарты и позволит сделать изменения в ряде настроек.

Главное окно nvidia-settings

 

Параметры дискретной видеокарты

 

Датчик температуры на дискретной видеокарте

Если вы хотите, чтобы за отрисовку всей графики (декстоп, терминал, браузер, игры) полностью отвечала карта NVIDIA, то выберете ее в списке GPU. Если необходимо экономить энергию батареи ноутбука, то выбирайте встроенную видеокарту Intel.

Режим работы всей графической системы ноутбука

Тесты

После того, как NVIDIA драйверы были успешно установлены, нужно провести ряд тестов показывающих, что дискретная видеокарта NVIDIA выполняют всю работу по обсчету сцены. Для этого запустим 3D тест посмотрим на датчик температуры дискретной карты. Если температура будет повышаться, значит вся вычислительная нагрузка идет на дискретную видеокарту.

glxgears

Самый простой и эффективный тест для видеокарты. Вращаются три шестеренки. Тест glxgears входит в пакет mesa-utils:

sudo apt-get install mesa-utils

запускается тест командой:

glxgears

Смотрим на шестеренки, консольку, куда выводится текущий FPS и заранее приготовленное окно nvidia-settings с датчиком температуры.

GL Mark

В отличие от glxgears — это продвинутый тест, который проверяет несколько режимов работы Open GL.

sudo apt-get install glmark2
glmark2

Unigine

Довольно прикольный набор бесплатных тестов, которые могут конкретно нагрузить вашу видеокарту. Скачать исполняемый файл можно по следующей ссылке:

https://benchmark.unigine.com/heaven

Выводы

Приведены рекомендации по установке драйвера для NVIDIA карты под Linux (Ubuntu). Показано, как перевести весь видеотрафик на дискретную карту NVIDIA. Описаны способы проверки корректности установки драйверов.

Почитать еще