為什麼主線核心不能執行在我的手機上?
對於自由軟體來說,其最大的自由之一就是能夠用一個更新或修改的版本來替換原始版本的程式。儘管如此,數千萬使用那些手機裡面裝著所謂 Linux 的使用者卻很少能夠在他們的手機上執行主線核心,即使他們擁有替換核心程式碼的專業技能。可悲的是,我們必須承認目前仍然沒有可以執行主線核心的主流手機。在由 Rob Herring 主持的2015屆核心峰會上,與會人員共同探討了這個問題,並進一步談論了他們應該怎麼做才能解決這個問題。
當主持人提問的時候,在座的大多數開發人員都表示他們更樂意在他們的手機上面執行主線核心,然而也有少數人持相反的看法。在 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
相關文章
- 讓手機執行主線核心
- 手錶Android Wear工程執行在手機上的配置方案Android
- 解析智慧手機為什麼不能替代手柄控制遊戲機遊戲
- IT 執行在雲端,而云執行在 Linux 上Linux
- 我會手動建立執行緒,為什麼讓我使用執行緒池?執行緒
- 再次請教大俠,我的檔案上傳功能為什麼不能使用?
- 讓Facebook Home桌面執行在所有安卓手機安卓
- win10連線不上網路印表機怎麼辦 為什麼連線不上印表機Win10
- 為什麼Docker不能解決雲上的所有問題Docker
- Handler後傳篇一: 為什麼Looper中的Loop()方法不能導致主執行緒卡死?OOP執行緒
- 為什麼我變成了開源主義者
- 次世代主機:為什麼我們還將繼續玩30幀的遊戲遊戲
- 為什麼我們要在遊戲裡“牽手”?遊戲
- 生活為什麼總是對我動手?
- 運維告訴我CPU飆升300%,為什麼我的程式上線就奔潰了運維
- IT仍然執行在Java 8上 ·Vicki BoykisJava
- 如何優化執行在webkit上的web app優化WebKitAPP
- new Handler().postDelayed(new Runnable())是否執行在主執行緒?執行緒
- 為什麼我的 PHP 資料庫連線失敗?PHP資料庫
- 怎樣知道我的程式是否執行在DELPHI? (轉)
- 為什麼我的Jbuilder7現在不能除錯Jsp了?UI除錯JS
- 我的together6.01為什麼不能使用patterns選擇呢!
- 我為什麼要做IT
- 相機連不上關我上位機什麼事啊?
- 為什麼在 Plasma 上難以執行 EVMASM
- 執行在imac上的 Linux發行版(轉)MacLinux
- 谷歌為安卓新增主線 Linux 核心支援谷歌安卓Linux
- 我為什麼不想把自己的Emacs外掛放到MELPA上?Mac
- 為什麼我是世界上最好的程式設計師?程式設計師
- 安卓手機不能ROOT怎麼辦?安卓
- 為什麼肯德基推出遊戲主機與煽情肥皂劇?遊戲
- 海外主機是什麼意思?與國內主機有什麼區別?
- 為什麼你不能拿CPU速度來比較計算機的效能計算機
- 我為什麼使用 JavaJava
- 我自定義的攔截器為什麼會靠後執行?
- 為什麼我下的jivejdon-2.5在jb中執行不了
- 我的手機憑什麼不給我爽——Xposed Hook混淆且加固後的APPHookAPP
- 聊聊分割槽Partition——我們為什麼要分割槽(上)