矗立的高樓大廈,依賴于牢固的基底才能屹立不倒。如果說智能手機上的操作系統也有基底,那一定是位于底層的内核。小到每一次指紋解鎖,大到暢玩手遊大作,内核就像一位稱職的經理默默地在底層工作,協調軟件和各式硬件。
Android 系統的構成
内核是至關重要的系統組件,對于 Android 來說,更換内核卻是一件不怎麼稀罕的事——得益于 Android 生态的開放性,我們甚至可以像刷寫第三方 Recovery 和定制 ROM 那樣随意更換第三方内核,從底層着手為設備帶來完全不同的使用體驗。
那具體而言 Android 系統的第三方内核究竟能為我們的手機帶來哪些改變,在支持的設備上我們又該如何選擇和刷入一款第三方内核呢?
如何讀懂第三方内核
以新鮮出爐的 arter97 kernel 為例,Arter97 作為一名負責的開發者,将能夠解釋的技術細節都羅列在了 Detail(細節)一欄裡(這樣做的開發者并不多)。
我們不妨就以這個面向一加手機 7/7 Pro 的内核為例進行講解,了解第三方内核到底做了什麼改動,進而更好地評估使用第三方内核帶來的收益與風險。
arter97 所附帶的所有内核特性
1、「重制内核,隻保留必要的來自一加的官方源碼」
這款内核并不基于一加的原廠内核制作,而是在高通提供的内核代碼基礎上移植原廠内核中的必要部分,比如一些特定的設備驅動。這會減少内核中用于調試的代碼,使得内核更加輕量;同時也去掉了原廠内核中大量依賴 ZRAM 的内存利用機制(開發者閱讀代碼後不太認可)。
如果你不知道什麼是 ZRAM,不妨查看我們的 這篇文章 了解 Android 系統中的相關參數。
2、「整合開源代碼論壇(CAF)中來自高通的 4.14 内核版本源碼」
Code Aurora Forum(CAF)是 Linux 基金會旗下的開源代碼論壇,高通将會在這裡發布基于 Android 通用内核的針對自己 SoC(也就是常見的高通骁龍系列)修改的源碼,一般來說會提供更好的優化,廠家制作内核時也往往會從中整合代碼。而這款内核正是從 CAF 源碼中整合來自高通提交的最新、最好的代碼,即 You'll be getting the latest and greatest Qualcomm has to offer with this kernel.
CAF 的首頁,标注了三類人群:制造商、開發者、Makers
3、「更改配置:CONFIG_HZ = 300」
CONFIG_HZ 是 Linux 内核中的一個重要參數,決定了 CPU 主頻的切換間隔,數值固定為 100、300 不等,越大則切換間隔越短。這個數值改為 300 可以将間隔從 10ms 降低為 3.33ms,是 Pixel 一直以來都沿用的數值,也是 Google 建議開發商們采用的數值,可以使得手機更為順滑(當然也會稍稍消耗更多電量)。
開發者認為,這個改動的意義甚至比屏幕的物理刷新率(90hz)更加重要。
4、「優化部分配置以節省電量」
對于玩機用戶來說,常常會在查看内核信息時看到 Gold cluster / Silver cluster 這樣的字眼,可以将這個「金銀簇」理解為 SoC 的大小核心集。查看下圖來自 Anandtech 的表格我們也能夠發現這樣的稱呼,對于使用三叢集的 855 來說,就會擁有兩個 Gold cluster。
開發者從代碼中發現一加工程師強制處理顯示相關的進程使用 Gold 簇,也就是大核心,這意味着屏幕上每一幀的改動都會産生更多的能源消耗。因此這個第三方内核将這段代碼改為了 Google 所推薦的配置,也就是使用 Silver cluster 來進行處理。結果就是極大地提升了續航,也沒有明顯的性能損失。
開發者在推上分享了這個改動所帶來的顯著續航提升
5、「将 BBR 算法作為默認的 TCP 網絡擁塞控制算法」
BBR 是由 Google 開發的 TCP 網絡擁塞控制算法,早已經并入 Linux 主線,對于國人來說可能也并不陌生。開發者在自己的個人網站服務器上也是運行此算法,對于網絡配置提升巨大。所以當這一代855 芯片采用内核 Linux 4.14 版本時,終于可以較為穩定地為其開啟 BBR 了。開發者同時也從 Linux 主線中移植了部分針對 BBR 的優化。
6、「關閉 ZRAM」
已經看過 這篇文章 的讀者想必對 ZRAM 這個概念并不陌生,作為業界普遍用于提升手機物理内存使用效率的方案,ZRAM 已經在幾乎每一台手機上默認開啟。但如果物理内存已經十分充裕,那麼浪費 CPU 算力在壓縮内存數據上便顯得有些畫蛇添足了。出于這樣的考慮,開發者禁用了 zram,同時也不建議潛在用戶們去購買 6GB 内存版本的一加 7/一加 7 Pro。
這六個點就是這款内核相較于原廠内核所做出的一些主要改進和技術細節,原帖還有許許多多的細節改進這裡就不再贅述。從這些點我們不難發現:
又幫官方内核除蟲優化,又整合來自上遊的優化代碼,難道第三方内核真就這麼香?「實驗性」、「最新」、「極為先進」這樣的字眼,往往與「不穩定」挂鈎,新生的事物往往需要好幾代的更叠才能逐漸被證明為可靠、穩定的。不妨在 Changelog (更新記錄)搜索一下 fix (修複)這個字眼,看一看有多少更新是為了修複引入最新優化所帶來的 bug。
一款内核更新到穩定期,往往需要大量 fix
第三方内核往往也需要經過版本叠代、反複測試來進入一個發揮較為穩定的時期,且與原廠内核由專業工程師進行反複測試不同,第三方内核的反饋修複過程依賴于論壇中的玩機用戶或是開發者本人,效率偏低。因此暫時不建議在日常使用的手機(daily driver phone)上刷入第三方内核。
那麼,這樣一款充滿着極客硬核意味的第三方内核,是如何步步成型,最後被我們玩機用戶所獲取到呢?
一款第三方内核是如何誕生的?
首先是廠商釋出内核源碼。
Android 使用 Linux 作為系統的内核,根據其開源協議,廠商需要放出每款設備的内核源碼。内核的開源确保了廠商對于操作系統的核心構建是對于公衆開放可見的,任何開發者都可以閱讀其代碼來判斷質量的好壞。而對于有能力的開發者來說,他們可以在廠商提供的内核源代碼基礎上開發第三方内核進行修補,甚至是錦上添花。
對于注重國際聲譽的廠商來說,在機型發布後立即釋出對應的内核源碼已經是一項慣例。一個反面例子是,小米 A1 在推出後遲遲不釋出源碼,被 媒體 和 開發者 幾近口誅筆伐。或許是這份壓力的緣故,近年來小米的内核釋出速度已經有所改觀。
Franco 内核開發者的指責
其次是廠商提供 Bootloader 解鎖渠道。
Bootloader 是廠商為了确保系統固件的官方可靠所設定的小軟件。刷寫第三方内核與第三方 ROM 類似,同等于對手機的操作系統進行修改,需要 Bootloader 解鎖方可進行。可以說,解鎖 Bootloader 是大部分玩機操作的第一步,無論是玩機用戶還是第三方内核開發者,拿到設備的第一件事,很可能就是先行解鎖 Bootloader。
當然内核開發者也需要擁有相關設備。
除了能獲取到内核源碼外,第三方内核開發者還需要在手機上親自測試内核,這就需要他們至少擁有這款機型或是其衍生機型。可想而知,在海外銷售得越火爆的機型,活躍的第三方開發者就越多,尤其是一加、小米的 PocoPhone 系列這些主打高性價比的品牌。
與此同時,廠商也樂于擁抱繁榮開放的第三方開發生态,一加、小米、華碩 還會将新發售的手機通過 XDA 等論壇将設備贈送給開發者,加速第三方開發的進程。
如果你和曾經的我一樣,是一位喜愛刷第三方内核的玩機用戶,那麼在購買設備的時候就應該想好最好是認準小米、一加、Pixel 等對于解鎖較為友好的廠商,然後挑選幾個機型,去對應的 XDA 論壇逛一逛尋找是否有現成的第三方内核,最後才是購買設備。
至于第三方内核如何尋找、 XDA 論壇該怎麼逛,那就是我們接下來要講的了。
找第三方内核不應該是大海撈針
「工欲善其事,必先利其器」,而能利其器的,或許就是一位好工匠。按照這樣的思路來看,其實尋找好用的第三方内核,可以先從尋找優秀的第三方内核開發者入手。在如何塑造一款第三方内核上,不同的開發者其實也有着自己獨特的理解和思考。
Sultan:原先主要是提供各個一加手機的第三方 Lineage OS 以及第三方内核所需的上遊代碼,在購買 Pixel 2 XL 後開始推出自己的 Sultan Kernel。針對 Pixel 系列的多任務性能自己寫了低内存管理算法 SLMK,挽救 4GB 于水火。内核設計目的是代替原廠内核,因此自定義選項非常少,主要是深層優化。
Franco:老牌内核開發者,開發有主打輕量省電的 Franco Kernel,支持有 Pocophone、一加系列等設備。同時是 Naptime、FK Kernel Manager 等一系列備受好評應用的開發者。
Flar2:老牌内核開發者,開發有主打穩定性的 ElementX Kernel,支持有 Pixel 、一加系列設備,主要是在原廠内核上添加固定的優化和自定義選項。同時是 EX Kernel Manager 、DevCheck 的開發者。
nathanchance:注重 Linux 上遊代碼的老牌内核開發者,開發有主打流暢度的 Flash Kernel,支持設備不多且大多已經 EOL,但是他對代碼的理解和評論仍舊值得關注,(可以标注上他在推上對代碼發表的一系列評論)
Arter97:年輕的出色内核開發者,開發有精心優化後的 arter97 Kernel,支持開發 arkTube 這款 app,同時也是 Paranoid ROM 團隊 開發者之一。
部分内核開發者或知名度較高,或能力強悍,甚至還有自己的内核測試小組,有的甚至還自己開發了一套 測試内核的工具。如果是他們制作的内核,開發質量就得到了一定的保證,可以放心試用。除此之外,我們也可以通過綜合以下幾個指标來判斷一款第三方内核是否可被依賴。
1、内核開發者的頭銜、感謝數。順着上面尋找優質開發者的思路,開帖的内核開發者可能會有 Recognized Developer (認證開發者)等頭銜,這份認可也同樣可以從他一共得到的 Thanks (感謝)數感受到,一些開發者甚至已經被感謝過好幾萬次。
認證開發者頭銜、感謝數
2、帖子的活躍程度。進入某一機型的論壇,最為醒目的便是機型 Banner 橫幅下的 MOST ACTIVE XXX TOPICS,如果其中的帖子帶有「Kernel」(内核)字樣,可以試着進入看看。
論壇首頁往往會推薦一些比較活躍的帖子
3、帖子的回複數與閱讀量。從某種程度上來說,帖子的回複數代表了有多少論壇用戶關注、反饋、評論了這款内核的更新叠代,而閱讀量則代表了一款内核長期以來的影響力。參與内核反饋的論壇用戶越多,意味着這款内核經受的測試越多、越可靠。
一個機型的論壇裡面往往帶有好幾個闆塊,如果是尋找内核,則需要進入固定闆塊
4、是否仍在更新、維護。隻要設備的系統還在維護、固定收到 月份安全更新,那麼第三方内核就有必要跟進更新,覆蓋包含新的安全代碼。一旦一款内核在标題标注了 EOL (End of Life)或是許久沒有更新,就已經失去了刷入的價值。
一款第三方内核已經終止了它的生命,好在開發者還推薦了另一款内核
如何刷入一款第三方内核?
如果看完了上面的文字,依然還是對于某款第三方内核躍躍欲試,那麼是時候來看一下如何刷入一款第三方内核了。
解鎖 Bootloader 是前文已經提到的刷入内核的大前提,另外也得要找好對應的内核包(已經少有 .img 格式的第三方内核包了,大多為 .zip 包),老生常談的 adb 調試橋已經也已經在桌面端安裝完畢。
第三方内核的開發者往往會一并給出内核安裝方法,請優先使用此法。我們也會給出比較通用的兩種刷入内核的方法。操作不當可能會造成設備損壞,請确認機型對應并按照開發者要求的步驟進行刷入。
TWRP刷入法
作為比較通用常見,且已經沿用多年的玩機工具,刷内核這件小事對于 TWRP 來說隻是小菜一碟。TWRP 是一個開源的、社區性的玩機工具,是一個可以安裝在 Android 設備上的自定義恢複模式,小到 Mgaisk 模塊、第三方内核,大到第三方 ROM,都可以用 TWRP 刷入。
如果你的設備有官方 TWRP 支持,那麼我更建議你用這種方法。
TWRP 可以在其 官方網站 下載到,也可以在 xda 等各大論壇中找到官方版本或是其修改版本,下載後主要是一個 .img 包文件。在以往我們常常會将 TWRP.img 刷入到恢複模式所在的分區,随着 AB 分區的普及,我更推薦使用 fastboot boot 命令來臨時啟動使用,這一點業已在 Magisk 刷入篇 中提到:
以上終端指令均忽略文件目錄和内核名稱,請各位用戶自行定位目錄、對應内核包名稱。
一次完整的刷寫過程,在終端其實并不需要太多指令
内核管理器刷入法
内核管理器一直能夠備份内核、刷入開發者所開發的内核,但去年 Flash 内核開發者和 Franco 内核/ FK 内核管理器開發者聯合提交了一種能夠升級内核且保留 magisk 的辦法後,内核管理器刷内核變得更加開放通用,還可以刷入一些體積較小的 .zip 文件。
如今,主流的内核管理器如 EX 内核管理器、FK 内核管理器均已經支持刷入各種第三方内核。
兩款内核管理器的刷入内核功能
但是,使用内核管理器刷入内核需要授予内核管理器 root 權限,這就需要我們至少能夠 利用 magisk 獲取到臨時 root 權限。
接下來刷内核的步驟就像平時使用 app 那樣稀疏平常,打開内核管理器刷入,然後等待完成後重啟即可。
除非開發者有明确說明刷入内核可以保留 Magisk,一般情況下我們都需要在刷入内核後重新刷入一次 Magisk,如果有這個需求,不妨在刷入内核後轉去 Magisk Manager 重新刷入一次 Magisk,再執行重啟。
另外需要注意的是,由于金絲雀版本的 Magisk 改換了 Root 原理,導緻無法使用内核管理器刷入内核。
操作不當可能會造成設備損壞,請确認機型對應并按照開發者要求的步驟進行刷入。
回滾
在系統 OTA 更新時需要将内核切換回原廠内核,可以借助 Mgaiks Manager 手動回滾,也可以提前在 TWRP 制作原廠内核的備份。
如果想更換另一款第三方内核,而當前又已經刷寫了一款第三方内核,在更換之前需要回滾一次當前系統/ ROM 的原廠/自帶内核,以防出錯。
勤快一些的内核開發者可能會幾天一個更新,或是放出一個 beta 版本供測試,進入維護期的穩定内核可能僅僅是在月度更新後才發布新版本。但是無論如何還是請盡量保持關注,跟上最新的版本。
如果刷了第三方内核出了問題,不妨查看這篇文章中的步驟提取 log 日志文件,帶上日志文件的話一般都能很快接近問題推出更新,有時甚至隻需要幾分鐘。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!