
我知道驅動程式被編譯到核心中,但為什麼 API 與核心如此緊密地耦合?
我可以以某種方式安裝驅動程序,這樣我就不必在每次有更新時重新安裝驅動程式嗎?
我可以再次使用該驅動程式並編譯它,這意味著該驅動程式是有效的。那為什麼我需要手動執行此操作?
關聯給我使用的驅動程式
其 AMD Catalyst™ 13.1 專有 Linux x86 顯示驅動程式
AMD Radeon HD 7700 系列
目前正在運行
Linux 3.5.0-25-generic #39-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
答案1
任何不屬於主核心樹的驅動程式(當然包括專有驅動程式)都必須針對新核心版本重新構建,因為內部核心介面可能已更改。驅動程式與核心緊密耦合,因為它們在核心空間中運行並使用內部核心介面。應用程式是一種不同的遊戲,使用系統調用接口,這是用戶態到內核的接口,並且該接口非常穩定。
Greg Kroah-Hartman 發表了一篇關於此主題的精彩文章這裡。
答案2
根據個人經驗,新核心會放入全新的驅動程式/模組目錄中,並且不會嘗試找出哪些驅動程式/模組可以從舊目錄複製到新目錄中。
您可能可以將舊的驅動程式/模組複製到新目錄中,但(據我所知)沒有好方法可以自動確定驅動程式的核心版本之間的兼容性。
我認為它可能可以建立一個包,其中包含在內核更改時自動運行的腳本來重建驅動程序,這樣您就不必這樣做,但聽起來您正在使用的特定驅動程式不會發生這種情況。
這並不罕見,因為為每個作業系統/視訊驅動程式組合編寫安裝/升級腳本並對其進行測試是一件痛苦的事情。