Nouveau (Українська)
У цій статті розглядається відкритий драйвер Nouveau для відеокарт Nvidia. Якщо ви хочете ознайомитися із пропієтарним драйвером, перегляньте сторінку NVIDIA.
Щоб визначити функції, які Nouveau підтримує з вашою відеокартою, спочатку знайдіть її в цьому списку (кодові назви Nouveau). Порівняйте потрібну кодову назву з таблицею функцій (Feature Matrix).
Встановлення
- Для драйвера DDX (який надає 2D прискорення в сесії X.org) встановіть пакунок xf86-video-nouveau
- Для підтримки 3D-прискорення, встановіть пакунок mesa, який надає драйвер DRI
- Для підтримки 32-бітних програм встановіть пакунок lib32-mesa (репозитарій multilib).
(Необов'язково) Щоб отримати останні вдосконалення Nouveau, встановіть такі пакети:
- linux-gitAUR
- libdrm-gitAUR
- lib32-libdrm-gitAUR
- lib32-mesa-gitAUR
- mesa-gitAUR
Апаратне прискорення відео
Nouveau підтримує як і VA-API, так і VDPAU
- Підтримка є від серії GeForce 8 і до Kepler (NV108) (Але ви ще можете спробувати це все завести на Maxwell).
Але для його роботи потрібно встановити пакет прошивок nouveau-fwAUR, отриманих з бінарного драйвера NVIDIA
За деталями звертайтеся до сторінки Hardware video acceleration
Підготовка до встановлення Mesa NVK Vulkan Драйвера
Для драйвера NVK необхідне ядро версії 6.7 та више і mesa версії 24.1 та вище.
Перш ніж використовувати NVK, ви повинні видалити пропієтарний драйвер. Необхідно видалити ці пакунки з переліку (та їх lib32 і модулі DKMS):
Якщо ви використовуєте гібридний ноутбук або систему з двома графічним процесором, переконайтеся, що ви не внесли Nouveau до чорного списку менеджером графічного процесора в /etc/modprobe.d
.
Встановлення Mesa NVK
Для підтримки Vulkan (Turing NV160 та новіших), встановіть пакунок vulkan-nouveau.
Для підтримки 32-бітної версії Vulkan встановіть пакет lib32-vulkan-nouveau
Якщо хочете мати найновішу версію NVK, встановіть пакунок vulkan-nouveau-gitAUR та lib32-vulkan-nouveau-gitAUR, для підтримки 32-бітної версії Vulkan
Використання Mesa NVK
Щоб переконатися, що все працює vulkaninfo
з vulkan-tools можна використовувати. Він повинен повідомити, що графічний процесор NVIDIA у вашій системі використовує драйвер NVK.
$ vulkaninfo ... GPU id : 0 (NVIDIA GeForce RTX 3050 Ti Laptop GPU (NVK GA107)): Surface type = VK_KHR_wayland_surface Formats: count = 8 ...
Поради та підказки стосовно графічних API
Використання NVK на відеокартах NVF0-NV140 і новіші
Якщо визначено до 1 або true, це дозволить перерахувати та використовувати всі GPU Kepler та новіші, включаючи графічні процесори, для яких апаратна підтримка погано протестована або повністю зламана. Джерело
$ NVK_I_WANT_A_BROKEN_VULKAN_DRIVER=1 програма
Використання Zink
Так як виникають проблеми при реалізації нативного OpenGL для драйверу Nouveau, було прийнято рішення використовувати драйвер Zink.
Zink — це драйвер Gallium, який генерує виклики API Vulkan замість того, щоб орієнтуватися на конкретну архітектуру GPU. Це можна використовувати для отримання повної підтримки OpenGL на пристроях, які підтримують лише Vulkan.
Найкраще він зараз працює на відеокартах NV160 та надає OpenGL 4.6 Просто додайте цю змінну перед командою запуску:
$ NOUVEAU_USE_ZINK=1 програма
Як альтернативу, ви можете використовувати змінну MESA_LOADER_DRIVER_OVERRIDE=zink
:
$ MESA_LOADER_DRIVER_OVERRIDE=zink програма
Також, якщо у вас відеокарта нижча за NV160, то ви можете комбінувати дві змінні
$ NVK_I_WANT_A_BROKEN_VULKAN_DRIVER=1 NOUVEAU_USE_ZINK=1 програма
Завантаження в систему
Модуль ядра Nouveau повинен завантажуватися автоматично під час завантаження системи. Якщо це не так, перевірте наступне:
- Пенеконайтеся, що у вас немає зайвих параметрів ядра, на кшталт
nomodeset
абоvga=
, оскільки драйвер вимагає Kernel mode setting - Перконайтеся, що ви або якісь інші утиліти не занесли драйвер Nouveau в чорний список в
/etc/modprobe.d/
або/usr/lib/modprobe.d/
. - Перевірте файл
/etc/X11/xorg.conf
або подібні в теці/etc/X11/xorg.conf.d/
. Ймовірно, там залишилися якісь конфіги.
Kernel Mode Setting
Налаштування режиму ядра (KMS) підтримується Nouveau і увімкнуто за замовчуванням, починаючи з mkinitcpio v32. Для інших налаштувань див. Налаштування режиму ядра, щоб отримати інструкції щодо того, як увімкнути KMS якнайшвидше під час процесу завантаження.
Поради та підказки
Залишити встановленим драйвер NVIDIA
Якщо ви хочете залишити встановленим пропрієтарний драйвер NVIDIA (і не використовуєте OpenGL), але бажаєте використовувати драйвер Nouveau, виконайте наступні кроки:
Закоментуйте чорний список для драйвера Nouveau у файлах /etc/modprobe.d/nouveau_blacklist.conf
та /usr/lib/modprobe.d/nvidia-utils.conf
, змінивши їх так:
#blacklist nouveau
Також, можливо, вам потрібно буде закоментувати інші файли конфігурації, які пріоритезують пропрієтарний драйвер, наприклад, у systemd-modules-load /usr/lib/modules-load.d/nvidia-utils.conf
, та у
Udev /usr/lib/udev/rules.d/60-nvidia.rules
. Перевірте, які файли встановив драйвер, за допомогою наступної команди:
# pacman -Ql nvidia-utils | grep conf
Потім переконайтеся, що ви вимкнули всі служби з префіксом nvidia-
, які можуть викликати nvidia-modprobe
для завантаження модуля під час завантаження системи. Наприклад:
$ systemctl status nvidia-persistenced.service
І якщо ви використовуєте Xorg, скажіть Xorg завантажити nouveau замість NVIDIA, створивши файл /etc/X11/xorg.conf.d/20-nouveau.conf
з таким вмістом:
Section "Device" Identifier "Nvidia card" Driver "nouveau" EndSection
Перезавантажте систему, щоб зміни набрали чинності. І перевірте, чи все завантажилось правильно, переглянувши повідомлення ядра:
# dmesg
Монітори
Завітайте на сторінку Multihead#RandR, де написано як налаштувати декілька моніторів за допомогою RandR.
Налаштування роздільної здатності консолі
Ви можете виставити роздільну здатність за допомогою video=
в параметрах ядра (дивіться додатково: KMS).
Керування живленням (reclocking)
Відсутність належного керування живленням у драйвері nouveau є однією з найважливіших причин проблем із продуктивністю, оскільки під час використання більшість карт залишатимуться в стані низького енергоспоживання з нижчою тактовою частотою. Експериментальна підтримка керування живленням графічного процесора доступна від NV40, і до новіших відеокарт (не враховуючи NV130 та NV140).
IRC: #nouveau
.Ця частина вікі (4.3.0, 4.3.2 та 4.4) буде відноситися тільки для серії відеокарт від NV40, і до NV120. Для NV160 дивіться пункт 4.3.1
Для підтримки керування живленням потрібне ядро 4.5 та вище, керувати живленням можна через інтерфейс debugfs, який розташований за шляхом /sys/kernel/debug/dri/*/pstate
Щоб перевірити доступні рівні та поточне значення, виконайте:
# cat /sys/kernel/debug/dri/0/pstate
Щоб виставити потрібний параметр, виконайте
# echo pstate > /sys/kernel/debug/dri/0/pstate
Керування живленням для NV160 та вище
Вам потрібно мати ядро 6.7 та вище.
Додайте nouveau.config=NvGspRm=1
до параметрів ядра Linux. Це надає вам змогу використовувати автоматичне керування живленням.
Додаткові утиліти
Встановіть пакунок nouveau-reclockingAUR
Про пакунок:
- Ця утиліта на Lua має допомогти спростити процес reclocking та зробити це легше, без додаткових зусиль в терміналі. Зауважте, що якщо ваш графічний процесор не підтримує reclocking, то ця утиліта напевно для вас марна витрата часу. Джерело
Для перевірки, передивіться доступні профілі
# nouveau-reclocking --list
Якщо у вас відобразився список pstate, то можна спробувати виставити максимальне число:
# nouveau-reclocking --max
Збережіть профіль, щоб він не скинувся та автоматично застосовувався після перезавантаження:
# nouveau-reclocking --save
Керування вентиляторами
Якщо це реалізовано для вашої карти, ви можете налаштувати керування вентилятором через /sys
$ find /sys -name pwm1_enable /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon1/pwm1_enable $ readlink /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver ../../../../bus/pci/drivers/nouveau
pwm1_enable
можна встановити на 0, 1 або 2, що означає НЕМАЄ, РУЧНИЙ і АВТОМАТИЧНИЙ контроль вентилятора. Якщо встановлено ручне керування вентилятором, ви можете встановити pwm1
вручну, наприклад до 40 на 40%.
Ви також можете встановити це за правилом udev:
$ cat /etc/udev/rules.d/50-nouveau-hwmon.rules ACTION=="add", SUBSYSTEM=="hwmon", DRIVERS=="nouveau", ATTR{pwm1_enable}="2"
Джерела:
- https://floppym.blogspot.de/2013/07/fan-control-with-nouveau.html
- https://web.archive.org/web/20141031191559/https://kalgan.cc/blog/posts/Controlling_nVidia_cards_fans_with_nouveau_in_Debian/
Optimus
У вас є два рішення для використання Optimus на ноутбуці (гібридна графіка, коли у вас два графічних процесори на вашому ноутбуці): bumblebee та PRIME
Вертикальна синхронізація
Композитори Xorg схильні виявляти проблеми з Nouveau. На відміну від більшості з них, Picom пропонує безліч варіантів налаштування для більш гладкого результату без розривів. Конфігурація, яка, як очікується, дасть хороший результат, буде такою:
$ picom -b --unredir-if-possible --backend xr_glx_hybrid --vsync --use-damage --glx-no-stencil
Усунення несправностей
Щоб отримати додаткову інформацію в логах, додайте drm.debug=14
та log_buf_len=16M
до параметрів ядра
Створіть докладний журнал Xorg:
$ startx -- -logverbose 9 -verbose 9
Переглянути параметри та значення завантаженого відеомодуля:
$ modinfo -p video
Вимкніть MSI
Якщо у вас все ще виникають проблеми із завантаженням модуля або запуском X-сервера, додайте nouveau.config=NvMSI=0
до ваших параметрів ядра.
Джерело: [1]
Фантомний відеовихід
Драйвер nouveau може виявити «фантомні» виходи. Наприклад, і VGA-1, і LVDS-1 відображаються як підключені, але присутній лише LVDS-1. Це спричиняє проблеми з відображенням і/або запобігає призупиненню під час закриття кришки.
Параметри ядра
Проблему можна також подолати, вимкнувши фантомний вихід (VGA-1 у наведених прикладах) за допомогою параметрів ядра:
video=VGA-1:d
Де d = вимкнено
Модуль ядра nouveau також має можливість вимкнути виявлення ТВ-виходу
tv_disable=1
xorg.conf
Фантомний вихід також можна вимкнути в Xorg, додавши наступне до /etc/X11/xorg.conf.d/20-nouveau.conf
:
Section "Monitor" Identifier "VGA-1" Option "Ignore" "1" EndSection
Xrandr
Xrandr може вимкнути вихід:
$ xrandr --output VGA-1 --off
Це можна додати до конфігурації xinit.
Випадкові блокування з повідомленнями про помилки ядра
Окремі мікросхеми Nvidia з Nouveau можуть спричиняти випадкові блокування системи та частіше викидати багато повідомлень ядра, що спостерігається за допомогою dmesg . Спробуйте додати nouveau.noaccel=1
до параметрів ядра. Джерело.
Зауважте, що використання параметра ядро nouveau.noaccel=1
може спричинити ~%100 використання ЦП на Wayland, якщо немає iGPU або iGPU вимкнено на заводі. Ви можете перейти до сеансу X11 або віддати перевагу додаванню LIBGL_ALWAYS_SOFTWARE=1
змінна середовища для wayland, щоб повністю вимкнути апаратне прискорення OpenGL.
Як альтернативу ви також можете використовувати QT_XCB_FORCE_SOFTWARE_OPENGL=1
змінна середовища , щоб вимкнути прискорення OpenGL у програмах Qt.
Таблиця плоскої панелі недійсна (Flat Panel Table Invalid)
Відеокарти NVIDIA з останніми наборами мікросхем можуть спричинити проблеми із запуском, зокрема неможливість запуску X11 і зависання lspci на невизначений час [2][3][4][5][6].
Це може порушити дію живих дистрибутивів/інсталяційних носіїв. Це можна виявити, запустивши lspci або перевіривши журнал systemd на наявність помилки:
nouveau E[ DRM]Pointer to flat panel table invalid
Система може запуститися, якщо драйвер Nouveau вимкнено шляхом передачі таких параметрів ядра:
modprobe.blacklist=nouveau
Потім драйвер Nouveau можна завантажити за допомогою
# modprobe nouveau
Після цього система повинна працювати правильно. Якщо у вас є інша графічна карта Nvidia або ви просто хочете бути в безпеці, ви можете вимкнути несправну карту за допомогою:
$ echo 1 > /sys/bus/pci/devices/[card device id]/remove