Dies ist das Rezept zum Erstellen des DisplayLink-Treibers in einem RPM-Paket für Fedora, CentOS Stream, Rocky Linux und AlmaLinux OS. Dieser Treiber unterstützt die folgenden Gerätefamilien:
Das Paket enthält die Open Source evdi-Bibliothek.
Pakete werden automatisch von GitHub Actions erstellt und in GitHub-Releases hochgeladen.
HINWEIS: Jetzt sauber über die .spec-Datei erstellbar (im Schein-Fe). Laden Sie Dateien über
make srpm
herunter.
Um das Treiber-RPM-Paket zu erstellen, können Sie den Befehl make
im ausgecheckten Verzeichnis ausführen. Das Makefile sollte die für Sie benötigten Dateien herunterladen und ein RPM erstellen.
Ein make
verwendet den evdi-Treiber, der im Displaylink-Treiberpaket enthalten ist. Wenn Sie eine neuere veröffentlichte Version aus dem evdi-Github-Repo verwenden müssen und diese derzeit nicht im Displaylink-Treiberpaket vorhanden ist, können Sie dies tun, indem Sie Folgendes ausführen:
make github-release
Um displaylink-rpm und das evdi-Kernelmodul mit aktiviertem Secure Boot auf Fedora zu verwenden, müssen Sie das Modul mit einem registrierten Machine Owner Key (MOK) signieren.
Bevor Sie fortfahren, überprüfen Sie bitte, ob Secure Boot auf Ihrem System aktiviert ist: mokutil --sb-state
Wenn die Antwort „Ja“ lautet, fahren Sie bitte mit der folgenden Anleitung fort. Andernfalls ist keine MOK-Einschreibung erforderlich und Sie können diese Anweisung ignorieren.
Ab DKMS-Version 3.0.4 ist es nicht mehr erforderlich, MOK manuell zu erstellen. DKMS generiert während der Installation einen eigenen Schlüssel, der vom Benutzer nur einmal registriert werden muss.
Um den Schlüssel zu registrieren, folgen Sie bitte dieser Anleitung:
sudo dnf install mokutil dkms
.mokutil --import /var/lib/dkms/mok.pub
ausführen und befolgen Sie die Anweisungen zur Registrierung auf der DKMS-Github-Seite (ein Neustart des Systems ist erforderlich).sudo dkms autoinstall
aus, um das EVDI-Modul mit MOK zu erstellen und zu signieren.sudo dkms status
oder sudo systemctl status displaylink-driver.service
ausführen. Bei Verwendung mit der Dell D6000-Dockingstation verliert DisplayLink 5.1.26 regelmäßig die Kommunikation mit angeschlossenen Monitoren, was dazu führt, dass diese leer werden und in den Energiesparmodus wechseln. Sobald die Monitore leer sind, protokolliert der Kernel zwei Fehlermeldungen:
kernel: usb < xxx > : Disable of device-initiated U1 failed.
kernel: usb < xxx > : Disable of device-initiated U2 failed.
Um dieses Problem zu umgehen, deaktivieren Sie die Energieverwaltung für das Audiogerät, indem Sie eine Zeile in /etc/pulse/default.pa
auskommentieren:
# ## Automatically suspend sinks/sources that become idle for too long
# load-module module-suspend-on-idle
Im Allgemeinen möchten wir die aktuelle stabile Version der evdi-Bibliothek verfolgen. Allerdings sind Fedora-Kernel oft viel neuer als die von dieser Version offiziell unterstützten, und es ist nicht ungewöhnlich, dass ein neuer Kernel den Build komplett kaputt macht. Dies kann dazu führen, dass Sie Ihren Kernel nicht aktualisieren können, ohne Ihre Displaylink-Geräte zu opfern. Das ist nicht besonders gut, wenn der neue Kernel über wichtige Sicherheits- oder Leistungskorrekturen verfügt.
Die evdi-Entwickler nutzen den main
als Hauptzweig für alle Änderungen.
Gehen Sie wie folgt vor, um den neuesten Code aus dem main
abzurufen und zum Erstellen zu verwenden:
make main
make github-release
Natürlich wird dieser main
auch einige experimentelle und weniger getestete Änderungen enthalten, die auf andere unerwartete Weise zu Problemen führen können. Sie sollten also den Mainline-Build bevorzugen, wenn er funktioniert, aber wenn er kaputt geht, haben Sie die Möglichkeit, einen main
-Build zu erstellen.
Wenn Sie Fedora Rawhide verwenden, können Sie einen Build erstellen, der automatisch vom main
heruntergeladen und erstellt wird, indem Sie Folgendes ausführen:
make rawhide
In der Vergangenheit wurde der Code im
main
mit Tags versehen und diese Version war im Displaylink-Treiberpaket enthalten.In letzter Zeit sehen wir, dass neuere Änderungen im Displaylink-Treiberpaket erscheinen, ohne dass die Version der evdi-Bibliothek geändert wird. Dies hat bei Wartungsupdates zu Verwirrung und Schwierigkeiten geführt.
Die evdi-Leute haben dieses Problem erkannt und arbeiten daran, den Prozess transparenter zu gestalten.
Der einfachste Weg, einen Beitrag zum Paket zu leisten, besteht darin, es zu forken und eine Pull-Anfrage in GitHub zu senden.
Es gibt zwei Hauptarten von Beiträgen: Entweder wird eine neue Upstream-Version veröffentlicht oder eine Änderung der Verpackung vorgeschlagen.
Für Verpackungszwecke gibt es eine Variable namens RELEASE
. Diese Variable sollte auf 1 gesetzt werden, wenn eine neue Version der Upstream-Version beigesteuert wird, und um eins erhöht werden, wenn der Spezifikationsdatei für dieselbe Upstream-Version weitere Funktionen hinzugefügt werden.
Von Zeit zu Zeit aktualisiert DisplayLink seinen Treiber. Wir versuchen dies zu tun, verlassen uns dabei jedoch in der Regel auf Pull-Requests.
Für die Versionierung verwalten wir drei verschiedene Upstream-Nummern:
Diese Variablen müssen an folgenden Stellen geändert werden:
DAEMON_VERSION
ist die DisplayLinkManager-VersionVERSION
ist derzeit die evdi-TreiberversionDOWNLOAD_ID
ist der Abfrageparameter ?download_id=
auf der DisplayLink-Website zum Herunterladen der ZIP-DateiBitte aktualisieren Sie außerdem das Änderungsprotokoll am Ende der Datei displaylink.spec.
Wenn Sie eine Verpackungsregel ändern, erhöhen Sie bitte die RELEASE
Variable in displaylink.spec um eins