Основной целью покупки нового ПК в декабре с NVIDIA 1050 была возможность играть в игры на Linux без необходимости перезагружаться в Windows.
Собственно, для этого надо установить драйвера, что бы система начала использовать “проприентарщину” вместо nouveau
(хотя, справедливости ради, надо отметить, что на nouveau
я и не пробовал запускать игры).
После нескольких предыдущих попыток пару лет тому установить драйвера NVIDIA на ноутбук – ожидал много попа-боли и ковыряния в конфигах и логах X.org, но, внезапно – всё завелось с полупинка.
Единственная “проблема”, которая возникла, была вызвана выбором неправильного драйвера, см. ниже.
Документация тут>>>.
Содержание
Установка драйвера – попытка номер раз (неправильная)
Находим видеокарту, и проверяем используемый сейчас драйвер:
[simterm]
[setevoy@setevoy-arch-pc ~]$ lspci -k | grep -A 2 -E "(VGA|3D)" 01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) Subsystem: ASUSTeK Computer Inc. GP107 [GeForce GTX 1050 Ti] Kernel driver in use: nouveau
[/simterm]
Проверяем список старых карт тут>>>.
Собственно проблема была в том, что сначала я установил nvidia-lts
, соблазнившись приставкой lts.
Устанавливем (нет):
[simterm]
[setevoy@setevoy-arch-pc .config]$ sudo pacman -S nvidia-lts
[/simterm]
Перезагружаемся, и – совершенно ожидаемо для меня в тот момент, потому что проблем ждал – Openbox не запускается.
Проверяем используемый драйвер:
[simterm]
[setevoy@setevoy-arch-pc ~]$ lspci -k | grep -A 2 -E "(VGA|3D)" 01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) Subsystem: ASUSTeK Computer Inc. GP107 [GeForce GTX 1050 Ti] Kernel modules: nouveau
[/simterm]
Kernel modules: nouveau
Эм…
Проверяем /var/log/Xorg.0.log
:
[simterm]
... [ 32.079] (==) Matched nouveau as autoconfigured driver 0 [ 32.079] (==) Matched nv as autoconfigured driver 1 [ 32.079] (==) Matched modesetting as autoconfigured driver 2 [ 32.079] (==) Matched fbdev as autoconfigured driver 3 [ 32.079] (==) Matched vesa as autoconfigured driver 4 [ 32.079] (==) Assigned the driver to the xf86ConfigLayout [ 32.079] (II) LoadModule: "nouveau" [ 32.107] (WW) Warning, couldn't open module nouveau [ 32.107] (EE) Failed to load module "nouveau" (module does not exist, 0) [ 32.107] (II) LoadModule: "nv" [ 32.107] (WW) Warning, couldn't open module nv [ 32.107] (EE) Failed to load module "nv" (module does not exist, 0) [ 32.107] (II) LoadModule: "modesetting" [ 32.107] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so [ 32.123] (II) Module modesetting: vendor="X.Org Foundation" [ 32.123] compiled for 1.20.3, module version = 1.20.3 [ 32.123] Module class: X.Org Video Driver [ 32.123] ABI class: X.Org Video Driver, version 24.0 [ 32.123] (II) LoadModule: "fbdev" [ 32.123] (WW) Warning, couldn't open module fbdev [ 32.123] (EE) Failed to load module "fbdev" (module does not exist, 0) [ 32.123] (II) LoadModule: "vesa" [ 32.123] (WW) Warning, couldn't open module vesa [ 32.123] (EE) Failed to load module "vesa" (module does not exist, 0) [ 32.123] (II) modesetting: Driver for Modesetting Kernel Drivers: kms [ 32.123] (EE) open /dev/dri/card0: No such file or directory [ 32.123] (WW) Falling back to old probe method for modesetting [ 32.123] (EE) open /dev/dri/card0: No such file or directory [ 32.123] (EE) Screen 0 deleted because of no matching config section. [ 32.123] (II) UnloadModule: "modesetting" [ 32.123] (EE) Device(s) detected, but none match those in the config file. [ 32.123] (EE) Fatal server error: [ 32.123] (EE) no screens found(EE) ...
[/simterm]
Okay… Google? 🙂
Нагуглилось обсуждение тут>>>,
Попробуем обновить initramfs
, как упоминается в документации тут>>> и тут>>>.
Редактируем /etc/mkinitcpio.conf
, добавляем модули:
... MODULES=(nouveau, nv) ...
Собираем ядро, сохраняем его отдельно – с другим именем, что бы не затереть нынешнее:
[simterm]
[root@setevoy-arch-pc setevoy]# mkinitcpio -g /boot/linux-nv.img ==> Starting build: 4.20.11-arch2-1-ARCH -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [keyboard] -> Running build hook: [keymap] -> Running build hook: [modconf] -> Running build hook: [block] -> Running build hook: [lvm2] -> Running build hook: [filesystems] -> Running build hook: [fsck] ==> ERROR: module not found: `nouveau,' ==> ERROR: module not found: `nv' ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/linux-nv.img ==> WARNING: errors were encountered during the build. The image may not be complete.
[/simterm]
Ладно… С этим решением явно что-то не так, но делалось вечером, искать правильные имена модулей или чем там вызвана ошибка – откровенно лень.
Установка драйвера – попытка номер два (правильная)
Проверяем установленные пакеты, и обращаем внимание на описание:
[simterm]
[root@setevoy-arch-pc setevoy]# pacman -Qs nvidia local/libvdpau 1.1.1+3+ga21bf7a-1 Nvidia VDPAU library local/nvidia-lts 1:418.43-1 NVIDIA drivers for linux-lts local/nvidia-utils 418.43-2 NVIDIA drivers utilities
[/simterm]
NVIDIA drivers for linux-lts
Вот тут я понял свою ошибку: пакет с ядром linux-lts
!= linux
, соответсвенно пакет nvidia-lts
!= nvidia
и не явлется версией ядра с Long Term Support, а просто предназначен для другой версии ядра.
Удаляем этот драйвер:
[simterm]
[setevoy@setevoy-arch-pc ~]$ sudo pacman -Rsn nvidia-lts
[/simterm]
Устанавливаем обычный nvidia
пакет:
[simterm]
[setevoy@setevoy-arch-pc ~]$ sudo pacman -S nvidia
[/simterm]
Перезагружаем машину, проверяем:
[simterm]
[setevoy@setevoy-arch-pc ~]$ lspci -k | grep -A 2 -E "(VGA|3D)" 01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) Subsystem: ASUSTeK Computer Inc. GP107 [GeForce GTX 1050 Ti] Kernel driver in use: nvidia
[/simterm]
Kernel driver in use: nvidia
Окей.
Настройка мониторов
Последний нюанс – мониторы переименовались, так что надо обновить их настройку.
С nouveau
они были:
[simterm]
[setevoy@setevoy-arch-pc ~]$ cat .config/openbox/autostart xrandr --output HDMI-1 --primary xrandr --output HDMI-1 --left-of DVI-D-1
[/simterm]
А теперь:
[simterm]
[setevoy@setevoy-arch-pc .config]$ xrandr --listmonitors Monitors: 2 0: +DVI-D-0 1920/530x1080/300+0+0 DVI-D-0 1: +HDMI-0 1920/531x1080/299+1920+0 HDMI-0
[/simterm]
Обновляем конфиг, приводим к виду:
[simterm]
[setevoy@setevoy-arch-pc ~]$ cat .config/openbox/autostart # nouveau #xrandr --output HDMI-1 --primary #xrandr --output HDMI-1 --left-of DVI-D-1 # nvidia xrandr --output HDMI-0 --primary xrandr --output HDMI-0 --left-of DVI-D-0 # tools setxkbmap -layout us,ru -option grp:lctrl_lshift_toggle,grp_led:scroll -variant winkeys & volumeicon & qxkb &
[/simterm]
Лучше бы делать это через правила udev
– но всё не доходят руки.
Готово.