從中指事件淺談 Linux 硬體支援

這其實是大約兩週前發生的事情了,網路上也已經有很多相關討論文章,所以本文就時效性來說有點晚,但沒辦法,DR 一直到這週末才算有空寫些東西……若有對「中指事件」仍一無所悉的人可以參考 DR 以下的說明:話說 Linus Torvalds 於 6 月 14 日在芬蘭的 Aalto 大學演講並接受學生提問(Aalto Talk with Linus Torvalds),其中有一名學生提到她有一台筆電(於影片中大約 48 分鐘又 13 秒的位置),裡頭使用了 NVIDIA 的雙顯卡(Intel 的內顯加 NVIDIA 的獨顯)規格,但她對於如何在 Linux 上做顯卡切換感到十分困擾,因為 NVIDIA 並沒有對此切換功能(NVIDIA Optimus)提供任何 Linux 平台的支援。而 Torvalds 的回應是:NVIDIA 是他所交手過最糟糕的公司,並且說明了一些狀況,接著他趁此機會對著鏡頭說:「NVIDIA, f**k you」,然後比了個中指。

 

中指是什麼?

 

中指是 Torvalds 表達對 NVIDIA 採取不合作態度的不滿……

 

那、宗旨又是什麼?

 

事實上,Torvalds 的心直口快是出了名的,所以爆粗口對 DR 來說並不感到驚訝。但當被嗆的對象是 NVIDIA 時,這就讓 DR 頗為驚訝,因為 NVIDIA 在 DR 長年的印象分數裡面,反而是一間少數對 Linux 有良好支援的硬體廠商。這也是為什麼 DR 最近在採購「新.二號機」時,寧可買一張 NVIDIA 的極弱(不是弱,是極弱)入門顯卡,也不願買類似價位、而且根據測試報告在 Windows 下遊戲效能強很多的 ATI/AMD 顯卡(對市場規格熟悉的人應該猜得出來前後者各大概是什麼型號)。

 

若想要在 Linux 上建構出最穩定的桌面體驗與 3D 效能,一直以來 DR 都認為最好的選擇是使用 NVIDIA 的顯示晶片並且安裝 NVIDIA 的官方 Linux 驅動程式。這當然是有根據的,隨便舉兩個例證:比方說也有推出 Linux 版本的 3D 動畫製作軟體 Massive,所列的硬體需求便是需要 NVIDIA 的顯示晶片,完全沒有提到 ATI/AMD。以及知名的 Linux 遊戲設計師 Ryan C. Gordon 也表示自己使用 NVIDIA 的顯示晶片和官方驅動程式

 

當然這並不是說使用 NVIDIA 並且搭配官方驅動程式就完全沒有問題,NVIDIA 每一次釋出驅動程式都還是會包含 bug fixes,而在 DR 自己的使用經驗裡,也真的遭遇過一兩次會影響使用的 bug。但大體上而言,DR 覺得 NVIDIA 的 Linux 官方驅動程式基本上都很穩定,而且效能和在 Windows 上的表現頗為一致,驅動程式的安裝方式也算簡便(可參考 DR 所寫的 How-To)。反之看看其他廠商,Intel 縱使驅動程式沒有什麼問題,也和開發社群保持合作關係,但 Intel 顯示晶片的 3D 效能終究就是……那樣。至於 ATI/AMD 既釋出封閉的官方驅動程式(Catalyst),也提供資源讓開發社群維護開放版本的驅動程式,但封閉版本與開放版本的驅動程式各有各的問題,導致使用者在選擇上容易無所適從。

 

真要說 NVIDIA 在 Linux 平台上有什麼最大的問題,那大概就是它的驅動程式是「封閉」的。

 

但 Torvalds 是因為 NVIDIA 堅持封閉原始碼而比出中指嗎?想必不是,因為 Torvalds 從來都不是自由軟體(Free Software)的基本教義派。若回想一下,長年以來當自由軟體人士抨擊 NVIDIA 使用封閉模組去連結 Linux kernel 是牴觸了 Linux kernel 的 GPL(General Public License)授權時,身為 Linux 主要開發者的 Torvalds 反而沒有表示過太強烈的意見。甚至他也不曾採取任何其實做得到的反制措施,例如從 kernel 端去禁止封閉模組、或者改用更嚴格的授權模式甚至付諸法律行動等等。

 

Torvalds 之所以認同、堅持開放原始碼(Open Source)是基於工程導向的考量,他的理念是出於他相信開放原始碼可以讓更多人投入開發、以致於讓產品釋出更快、也更好。所以當有學生提到 NVIDIA Optimus 技術在 Linux 上無法運作時,DR 認為 Torvalds 的回應有部份表達出身為開發者卻不得其門而入的窘境,因為 NVIDIA 既不提供原始碼、也不提供任何技術資料。

 

NVIDIA 不提供驅動程式原始碼的原因,無非就是「商業機密」,NVIDIA 是靠硬體效能吃飯的廠商,而效能的機密很大程度就在驅動程式裡頭,這點其實 ATI/AMD 也是一樣,只是後者因為有釋出部份技術資料而避免抨擊,而 NVIDIA 連可以用來協助開發社群撰寫驅動程式的技術資料都不願意給的原因大概也是出於「商業機密」的考量。其實在商言商,DR 認為 NVIDIA 的作法是可以被理解並且應該要被接納的。

 

回到案例本身,NVIDIA Optimus 不支援 Linux 是不是一個 NVIDIA 漠視使用者權益的行為?說實在的,DR 覺得不是,因為當一台電腦(無論桌機還是筆電)是以搭配 Windows 系統的模式發售,另外再安裝 Linux 其實就已經超出「合理支援」的範圍,所以硬體廠商想要支援 Linux 到什麼程度就得看它的市場考量。NVIDIA 之所以會對 Linux 驅動程式有所關注其實是考量到 Unix 工作站的使用者,這就是他們真實存在的市場之一,而這也是為什麼 NVIDIA 的官方驅動程式還不只是支援 Linux,也支援了 FreeBSDSolaris 等 Unix-like 系統。

 

所以當筆電環境並不在 NVIDIA 的 Linux 支援藍圖裡時,對於筆電環境的特定技術缺乏支援也就頗為合情合理。事實上,在整個「中指事件」的後續發展裡,NVIDIA 的態度也並不惡劣,官方還特地發了一篇公關稿(PR Response to Linus Torvald's Inflammatory Comments)表示將對 NVIDIA Optimus 在 Linux 上的支援問題有所因應和處理,並且為自己在 Linux 使用者與開發社群的投入辯護。

 

看起來還蠻友善的嘛。除此之外,DR 還要特別指出:NVIDIA 也早已表明不會對開發社群所發起的 nouveau 專案採取任何法律行動,nouveau 是將 NVIDIA 的官方驅動程式做逆向工程(reverse engineering)重製的開放原始碼驅動程式專案,目前已經有一定程度的可用性並且已經被內建在許多的 Linux 發行版裡(但仍有很多問題,例如缺乏電源管理功能,因此在筆電上幾乎不可用,因為會導致過熱)。對此 NVIDIA 是有依據可以採取法律行動的,但卻沒有。

 

最後讓我們回頭討論 Torvalds 的「宗旨」,前面提到 DR 認為 Torvalds 有部份是想要表達身為開發者卻無法協助解決問題的窘境,那他主要想表達什麼?其實 Torvalds 在回應裡有提到過去幾年來 NVIDIA 開始發展自有的 ARM 平台(Tegra),該平台使用 Linux 作為其支援的作業系統,並且搭配 NVIDIA 自己的封閉模組。如此一來便形同 NVIDIA 在發售的產品中搭載 Linux 卻不將所修改的部份開放出來,也造成越來越多裝置所使用的是不全然開放的 Linux,也就失去了 Linux 最重要的精神。

 

Linux 的精神不是「免費」,而是「開放」,所以 Torvalds 的宗旨是 NVIDIA 不應該利用 Linux 的成果來獲利卻不開放原始碼。在 Torvalds 和 NVIDIA 的互動裡,若單從使用者的角度來看,大概雙方都沒什麼錯,但若從更高的角度來看,就會產生很多探討空間。

 

 

分類: