Update: Наконец установил драйвер, но __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
не работает. Зато переключение intel only
и nvidia only
с ребутом работает.
Итак, есть система Debian 12 bookworm. На вики показали как устанавливается драйвера нвидии (у меня ноутбучная GT650M):
# apt update
# apt install nvidia-legacy-390xx-driver firmware-misc-nonfree
Однако этот пакет есть в репах sid и bullseye, и более ранних, но нету в репах bookworm. Нагуглил вариант безопасного добавления репы другого релиза в stable, однако у меня при sudo apt update
захотел обновить пол системы, поэтому я ешё немного подправил конфиг:
$ cat /etc/apt/preferences.d/art-pin-priority
Package: *
Pin: release a=stable
Pin-Priority: 990
Package: *
Pin: release a=testing
Pin-Priority: 650
Package: *
Pin: release a=unstable,sid
Pin-Priority: 50
Здесь я узнал про варианты Pin-Priority:
Значения веса приоритета могут быть следующими:
P >= 1000 - пакет будет установлен, даже если это приведет к понижению версии уже установленного пакета
990 <= P < 1000 - пакет будет установлен, если не установлена более новая версия
500 <= P < 990 - пакет будет установлен, если нет пакета принадлежащего к целевому выпуску или не установлена более новая версия
100 <= P < 500 - пакет будет установлен, если нет кандидатов из других источников или установленного пакета более новой версии
0 < P < 100 - пакет будет установлен, если нет других кандидатов и установленных пакетов любой версии
P < 0 - пакет не будет установлен ни при каких условиях
P = 0 - неопределенное состояние, не используется
Теперь при sudo apt update
apt не рвётся ничего обновлять. Недавно узнал про опцию -s
или --dry-run
для apt. Пробую: $ apt -s install -t sid nvidia-legacy-390xx-driver firmware-misc-nonfree &> nvidia-390-sid-install-log.txt
. Это dry run без рута - симуляция вместо рискованных действий. И там жопа: 4214 строк вывода (включая пустые), ключевое там Обновлено 1002 пакетов, установлено 230 новых пакетов, для удаления отмечено 519 пакетов, и 1807 пакетов не обновлено.
Удаляет, но не обновляет кучу пакетов, которые я явно устанавливал sudo apt install foo
. Помимо прочего, драйвер нвидии из сида зависит от более новой libc6
из сида, думаю она могла сломать (в dry run) пол системы.
В другом месте человек поставил нвидию из bullseye, а не sid, у него не встало из-за ядра 6.1, на ядре 5.10 у него заработало. Как думаете, попробовать этот вариант? Хотя там в конце рекомендуют ставить из sid для ядра 6.1.
Проверил - производительность Nouveau хуже, чем у интегряхи.
В крайнем случае могу пересесть на bullseye, а программы, нужные свежими ставить из flatpak.
Update: С помощью sudo apt install nvidia-legacy-390xx-driver/unstable firmware-misc-nonfree/unstable
драйвер установился, модуль загружается:
$ lsmod | grep nvidia
nvidia_drm 53248 0
nvidia_modeset 1060864 1 nvidia_drm
nvidia 15896576 4 nvidia_modeset
ipmi_msghandler 77824 2 ipmi_devintf,nvidia
drm_kms_helper 208896 3 drm_display_helper,nvidia_drm,i915
drm 614400 36 drm_kms_helper,drm_display_helper,drm_buddy,nvidia_drm,i915,ttm
video 65536 4 dell_wmi,nvidia,dell_laptop,i915
Более того, пакет не создавал никаких xorg.conf
, я руками нашёл в инете (НЕ с первого раза) конфиг, который грузит обе видюхи и НЕ делает unload nvidia:
$ cat /etc/X11/xorg.conf.d/10-nvidia-forum-prime.conf
Section "ServerLayout"
Identifier "layout"
Option "AllowNVIDIAGPUScreens"
EndSection
Section "Device"
Identifier "intel"
Driver "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
EndSection
Section "OutputClass"
Identifier "intel"
MatchDriver "i915"
Driver "modesetting"
EndSection
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
ModulePath "/usr/lib/nvidia/xorg"
ModulePath "/usr/lib/xorg/modules"
EndSection
Вот здесь, в секции Using NVIDIA GPU as the primary GPU показана инструкция и конфиги для nvidia-only
, не забудьте заставить ваш display manager подшаманить над xrandr (та же статья, тот же раздел).
Также здесь нашёл хак чтобы принудительно загружать модуль ядра нвидии:
Maybe it helps to preload the kernel driver. Try this:
Create /etc/systemd/system/load-nvidia.service
[Unit]
Description=Load Nvidia driver
Before=display-manager.service
[Service]
Type=oneshot
ExecStart=/sbin/modprobe nvidia
[Install]
WantedBy=display-manager.service
and enable it using
`sudo systemctl enable load-nvidia`
make sure /sbin/modprobe is the correct path. Then reboot.