Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android手機 >> Android刷機教程 >> 安卓刷機技巧 >> ROM之家:Linux 2.x內核與Linux 3.x的區別

ROM之家:Linux 2.x內核與Linux 3.x的區別

編輯:安卓刷機技巧

  安卓與Linux的關系:

  安卓是基於Linux內核,但不是Linux操作系統。

  “Android是一種以Linux為基礎的開放源碼操作系統,主要使用於便攜設備。目前尚未有統一中文名稱,中國大陸地區較多人使用“安卓”或“安致”。Android操作系統最初由Andy Rubin開發,最初主要支持手機。2005年由Google收購注資,並組建開放手機聯盟開發改良,逐漸擴展到平板電腦及其他領域上。Android的主要競爭對手是蘋果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。 2012年2月數據,Android占據全球智能手機操作系統市場52.5%的份額,中國市場占有率為68.4%。”

  “Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 裡支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。”

  嚴格的版本號:

  2.6 的分支開發都已經很多年了,即使是 3.0 以後的版本也似乎發布了兩年以上了。。最上游內核(即 Linus 維護的源,以下稱“主流內核”)最活躍的分支的開發以每天幾十個補丁的速度更新。你可以想象一下幾年下來的差別,沒有人能說得清。之所以 Android 用戶感覺不到區別,是因為與 Android 設備相關的部分代碼更改並不那麼大。但這只是最上游的更新,而 Google 為 Nexus 一眾設備維護的內核的更新就與 Android 用戶息息相關了。還有硬件提供商(如 OMAP,QCOM,三棒等)維護的平台內核源的更新以及 OEM 商發布的內核與用戶就更緊密了。

  好了,切入正題!

  對於 Android 而言,可以說 Google 維護的內核就是除了主流內核外所有與 Android 相關的內核源的風向標,因為它是 Boss。Android 新版本特性都由它決定。而這些特性有很大一部分是需要內核支援的,屁如 2.2.3 引入的各種 Tethering,4.1 引入的 VSYNC 以及 Triple Frame Buffer,4.1.2 為高端設備引入的硬件同步(SYNC 驅動,對 KGSL 有影響),以及黃油計劃中的 CPU 調度器的 boostpulse 等等。雖然 Linus 在維護主流內核時非常強調不要改變內核 API ,但 Android 世界中的內核部分接口卻一直在變,而且相對主流源非常之頻繁。這與 Google 這版本的推進 Android 的速度有關。

  所以你在開發社區經常會見到“backport”,即後向移植。目的就是將高版本內核(Google 或硬件提供商)中的特性移植到低版本中。這低版本的內核即是設備廠商提供的為低版本的 Android 寫的內核。因為廠商在不為你的設備提供 Android 高版本更新時,他們也不會發布內核更新。所以民間通常的做法就要後向移植以滿足民間移植的高版本 Android 系統所需(這裡又要提一下我們可愛的ZTE,您屬於民間嗎?)。其實這些都是臨時的解決方法。

  除了後向移植,另一種民間做法就是全面以新內核(通常是以同一廠商發布的相近平台內核)為基礎,添加平台的特有驅動。這就是人人打心裡都喜歡的內核更新了,雖然他們嘴上可能會說這個不好那個不好。但這對於民間開發者,是非常難的事,能移植成功多少要靠點運氣。因為你得對平台各方面參數都很了解,而且對內核編寫以及平台啟動很熟悉才行。所以如果廠商發布的新 Android 系統中編進去是舊於 Google 所要求的內核版本的話,它這是在偷懶。典型的有(後面的廠商自己腦補吧!)翔尼,摩狗(尼瑪 4.0 系統居然還在跑 2.6.32 內核)。火腿腸 也干過這事(迫於輿論壓力發布的 Desire HD 新版 4.0 系統自帶 2.6.35 內核)。寨廠無底線(我可沒點ZTE的名~),不提!

  那哪些部分是民間內核維護者最難頭疼呢?如果講高通的話,大概是 Android 2.3 到 4.X 升級帶來的 MSM FB(與用戶空間 qcom/display HAL 驅動效率生死相關)的更新。翔尼 CM 維護者們 FXP 團隊對於一砣舊設備至今仍然在 4.X 系統上跑的舊 FB 驅動。而 CM 發起者 Steve(他維護的通常都是最新設備及驅動)有天還因為 FXP 在 HAL 層的舊設備兼容性更改不耐煩地質問他:為什麼不使用新的驅動?這讓 FXP 情何以堪啊。尼瑪翔尼官方都是舊內核,你讓我去移植新驅動麼?不是不使用,而是移植需要付出太多代價與時間,還無法預知是否值得。

  HTC 也是這樣想的!!!一砣 8255/7X30 平台 4.0 系統自帶的內核雖然版本是 3.0, FB 驅動仍然是沿用的 2.6 時代的,幾乎只字未改。節操掉一地。。為什麼都這樣,難道是高通沒給他們麼?借口,代碼不都在 gitweb 中掛著的麼?說到 FB 驅動,HTC 洩漏版 4.0 RUU 在 Desire S 上居然有字體花屏 bug,一時傳為社區佳話。這都是驅動不兼容導致的,需要更新。這個例子說明了內核更新的好處,但也說明了後向移植的價值。二者都有效。但作為開發者,顯然更傾向於內核的版本更新,因為版本更新會帶來各種各樣的小 bug 修復(嗯,你很可能感覺不到,話說你感覺不到的存在多了去了。。。),只不過後向移植更省事。但升級內核也會帶來很多不穩定性,各種小 bug,需要維護者慢慢修復。所以調戲內核絕對是件吃力不討好的事!

  總結:

  當然什麼問題都推到內核上,顯然不對。內核就這樣被小眾小白視為黑箱當球踢,我表示很桑心。但你要是與內核無關,似乎也說不過去。你要知道你的 每一個操作(注意是每一個)都要經過內核處理。它不可見,但卻無處不在。比如要寫數據,要過文件系統;要聽歌,要過 ADSP;要申請內存,要過 VM;要滑屏,要過觸摸驅動與 CPU 調度;要打游戲,要過 KGSL 驅動;要喚醒,要過 FB;要振動,要過 AKM;要偷拍,要過相機驅動。。

  所以說內核有更新你就用吧,積極幫助社區報告 ,bug 豈能說你看不見就說它不存在?!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved