Основной целью покупки нового ПК в декабре с NVIDIA 1050 была возможность играть в игры на Linux без необходимости перезагружаться в Windows.
Собственно, для этого надо установить драйвера, что бы система начала использовать “проприентарщину” вместо nouveau
(хотя, справедливости ради, надо отметить, что на nouveau
я и не пробовал запускать игры).
После нескольких предыдущих попыток пару лет тому установить драйвера NVIDIA на ноутбук – ожидал много попа-боли и ковыряния в конфигах и логах X.org, но, внезапно – всё завелось с полупинка.
Единственная “проблема”, которая возникла, была вызвана выбором неправильного драйвера, см. ниже.
Документация тут>>>.
Установка драйвера – попытка номер раз (неправильная)
Находим видеокарту, и проверяем используемый сейчас драйвер:
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
Проверяем список старых карт тут>>>.
Собственно проблема была в том, что сначала я установил nvidia-lts
, соблазнившись приставкой lts.
Устанавливем (нет):
Перезагружаемся, и – совершенно ожидаемо для меня в тот момент, потому что проблем ждал – Openbox не запускается.
Проверяем используемый драйвер:
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
Kernel modules: nouveau
Эм…
Проверяем /var/log/Xorg.0.log
:
...
[ 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)
...
Okay… Google? 🙂
Нагуглилось обсуждение тут>>>,
Попробуем обновить initramfs
, как упоминается в документации тут>>> и тут>>>.
Редактируем /etc/mkinitcpio.conf
, добавляем модули:
...
MODULES=(nouveau, nv)
...
Собираем ядро, сохраняем его отдельно – с другим именем, что бы не затереть нынешнее:
==> 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.
Ладно… С этим решением явно что-то не так, но делалось вечером, искать правильные имена модулей или чем там вызвана ошибка – откровенно лень.
Установка драйвера – попытка номер два (правильная)
Проверяем установленные пакеты, и обращаем внимание на описание:
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
NVIDIA drivers for linux-lts
Вот тут я понял свою ошибку: пакет с ядром linux-lts
!= linux
, соответсвенно пакет nvidia-lts
!= nvidia
и не явлется версией ядра с Long Term Support, а просто предназначен для другой версии ядра.
Удаляем этот драйвер:
Устанавливаем обычный nvidia
пакет:
Перезагружаем машину, проверяем:
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
Kernel driver in use: nvidia
Окей.
Настройка мониторов
Последний нюанс – мониторы переименовались, так что надо обновить их настройку.
С nouveau
они были:
xrandr --output HDMI-1 --primary
xrandr --output HDMI-1 --left-of DVI-D-1
А теперь:
Monitors: 2
0: +DVI-D-0 1920/530x1080/300+0+0 DVI-D-0
1: +HDMI-0 1920/531x1080/299+1920+0 HDMI-0
Обновляем конфиг, приводим к виду:
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 &
Лучше бы делать это через правила udev
– но всё не доходят руки.
Готово.