ROM之家:Linux 2.x內(nèi)核與Linux 3.x的區(qū)別
安卓與Linux的關(guān)系:
安卓是基于Linux內(nèi)核,但不是Linux操作系統(tǒng)。
“Android是一種以Linux為基礎(chǔ)的開(kāi)放源碼操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名稱(chēng),中國(guó)大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開(kāi)發(fā),最初主要支持手機(jī)。2005年由Google收購(gòu)注資,并組建開(kāi)放手機(jī)聯(lián)盟開(kāi)發(fā)改良,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。Android的主要競(jìng)爭(zhēng)對(duì)手是蘋(píng)果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。 2012年2月數(shù)據(jù),Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)52.5%的份額,中國(guó)市場(chǎng)占有率為68.4%。”
“Android 是運(yùn)行于 Linux kernel之上,但并不是GNU/Linux。因?yàn)樵谝话鉍NU/Linux 里支持的功能,Android 大都沒(méi)有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達(dá)到商業(yè)應(yīng)用,必須移除被GNU GPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開(kāi)。bionic/libc/kernel/ 并非標(biāo)準(zhǔn)的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產(chǎn)生的,這樣做是為了保留常數(shù)、數(shù)據(jù)結(jié)構(gòu)與宏。”
嚴(yán)格的版本號(hào):
2.6 的分支開(kāi)發(fā)都已經(jīng)很多年了,即使是 3.0 以后的版本也似乎發(fā)布了兩年以上了。。最上游內(nèi)核(即 Linus 維護(hù)的源,以下稱(chēng)“主流內(nèi)核”)最活躍的分支的開(kāi)發(fā)以每天幾十個(gè)補(bǔ)丁的速度更新。你可以想象一下幾年下來(lái)的差別,沒(méi)有人能說(shuō)得清。之所以 Android 用戶(hù)感覺(jué)不到區(qū)別,是因?yàn)榕c Android 設(shè)備相關(guān)的部分代碼更改并不那么大。但這只是最上游的更新,而 Google 為 Nexus 一眾設(shè)備維護(hù)的內(nèi)核的更新就與 Android 用戶(hù)息息相關(guān)了。還有硬件提供商(如 OMAP,QCOM,三棒等)維護(hù)的平臺(tái)內(nèi)核源的更新以及 OEM 商發(fā)布的內(nèi)核與用戶(hù)就更緊密了。
好了,切入正題!
對(duì)于 Android 而言,可以說(shuō) Google 維護(hù)的內(nèi)核就是除了主流內(nèi)核外所有與 Android 相關(guān)的內(nèi)核源的風(fēng)向標(biāo),因?yàn)樗? Boss。Android 新版本特性都由它決定。而這些特性有很大一部分是需要內(nèi)核支援的,屁如 2.2.3 引入的各種 Tethering,4.1 引入的 VSYNC 以及 Triple Frame Buffer,4.1.2 為高端設(shè)備引入的硬件同步(SYNC 驅(qū)動(dòng),對(duì) KGSL 有影響),以及黃油計(jì)劃中的 CPU 調(diào)度器的 boostpulse 等等。雖然 Linus 在維護(hù)主流內(nèi)核時(shí)非常強(qiáng)調(diào)不要改變內(nèi)核 API ,但 Android 世界中的內(nèi)核部分接口卻一直在變,而且相對(duì)主流源非常之頻繁。這與 Google 這版本的推進(jìn) Android 的速度有關(guān)。
所以你在開(kāi)發(fā)社區(qū)經(jīng)常會(huì)見(jiàn)到“backport”,即后向移植。目的就是將高版本內(nèi)核(Google 或硬件提供商)中的特性移植到低版本中。這低版本的內(nèi)核即是設(shè)備廠商提供的為低版本的 Android 寫(xiě)的內(nèi)核。因?yàn)閺S商在不為你的設(shè)備提供 Android 高版本更新時(shí),他們也不會(huì)發(fā)布內(nèi)核更新。所以民間通常的做法就要后向移植以滿(mǎn)足民間移植的高版本 Android 系統(tǒng)所需(這里又要提一下我們可愛(ài)的ZTE,您屬于民間嗎?)。其實(shí)這些都是臨時(shí)的解決方法。
除了后向移植,另一種民間做法就是全面以新內(nèi)核(通常是以同一廠商發(fā)布的相近平臺(tái)內(nèi)核)為基礎(chǔ),添加平臺(tái)的特有驅(qū)動(dòng)。這就是人人打心里都喜歡的內(nèi)核更新了,雖然他們嘴上可能會(huì)說(shuō)這個(gè)不好那個(gè)不好。但這對(duì)于民間開(kāi)發(fā)者,是非常難的事,能移植成功多少要靠點(diǎn)運(yùn)氣。因?yàn)槟愕脤?duì)平臺(tái)各方面參數(shù)都很了解,而且對(duì)內(nèi)核編寫(xiě)以及平臺(tái)啟動(dòng)很熟悉才行。所以如果廠商發(fā)布的新 Android 系統(tǒng)中編進(jìn)去是舊于 Google 所要求的內(nèi)核版本的話(huà),它這是在偷懶。典型的有(后面的廠商自己腦補(bǔ)吧!)翔尼,摩狗(尼瑪 4.0 系統(tǒng)居然還在跑 2.6.32 內(nèi)核)。火腿腸 也干過(guò)這事(迫于輿論壓力發(fā)布的 Desire HD 新版 4.0 系統(tǒng)自帶 2.6.35 內(nèi)核)。寨廠無(wú)底線(我可沒(méi)點(diǎn)ZTE的名~),不提!
那哪些部分是民間內(nèi)核維護(hù)者最難頭疼呢?如果講高通的話(huà),大概是 Android 2.3 到 4.X 升級(jí)帶來(lái)的 MSM FB(與用戶(hù)空間 qcom/display HAL 驅(qū)動(dòng)效率生死相關(guān))的更新。翔尼 CM 維護(hù)者們 FXP 團(tuán)隊(duì)對(duì)于一砣舊設(shè)備至今仍然在 4.X 系統(tǒng)上跑的舊 FB 驅(qū)動(dòng)。而 CM 發(fā)起者 Steve(他維護(hù)的通常都是最新設(shè)備及驅(qū)動(dòng))有天還因?yàn)?FXP 在 HAL 層的舊設(shè)備兼容性更改不耐煩地質(zhì)問(wèn)他:為什么不使用新的驅(qū)動(dòng)?這讓 FXP 情何以堪啊。尼瑪翔尼官方都是舊內(nèi)核,你讓我去移植新驅(qū)動(dòng)么?不是不使用,而是移植需要付出太多代價(jià)與時(shí)間,還無(wú)法預(yù)知是否值得。
HTC 也是這樣想的!!!一砣 8255/7X30 平臺(tái) 4.0 系統(tǒng)自帶的內(nèi)核雖然版本是 3.0, FB 驅(qū)動(dòng)仍然是沿用的 2.6 時(shí)代的,幾乎只字未改。節(jié)操掉一地。。為什么都這樣,難道是高通沒(méi)給他們么?借口,代碼不都在 gitweb 中掛著的么?說(shuō)到 FB 驅(qū)動(dòng),HTC 泄漏版 4.0 RUU 在 Desire S 上居然有字體花屏 bug,一時(shí)傳為社區(qū)佳話(huà)。這都是驅(qū)動(dòng)不兼容導(dǎo)致的,需要更新。這個(gè)例子說(shuō)明了內(nèi)核更新的好處,但也說(shuō)明了后向移植的價(jià)值。二者都有效。但作為開(kāi)發(fā)者,顯然更傾向于內(nèi)核的版本更新,因?yàn)榘姹靖聲?huì)帶來(lái)各種各樣的小 bug 修復(fù)(嗯,你很可能感覺(jué)不到,話(huà)說(shuō)你感覺(jué)不到的存在多了去了。。。),只不過(guò)后向移植更省事。但升級(jí)內(nèi)核也會(huì)帶來(lái)很多不穩(wěn)定性,各種小 bug,需要維護(hù)者慢慢修復(fù)。所以調(diào)戲內(nèi)核絕對(duì)是件吃力不討好的事!
總結(jié):
當(dāng)然什么問(wèn)題都推到內(nèi)核上,顯然不對(duì)。內(nèi)核就這樣被小眾小白視為黑箱當(dāng)球踢,我表示很桑心。但你要是與內(nèi)核無(wú)關(guān),似乎也說(shuō)不過(guò)去。你要知道你的 每一個(gè)操作(注意是每一個(gè))都要經(jīng)過(guò)內(nèi)核處理。它不可見(jiàn),但卻無(wú)處不在。比如要寫(xiě)數(shù)據(jù),要過(guò)文件系統(tǒng);要聽(tīng)歌,要過(guò) ADSP;要申請(qǐng)內(nèi)存,要過(guò) VM;要滑屏,要過(guò)觸摸驅(qū)動(dòng)與 CPU 調(diào)度;要打游戲,要過(guò) KGSL 驅(qū)動(dòng);要喚醒,要過(guò) FB;要振動(dòng),要過(guò) AKM;要偷拍,要過(guò)相機(jī)驅(qū)動(dòng)。。
所以說(shuō)內(nèi)核有更新你就用吧,積極幫助社區(qū)報(bào)告 ,bug 豈能說(shuō)你看不見(jiàn)就說(shuō)它不存在?!
熱門(mén)刷機(jī)包top10
- 中興U807刷機(jī)包 三星S3風(fēng)格 電量1%顯示 美化優(yōu)化 精簡(jiǎn)流暢 穩(wěn)定版
- 佳域G2F刷機(jī)包 樂(lè)蛙ROM第133期 新增桌面音樂(lè)4*3小部件 完美版
- 華為C8813D刷機(jī)包 百度云ROM39公測(cè)版 刪繁就簡(jiǎn) 輕裝前進(jìn)
- 三星I9300刷機(jī)包 基于官方4.3固件 內(nèi)置徹底精簡(jiǎn) 親測(cè)穩(wěn)定 省電版 長(zhǎng)期使用
- 小米MIX2S MIUI10 9.8.13 Magsik 迅雷會(huì)員 精簡(jiǎn)系統(tǒng) 全局優(yōu)化
- 三星w2015刷機(jī)包_救磚包_官方包_三星W2015_4.4.4_W2015KEU1AOI1
- 聯(lián)想A789刷機(jī)包 樂(lè)蛙OS第六十九期 LeWa_ROM_A789
- 完美w1刷機(jī)包_救磚包_官方包_完美W1_4.2.2_M6ETS.YM.N.F.F9.0515.V3.01
- vivo X30 PD1938_A_1.17.4 優(yōu)化系統(tǒng) 流暢 官方穩(wěn)定 全局優(yōu)化
- 卓米a3b刷機(jī)包_救磚包_官方包_卓米A3B_4.4.2_ALPS.KK1.MP3DS.V1.40
熱門(mén)刷機(jī)教程top10
- ROM之家:中興N880精簡(jiǎn)系統(tǒng)軟件列表
- HTC Desire Z刷機(jī)前置條件
- iphone6 plus無(wú)限重啟怎么辦?蘋(píng)果6plus自動(dòng)重啟解決方法
- 小米Note如何插卡?詳細(xì)插卡教程分享
- 小米5刷recovery教程及第三方recovery下載
- 魅藍(lán)E有電信版嗎?魅藍(lán)E網(wǎng)絡(luò)制式詳情
- 酷比MUSE M1線刷刷機(jī)教程及線刷rom包系統(tǒng)包下載
- 華為g520 root教程(聯(lián)通版)
- 魅族mx3升級(jí)flyme3.0.2教程(附flyme3.0.2固件下載)
- 三星s5830恢復(fù)官方系統(tǒng)教程
熱門(mén)ROM資訊top10
- 玻璃機(jī)身/屏幕指紋/后置三攝 vivo Z5真機(jī)實(shí)拍圖曝光
- 驍龍855 Plus成績(jī)?nèi)绾? 黑鯊游戲手機(jī)2 Pro跑分搶先看
- 或采用水滴屏設(shè)計(jì)方案 華為Mate 30 Lite鋼化膜曝光
- 指尖主宰+7月30日發(fā)布 黑鯊游戲手機(jī)2 Pro正式官宣
- 瀑布屏的vivo NEX 2渲染圖曝光 所有人夢(mèng)想中的手機(jī)
- 雙卡設(shè)計(jì)/或支持防水 iQOO公布iQOO 5G手機(jī)卡槽
- 廣東先行 Flyme 8上線SOS緊急求助功能
- 重振雄風(fēng) HTC Wildfire系列四款新機(jī)曝光
- 驍龍855 Plus演繹最強(qiáng)芯 努比亞紅魔3升級(jí)版即將發(fā)布
- 酷炫X型光暈果然注定無(wú)法低調(diào) 華為榮耀9X Pro真機(jī)曝光
熱門(mén)手機(jī)刷機(jī)包
- 銘仁 A2刷機(jī)包
- 螢火蟲(chóng) Firefly III (V57)刷機(jī)包
- 小米 Note3刷機(jī)包
- OPPO R830刷機(jī)包
- 神舟銳龍P9刷機(jī)包
- 愛(ài)我 Lovme_X15F刷機(jī)包
- 小辣椒 LA6-L刷機(jī)包
- 歐新 U5刷機(jī)包
- 聯(lián)想 S90-t刷機(jī)包
- 奧洛斯 AE901刷機(jī)包
- VIVO S1刷機(jī)包
- HTC U11 EYEs刷機(jī)包
- 酷派 8732刷機(jī)包
- 魅族 M15刷機(jī)包
- 聯(lián)想A3000刷機(jī)包
- 港米 K1S刷機(jī)包
- 凱利通 速騰F168刷機(jī)包
- 魅族魅藍(lán) S6刷機(jī)包
- 華為NCE-TL10刷機(jī)包
- 聯(lián)想 2-1050F刷機(jī)包
熱門(mén)刷機(jī)包top10
- 中興U807刷機(jī)包 三星S3風(fēng)格 電量1%顯示 美化優(yōu)化 精簡(jiǎn)流暢 穩(wěn)定版
- 佳域G2F刷機(jī)包 樂(lè)蛙ROM第133期 新增桌面音樂(lè)4*3小部件 完美版
- 華為C8813D刷機(jī)包 百度云ROM39公測(cè)版 刪繁就簡(jiǎn) 輕裝前進(jìn)
- 三星I9300刷機(jī)包 基于官方4.3固件 內(nèi)置徹底精簡(jiǎn) 親測(cè)穩(wěn)定 省電版 長(zhǎng)期使用
- 小米MIX2S MIUI10 9.8.13 Magsik 迅雷會(huì)員 精簡(jiǎn)系統(tǒng) 全局優(yōu)化
- 三星w2015刷機(jī)包_救磚包_官方包_三星W2015_4.4.4_W2015KEU1AOI1
- 聯(lián)想A789刷機(jī)包 樂(lè)蛙OS第六十九期 LeWa_ROM_A789
- 完美w1刷機(jī)包_救磚包_官方包_完美W1_4.2.2_M6ETS.YM.N.F.F9.0515.V3.01
- vivo X30 PD1938_A_1.17.4 優(yōu)化系統(tǒng) 流暢 官方穩(wěn)定 全局優(yōu)化
- 卓米a3b刷機(jī)包_救磚包_官方包_卓米A3B_4.4.2_ALPS.KK1.MP3DS.V1.40
熱門(mén)刷機(jī)教程top10
- ROM之家:中興N880精簡(jiǎn)系統(tǒng)軟件列表
- HTC Desire Z刷機(jī)前置條件
- iphone6 plus無(wú)限重啟怎么辦?蘋(píng)果6plus自動(dòng)重啟解決方法
- 小米Note如何插卡?詳細(xì)插卡教程分享
- 小米5刷recovery教程及第三方recovery下載
- 魅藍(lán)E有電信版嗎?魅藍(lán)E網(wǎng)絡(luò)制式詳情
- 酷比MUSE M1線刷刷機(jī)教程及線刷rom包系統(tǒng)包下載
- 華為g520 root教程(聯(lián)通版)
- 魅族mx3升級(jí)flyme3.0.2教程(附flyme3.0.2固件下載)
- 三星s5830恢復(fù)官方系統(tǒng)教程
熱門(mén)ROM資訊top10
- 玻璃機(jī)身/屏幕指紋/后置三攝 vivo Z5真機(jī)實(shí)拍圖曝光
- 驍龍855 Plus成績(jī)?nèi)绾? 黑鯊游戲手機(jī)2 Pro跑分搶先看
- 或采用水滴屏設(shè)計(jì)方案 華為Mate 30 Lite鋼化膜曝光
- 指尖主宰+7月30日發(fā)布 黑鯊游戲手機(jī)2 Pro正式官宣
- 瀑布屏的vivo NEX 2渲染圖曝光 所有人夢(mèng)想中的手機(jī)
- 雙卡設(shè)計(jì)/或支持防水 iQOO公布iQOO 5G手機(jī)卡槽
- 廣東先行 Flyme 8上線SOS緊急求助功能
- 重振雄風(fēng) HTC Wildfire系列四款新機(jī)曝光
- 驍龍855 Plus演繹最強(qiáng)芯 努比亞紅魔3升級(jí)版即將發(fā)布
- 酷炫X型光暈果然注定無(wú)法低調(diào) 華為榮耀9X Pro真機(jī)曝光
熱門(mén)手機(jī)刷機(jī)包
- 銘仁 A2刷機(jī)包
- 螢火蟲(chóng) Firefly III (V57)刷機(jī)包
- 小米 Note3刷機(jī)包
- OPPO R830刷機(jī)包
- 神舟銳龍P9刷機(jī)包
- 愛(ài)我 Lovme_X15F刷機(jī)包
- 小辣椒 LA6-L刷機(jī)包
- 歐新 U5刷機(jī)包
- 聯(lián)想 S90-t刷機(jī)包
- 奧洛斯 AE901刷機(jī)包
- VIVO S1刷機(jī)包
- HTC U11 EYEs刷機(jī)包
- 酷派 8732刷機(jī)包
- 魅族 M15刷機(jī)包
- 聯(lián)想A3000刷機(jī)包
- 港米 K1S刷機(jī)包
- 凱利通 速騰F168刷機(jī)包
- 魅族魅藍(lán) S6刷機(jī)包
- 華為NCE-TL10刷機(jī)包
- 聯(lián)想 2-1050F刷機(jī)包