作者:David Chisnall, 2006年8月4日
出處:http://www.informit.com/articles/article.asp?p=598023&rl=1
論點
免費的操作系統是否應該捆綁那些只有二進制格式的驅動程序? 這個問題引起了許多爭議。正反方的辯論范圍從哲學方面到實際應用, 這些都值得做一番調查。
在我們討論這個問題前,有必要先看看現有的系統。 從可靠性和安全角度考慮,OpenBSD的核心拒絕二進制模塊,但也不是那麼頑固不化。FreeBSD則相反,它核心帶有一些二進制模塊。
Linux世界的立場似乎就比較有趣,Linux核心根本就不允許有二進制驅動程序。通過定期變換APIs和ABIs, 開發者主動地勸阻人們不要在main tree之外開發驅動程序。
但是沒有人自己去build一個Linux系統,而通常是使用某個發行版。多數的Linux發行版沒有使用一般的核心,而是使用自己生成的版本,但是各個版本不會相差十萬八千裡。各個版本可能捆綁了一些額外的驅動。許多二進制的驅動是有licenses, 禁止再被distribute。但是各個版本在使用腳本來實現自動下載和啟動後安裝驅動方面是一致的。
對於許多自由軟件用戶來說,使用的不就是二進制驅動程序嗎?
質量
辯論的正反方都談到了質量。NVIDIA的一個發言人最近說沒有必要給出NVIDIA卡的說明書,因為NVIDIA公司以外的人不可能寫出更好的驅動程序。這個說法可能是對的。可能寫顯示驅動程序的全部人才都在NVIDIA公司,但這似乎不可能。
幾年前我有一個台式機器, 配有ATI R200 系列CPU和SoundBlaster Live!聲卡,安裝window2000。 Window 定期系統崩潰, 通常是一星期一次。當window崩潰時,在藍屏上給出debug信息,千篇一律地都是The Creative Labs或ATI 驅動程序崩潰。
後來我改裝FreeBSD, 聲卡驅動是FreeeBSD開發寫的,顯卡是DRI組開發的。然後我的機器就開始穩定了。
我的經驗是生產商的驅動不見得就好,開源的驅動不見得就差。 可能我的情況比較特殊吧。
安全
OpenBSD 組反對二進制驅動程序的主要原因是他們考慮系統的安全,OpenBSD的美稱就是非常安全,因為系統的每個部分都經過代碼review。
如果你在OpenBSD的用戶空間運行不安全的代碼,OpenBSD的一些核心機制會采取一定的措施來降低危險性。在某些情況下,這些措施力度還不夠, 就需要有危險控制機制。需要指出的是:多數服務的權限都是有限的,這樣當一個attacher在OpenBSD 外殼攻破一個服務,也不能使用該服務權限以外的資源。
但是如果是在核心空間攻破, 情形就不一樣了。因為核心的權限最高, 可以做任何事情: 訪問驅動程序、檢查內存等等。如果核心給攻破,那唯一可做的安全措施就是格式化硬盤,重啟。
這個問題最近隨著發現WiFi卡的驅動程序有個安全漏洞而浮出水面,該漏洞使得該機器遭受WiFi范圍內的任何一個攻擊者 的攻擊。