Это рецепт сборки драйвера DisplayLink в пакете RPM для Fedora, CentOS Stream, Rocky Linux и AlmaLinux OS. Этот драйвер поддерживает следующие семейства устройств:
В пакет входит библиотека evdi с открытым исходным кодом.
Пакеты автоматически собираются с помощью GitHub Actions и загружаются в выпуски GitHub.
ПРИМЕЧАНИЕ. Теперь можно легко собрать файл .spec (в макете fe). Загрузите файлы через
make srpm
.
Чтобы создать пакет драйвера rpm, вы можете запустить команду make
из извлеченного каталога. Makefile должен загрузить необходимые вам файлы и создать RPM.
По умолчанию make
будет использовать драйвер evdi, входящий в состав пакета драйверов Displaylink. Если вам нужно использовать более новую версию из репозитория evdi Github, и в настоящее время она отсутствует в пакете драйверов Displaylink, вы можете сделать это, запустив:
make github-release
Чтобы использовать displaylink-rpm и модуль ядра evdi с включенной безопасной загрузкой в Fedora, вам необходимо подписать модуль с помощью зарегистрированного ключа владельца машины (MOK).
Прежде чем продолжить, проверьте, включена ли в вашей системе безопасная загрузка: mokutil --sb-state
Если ответ положительный, продолжайте следовать приведенному ниже руководству, в противном случае регистрация MOK не требуется, и вы можете игнорировать эту инструкцию.
Начиная с версии DKMS 3.0.4 нет необходимости создавать МОК вручную, DKMS при установке генерирует собственный ключ, который необходимо зарегистрировать пользователю только один раз.
Для регистрации ключа следуйте этой инструкции:
sudo dnf install mokutil dkms
.mokutil --import /var/lib/dkms/mok.pub
и следуя инструкциям по регистрации, доступным на странице GitHub DKMS (потребуется перезагрузка системы).sudo dkms autoinstall
, чтобы собрать и подписать модуль evdi с помощью MOK.sudo dkms status
или sudo systemctl status displaylink-driver.service
. При использовании с док-станцией Dell D6000 DisplayLink 5.1.26 регулярно теряет связь с подключенными мониторами, в результате чего они гаснут и переходят в режим энергосбережения. Когда мониторы гаснут, ядро регистрирует два сообщения об ошибках:
kernel: usb < xxx > : Disable of device-initiated U1 failed.
kernel: usb < xxx > : Disable of device-initiated U2 failed.
Чтобы обойти эту проблему, отключите управление питанием аудиоустройства, закомментировав строку в файле /etc/pulse/default.pa
:
# ## Automatically suspend sinks/sources that become idle for too long
# load-module module-suspend-on-idle
Обычно мы хотим отслеживать текущую стабильную версию библиотеки evdi. Однако ядра Fedora часто намного новее, чем те, которые официально поддерживаются этим выпуском, и нередко новое ядро полностью нарушает сборку. Это может привести к тому, что вы не сможете обновить ядро, не жертвуя устройствами DisplayLink. Это нехорошо, если в новом ядре есть важные исправления безопасности или производительности.
Разработчики evdi используют main
ветку в качестве основной ветки для всех изменений.
Чтобы получить последний код из main
ветки и использовать его для сборки, выполните следующие действия:
make main
make github-release
Конечно, эта main
ветка также будет включать некоторые экспериментальные и менее проверенные изменения, которые могут сломать что-то другим неожиданным образом. Поэтому вам следует отдать предпочтение основной сборке, если она работает, но если она сломается, у вас есть возможность создать main
сборку.
Если вы используете Fedora Rawhide, вы можете создать сборку, которая будет автоматически загружаться из main
ветки и собираться, запустив:
make rawhide
Раньше код в
main
ветке помечался тегами, и эта версия включалась в пакет драйвера Displaylink.Недавно мы наблюдаем появление новых изменений в пакете драйверов Displaylink без изменения версии библиотеки evdi. Это создало некоторую путаницу и трудности, когда дело доходит до обновлений обслуживания.
Ребята из evdi признали эту проблему и работают над тем, чтобы сделать процесс более прозрачным.
Самый простой способ внести свой вклад в пакет — это создать его форк и отправить запрос на включение в GitHub.
Существует два основных вида вклада: либо выпускается новая основная версия, либо предлагается модификация упаковки.
Для целей упаковки существует переменная RELEASE
. Эта переменная должна быть установлена в 1 при добавлении новой версии исходной версии и увеличена на единицу при добавлении любых других функций в файл спецификации для той же исходной версии.
Время от времени DisplayLink будет обновлять свой драйвер. Мы пытаемся это сделать, но обычно полагаемся на пул-реквесты.
Для управления версиями мы управляем тремя разными исходными номерами:
Эти переменные необходимо изменить в следующих местах:
DAEMON_VERSION
— версия DisplayLinkManager.VERSION
на данный момент является версией драйвера evdi.DOWNLOAD_ID
— это параметр запроса ?download_id=
на веб-сайте DisplayLink для загрузки zip-архива.Также обновите журнал изменений в нижней части файла displaylink.spec.
При изменении правила упаковки увеличьте переменную RELEASE
на единицу в displaylink.spec.