, последнее обновление:

Ожидание полной инициализации видеокарт в systemd

Так уж получилось, что мой ноутбук с Core i7-9750H слишком быстрый, поэтому иксы (и wayland тоже) загружается до того, как будет инициализирована дискретная видеокарта (которая nVidia RTX 2060). Это чревато тем, что для дискретки будет использоваться драйвер modesetting вместо блоба, что автоматически означает “до свидания, 3D ускорение”.

Исправить это можно путем добавления ожидания появления устройств в systemd. Делается это так. В случае, если на арчвики статья пропадет - дублирую тут.

Гайд подойдет и для десктопов с несколькими видеокартами.

Udev

Необходимо добавить правило udev’a в /etc/udev/rules.d/99-systemd-dri-devices.rules:

ACTION=="add", KERNEL=="card*", SUBSYSTEM=="drm", TAG+="systemd"

Это правило добавит нужные файлы устройств в /dev, которые мы будем отслеживать.

Systemd

Нам надо добавить зависимости для display-manager в /etc/systemd/system/display-manager.service.d/10-wait-for-dri-devices.conf:

[Unit]
Wants=dev-dri-card0.device
After=dev-dri-card0.device

В случае наличия нескольких карт, как у меня, надо добавить через пробел dev-dri-card1.device (и так далее, в зависимости от количества видеокарт):

[Unit]
Wants=dev-dri-card0.device dev-dri-card1.device
After=dev-dri-card0.device dev-dri-card1.device