為什麼主線內核不能運行在我的手機上?
當主持人提問的時候,在座的大多數開發人員都表示他們更樂意在他們的手機上面運行主線內核,然而也有少數人持相反的看法。在 Project Ara 的支持下,Rob 在這個問題上已經研究了近一年半的時間(參見:https://lwn.net/Articles/648400/ )。但是最新的研究成果並不理想。
Rob 表示,通常手機上運行了太多的 過期 代碼;主線內核只是缺少能使手機正常運行所必須的驅動。每台常規的手機都在運行著100萬行到300萬行的 過期 代碼。幾乎所有的這些手機的內核版本都不超過3.10,有一些甚至更加古老。造成這種情況的原因有很多,但是有一點是很清楚的,在手機的世界裡,一切都變化的太快以至於無法跟上內核社區的步伐。如果真是那樣,他問到,我們還擔心什麼呢?
Tim Bird 指出,第一台 Android 手機 Nexus 1 從來沒有運行過任何一個主線內核,並且以後也不會。它打破了開源的承諾,也使得用戶不可能做到將一個新的內核放到手機中。從這一點上來說,沒有任何一款手機支持這種能力。Peter Zijlstra 想知道從一台手機到另一台手機到底複製了多少能夠工作的過期代碼;Rob 表示,迄今為止,他已經見到了三個獨立開發的熱插拔 Governors。
Dirk Hohndel 提出了很少有人注意到的建議。他說,對於世界上的數以億計的手機,大約只有他們27個人關心他們的手機是否運行著主線內核。剩下的用戶僅僅只是想讓他們的手機正常工作。或許那些關注手機是否在運行主線內核的開發者正在努力去解決這個令人不解的問題。
Chris Mason 說,那些手機廠商當前正面臨著相同類型的問題,而這些問題也是那些 Linux 發行版過去所面臨過的問題。他們疲於應付大量的無效且重複和能被複用的工作。一旦這些發行版決定將他們的工作配合主線內核而不是使用自己維護的內核,那麼問題將會變得好解決的多。解決問題的關鍵就是去幫助手機製造商們認識到他們可以通過同樣的方式獲得便利,形成這種認識的關鍵並不是通過來自用戶的壓力。這樣一來,問題就可以解決了。
Grant Likely 提出了對於安全問題的擔憂,這種擔憂來自於那些不能升級他們的手機系統的 android 設備。他說,我們需要的是一個真正專為手機設立的發行版。但是,只要手機廠商仍然掌控著手機中的應用軟體,那麼手機的同步更新將無法實現。我們接下來將面臨一個很大的安全難題。Peter 補充說,隨著 Stagefright 漏洞的出現,難題已經出現在我們面前了。
Ted Ts'o 說,運行主線內核並不是他的主要關注點。他很樂於見到這個假期中所售賣的手機能夠運行3.18或者4.1的內核,而不是繼續停留在3.10。他認為這是一個更可能被解決的問題。Steve Rostedt 認為,按照 Ted Ts'o 所說的那樣去做並不能解決手機的安全問題,但是,Ted 認為使用一個更新一些的內核至少可以讓漏洞修復變得更加容易。Grant 對此回應說,接下來的一年裡,這一切都將再次發生;過渡到更新的內核也是一個漸進式的對系統的完善。Kees Cook 補充說,我們無法從修復舊版本的內核漏洞的過程中得到太多的益處,真正的問題是我們沒有對 bug 的應對措施(他會在今天的另外一個對話中講到這個話題)。
Rob 說,任何一種解決方案都需要得到當前市場上的手機供應商的支持。否則,由於廠商對安裝到他們生產的手機上的操作系統的封鎖,運行主線內核的策略將會陷入麻煩。Paolo Bonzini 提問說是否可以因為那些沒有修復的安全漏洞而控告手機廠商,尤其當手機仍然處於保修期內。Grant 認為對於手機的 可更新能力 的保證必須來源於市場需求,否則是無法實現的。而促使它實現的原因可能會是一個嚴重的安全問題,然後用戶開始對手機的可更新能力提出要求。同時,內核開發人員必須不斷朝著這個方向努力。Rob 表示,除了到目前為止指出的所有優點之外,運行主線內核也能幫助開發者對安卓設備上的新特性進行測試和驗證。
Josh Triplett 提問說,如果手機廠商提出對主線內核提供支持的想法,那麼內核社區又將採取什麼措施呢?那樣將會針對手機各方面的特性要求對內核進行大量的測試和驗證;Android 的兼容性測試套件中出現的失敗將不得不被再次回歸到內核。Rob 提議這個問題可以在明年討論,即先將最基本的功能做好。但是,Josh 強調說,如果這個需求出現了,我們就應該能夠給出一個好的答案。
Tim 認為,當前,我們和廠商之間存在很大的脫節。廠商根本不會主動報告或者貢獻任何反饋給社區。他們之間完全脫節了,這樣的話永遠不會有進步。Josh 表示,當廠商們開始報告他們正在使用的舊內核的相關 bug 時,雙方之間的接受度將變得更加友好。Arnd Bergmann 認為,我們需要的是得到一個大晶元廠商對使用主線內核的認可,並且將該廠商的硬體提升到能夠支持主線內核的運行的這樣一個水平,而這樣將會在其他方面增加負擔。但是,他補充說,實現這個目標要求存在一個跟隨硬體一起分發的自由 GPU 驅動程序——然而這種程序當前並不存在。
Rob 給存在問題的領域列了一個清單,但是現在已經沒有太多的時間去討論其中的細節了。WiFi 驅動仍然是一個問題,尤其是當這個新特性被添加到 Android 設備上的時候。Johannes Berg 對新特性仍然存在問題表示贊同;Android 的開發人員甚至在這些新特性被應用到 Android 設備上之前都不會去談論它們是否存在問題。然而,對這些特性中的大多數的技術支持最終都會落實在主線內核中。
隨著會議逐漸接近尾聲,Ben Herrenschmidt 再次重申:實現在 Android 手機上運行主線內核的關鍵還是在於讓廠商認識到使用主線內核是它們獲得最大利潤的最好選擇。從長遠看,使用主線內核能節省大量的工作。Mark Brown 認為,以前,當搭載在 Android 設備上的內核版本以更穩定的方式向前推進的時候,上游工作的好處對運營商來說更加明顯。以現在的情況來看,手機上的內核版本似乎停留在了3.10,那種壓力是不一樣的。
這次談話以開發者決定進一步改善當前的狀況而結束,但是卻並沒有對如何改善提出一個明確的計劃。
via: https://lwn.net/Articles/662147/
作者:Jonathan Corbet 譯者:kylepeng93 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive