這是在 Fedora、CentOS Stream、Rocky Linux 和 AlmaLinux 作業系統的 RPM 套件中建立 DisplayLink 驅動程式的秘訣。此驅動程式支援以下設備系列:
該軟體包包含開源 evdi 庫。
套件由 GitHub Actions 自動建置並上傳到 GitHub 版本。
注意:現在可以透過 .spec 檔案(在模擬 fe 中)乾淨地建構。透過
make srpm
下載檔案。
為了建立驅動程式 rpm 包,您可以從簽出目錄中執行make
命令。 Makefile 應該下載您需要的檔案並建立 RPM。
預設make
將使用與 Displaylink 驅動程式套件捆綁在一起的 evdi 驅動程式。如果您需要使用 evdi Github 儲存庫中的較新版本,且 Displaylink 驅動程式包中目前不存在該版本,則可以透過執行下列命令來實現:
make github-release
要在 Fedora 上使用 displaylink-rpm 和啟用安全啟動的 evdi 核心模組,您需要使用註冊的機器所有者金鑰 (MOK) 對該模組進行簽署。
在繼續之前,請先驗證您的系統上是否啟用了安全啟動: mokutil --sb-state
如果答案是肯定的,請繼續以下指南,否則不需要註冊 MOK,您可以忽略此說明。
從 DKMS 版本 3.0.4 開始,無需手動建立 MOK,DKMS 在安裝過程中會產生自己的金鑰,只需使用者註冊一次。
若要註冊密鑰,請按照以下說明操作:
sudo dnf install mokutil dkms
。mokutil --import /var/lib/dkms/mok.pub
導入金鑰,並依照 DKMS github 頁面上提供的註冊說明進行操作(需要重新啟動系統)。sudo dkms autoinstall
指令,以便透過 MOK 建置並簽署 evdi 模組。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 核心通常比該版本官方支援的核心要新得多,並且新核心完全破壞建置的情況並不罕見。這可能會導致您無法在不犧牲顯示連結裝置的情況下升級核心。如果新核心有重要的安全性或效能修復,這就不太好了。
evdi 開發人員使用main
分支作為所有變更的主分支。
要從main
分支提取最新程式碼並使用它來構建,請執行以下操作:
make main
make github-release
當然,這個main
分支還將包括一些實驗性和較少測試的更改,這些更改可能會以其他意想不到的方式破壞事物。因此,如果主線建置有效,您應該更喜歡它,但如果它損壞,您可以選擇進行main
建置。
如果您使用的是 Fedora Rawhide,您可以建立一個構建,該構建將自動從main
分支下載並透過執行以下命令進行構建:
make rawhide
過去,
main
分支中的程式碼將被標記,並且該版本將包含在 Displaylink 驅動程式包中。最近,我們看到 Displaylink 驅動程式套件中出現了更新的更改,但 evdi 庫版本沒有更改。這在維護更新方面造成了一些混亂和困難。
evdi 人員已經承認了這個問題,並正在努力使流程更加透明。
貢獻該套件的最簡單方法是分叉它並在 GitHub 中發送拉取請求。
主要有兩種貢獻:發布新的上游版本或提出包裝修改。
有一個名為RELEASE
的變數用於打包目的。當貢獻新的上游版本版本時,該變數應設為 1,並且當向同一上游版本的規格文件添加任何其他功能時,該變數應增加 1。
DisplayLink 會不時更新其驅動程式。我們嘗試這樣做,但為此我們通常依賴拉取請求。
我們管理三個不同的上游號碼進行版本控制:
這些變數需要在以下位置進行更改:
DAEMON_VERSION
是 DisplayLinkManager 版本VERSION
目前是 evdi 驅動程式版本DOWNLOAD_ID
是 DisplayLink 網站中用來下載 zip 的?download_id=
查詢參數另外,請更新 displaylink.spec 檔案底部的變更日誌。
變更打包規則時,請將 displaylink.spec 中的RELEASE
變數加一