愛伊米

讓 Android 手機更省電流暢,你可以試試“刷核心”

矗立的高樓大廈,依賴於牢固的基底才能屹立不倒。如果說智慧手機上的作業系統也有基底,那一定是位於底層的核心。小到每一次指紋解鎖,大到暢玩手遊大作,核心就像一位稱職的經理默默地在底層工作,協調軟體和各式硬體。

讓 Android 手機更省電流暢,你可以試試“刷核心”

Android 系統的構成

核心是至關重要的系統元件,對於 Android 來說,更換核心卻是一件不怎麼稀罕的事——得益於 Android 生態的開放性,我們甚至可以像刷寫第三方 Recovery 和定製 ROM 那樣隨意更換第三方核心,從底層著手為裝置帶來完全不同的使用體驗。

那具體而言 Android 系統的第三方核心究竟能為我們的手機帶來哪些改變,在支援的裝置上我們又該如何選擇和刷入一款第三方核心呢?

如何讀懂第三方核心

以新鮮出爐的 arter97 kernel為例,Arter97 作為一名負責的開發者,將能夠解釋的技術細節都羅列在了 Detail(細節)一欄裡(這樣做的開發者並不多)。

我們不妨就以這個面向一加手機 7/7 Pro 的核心為例進行講解,瞭解第三方核心到底做了什麼改動,進而更好地評估使用第三方核心帶來的收益與風險。

讓 Android 手機更省電流暢,你可以試試“刷核心”

arter97 所附帶的所有核心特性

1、「重製核心,只保留必要的來自一加的官方原始碼」

這款核心並不基於一加的原廠核心製作,而是在高通提供的核心程式碼基礎上移植原廠核心中的必要部分,比如一些特定的裝置驅動。這會減少核心中用於除錯的程式碼,使得核心更加輕量;同時也去掉了原廠核心中大量依賴 ZRAM 的記憶體利用機制(開發者閱讀程式碼後不太認可)。

如果你不知道什麼是 ZRAM,不妨檢視我們的這篇文章瞭解 Android 系統中的相關引數。

2、「整合來自高通開源社群(CAF)的 4。14 核心版本原始碼」

讓 Android 手機更省電流暢,你可以試試“刷核心”

高通 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。

讓 Android 手機更省電流暢,你可以試試“刷核心”

開發者從程式碼中發現一加工程師強制處理顯示相關的程序使用 Gold 簇,也就是大核心,這意味著螢幕上每一幀的改動都會產生更多的能源消耗。因此這個第三方核心將這段程式碼改為了 Google 所推薦的配置,也就是使用 Silver cluster 來進行處理。結果就是極大地提升了續航,也沒有明顯的效能損失。

讓 Android 手機更省電流暢,你可以試試“刷核心”

開發者在推上分享了這個改動所帶來的顯著續航提升

5、「將 BBR 演算法作為預設的 TCP 網路擁塞控制演算法」

BBR 是由 Google 開發的 TCP 網路擁塞控制演算法,早已經併入 Linux 主線,對於國人來說可能也並不陌生。開發者在自己的個人網站伺服器上也是執行此演算法,對於網路配置提升巨大。所以當這一代855 晶片採用核心 Linux 4。14 版本時,終於可以較為穩定地為其開啟 BBR 了。開發者同時也從 Linux 主線中移植了部分針對 BBR 的最佳化。

6、「關閉 ZRAM」

已經看過這篇文章的讀者想必對 ZRAM 這個概念並不陌生,作為業界普遍用於提升手機物理記憶體使用效率的方案,ZRAM 已經在幾乎每一臺手機上預設開啟。但如果物理記憶體已經十分充裕,那麼浪費 CPU 算力在壓縮記憶體資料上便顯得有些畫蛇添足了。出於這樣的考慮,開發者禁用了 zram,同時也不建議潛在使用者們去購買 6GB 記憶體版本的一加 7/一加 7 Pro。

這六個點就是這款核心相較於原廠核心所做出的一些主要改進和技術細節,原帖還有許許多多的細節改進這裡就不再贅述。從這些點我們不難發現:

第三方核心是開發者出於自己的核心理念、理解所製作的個人作品。

原廠核心的一些配置有時並不是最優解,來自 Google 和高通的方案最終效果可能更好。

第三方核心對比原廠核心有更新頻率上的天然優勢,結合開源社群能夠更快追上最新提交的程式碼。

第三方核心可能會提供部分的核心自定義選項來供使用者選擇(下篇會詳細提到)

又幫官方核心除蟲最佳化,又整合來自上游的最佳化程式碼,難道第三方核心真就這麼香?「實驗性」、「最新」、「極為先進」這樣的字眼,往往與「不穩定」掛鉤,新生的事物往往需要好幾代的更迭才能逐漸被證明為可靠、穩定的。不妨在 Changelog (更新記錄)搜尋一下 fix (修復)這個字眼,看一看有多少更新是為了修復引入最新最佳化所帶來的 bug。

讓 Android 手機更省電流暢,你可以試試“刷核心”

一款核心更新到穩定期,往往需要大量 fix

第三方核心往往也需要經過版本迭代、反覆測試來進入一個發揮較為穩定的時期,且與原廠核心由專業工程師進行反覆測試不同,第三方核心的反饋修復過程依賴於論壇中的玩機使用者或是開發者本人,效率偏低。因此暫時不建議在日常使用的手機(daily driver phone)上刷入第三方核心。

那麼,這樣一款充滿著極客硬核意味的第三方核心,是如何步步成型,最後被我們玩機使用者所獲取到呢?

一款第三方核心是如何誕生的?

首先是廠商釋出核心原始碼。

Android 使用 Linux 作為系統的核心,根據其開源協議,廠商需要放出每款裝置的核心原始碼。核心的開源確保了廠商對於作業系統的核心構建是對於公眾開放可見的,任何開發者都可以閱讀其程式碼來判斷質量的好壞。而對於有能力的開發者來說,他們可以在廠商提供的核心原始碼基礎上開發第三方核心進行修補,甚至是錦上添花。

讓 Android 手機更省電流暢,你可以試試“刷核心”

Franco 核心開發者的指責

其次是廠商提供 Bootloader 解鎖渠道。

Bootloader 是廠商為了確保系統韌體的官方可靠所設定的小軟體。刷寫第三方核心與第三方 ROM 類似,同等於對手機的作業系統進行修改,需要 Bootloader 解鎖方可進行。可以說,解鎖 Bootloader 是大部分玩機操作的第一步,無論是玩機使用者還是第三方核心開發者,拿到裝置的第一件事,很可能就是先行解鎖 Bootloader。

當然核心開發者也需要擁有相關裝置。

除了能獲取到核心原始碼外,第三方核心開發者還需要在手機上親自測試核心,這就需要他們至少擁有這款機型或是其衍生機型。可想而知,在海外銷售得越火爆的機型,活躍的第三方開發者就越多,尤其是一加、小米的 PocoPhone 系列這些主打高性價比的品牌。

如果你和曾經的我一樣,是一位喜愛刷第三方核心的玩機使用者,那麼在購買裝置的時候就應該想好最好是認準小米、一加、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 (感謝)數感受到,一些開發者甚至已經被感謝過好幾萬次。

讓 Android 手機更省電流暢,你可以試試“刷核心”

認證開發者頭銜、感謝數

2、帖子的活躍程度。進入某一機型的論壇,最為醒目的便是機型 Banner 橫幅下的 MOST ACTIVE XXX TOPICS,如果其中的帖子帶有「Kernel」(核心)字樣,可以試著進入看看。

讓 Android 手機更省電流暢,你可以試試“刷核心”

論壇首頁往往會推薦一些比較活躍的帖子

3、帖子的回覆數與閱讀量。從某種程度上來說,帖子的回覆數代表了有多少論壇使用者關注、反饋、評論了這款核心的更新迭代,而閱讀量則代表了一款核心長期以來的影響力。參與核心反饋的論壇使用者越多,意味著這款核心經受的測試越多、越可靠。

一個機型的論壇裡面往往帶有好幾個板塊,如果是尋找核心,則需要進入固定板塊

4、是否仍在更新、維護。只要裝置的系統還在維護、固定收到月份安全更新,那麼第三方核心就有必要跟進更新,覆蓋包含新的安全程式碼。一旦一款核心在標題標註了 EOL (End of Life)或是許久沒有更新,就已經失去了刷入的價值。

讓 Android 手機更省電流暢,你可以試試“刷核心”

一款第三方核心已經終止了它的生命,好在開發者還推薦了另一款核心如何刷入一款第三方核心?

如果看完了上面的文字,依然還是對於某款第三方核心躍躍欲試,那麼是時候來看一下如何刷入一款第三方核心了。

解鎖 Bootloader 是前文已經提到的刷入核心的大前提,另外也得要找好對應的核心包(已經少有 。img 格式的第三方核心包了,大多為 。zip 包),老生常談的 adb 除錯橋已經也已經在桌面端安裝完畢。

第三方核心的開發者往往會一併給出核心安裝方法,請優先使用此法。我們也會給出比較通用的兩種刷入核心的方法。操作不當可能會造成裝置損壞,請確認機型對應並按照開發者要求的步驟進行刷入。

TWRP刷入法

作為比較通用常見,且已經沿用多年的玩機工具,刷核心這件小事對於 TWRP 來說只是小菜一碟。TWRP 是一個開源的、社群性的玩機工具,是一個可以安裝在 Android 裝置上的自定義恢復模式,小到 Mgaisk 模組、第三方核心,大到第三方 ROM,都可以用 TWRP 刷入。

如果你的裝置有官方 TWRP 支援,那麼我更建議你用這種方法。

在電腦終端執行 進入 Bootloader 介面

在電腦終端執行 進入臨時 TWRP,如果是第一次,會詢問你是否允許修改系統,選擇允許。

在 TWRP 中輸入手機密碼來順利解鎖 data 分割槽,然後進入 install 來找到已經儲存的第三方核心,選擇並刷入。如果你想一併刷入 magisk 或是 TWRP,請注意核心開發者標註出的刷入順序。

如果你正在使用測試版的 Android Q,而 TWRP 還未及時更新支援新系統的 data 分割槽解密(也就是無法正確讀取手機的內建儲存空間),其實也可以利用 指令來進行核心刷入。在 TWRP 中選取 advanced (高階),啟用 adb sideload,然後在電腦上下載核心 。zip 包,在終端中輸入 adb sideload kernel。zip 即可進行刷入。

重啟進入系統,若是順利開機,可在關於本機中檢視核心版本以驗證是否成功刷入。

以上終端指令均忽略檔案目錄和核心名稱,請各位使用者自行定位目錄、對應核心包名稱。

讓 Android 手機更省電流暢,你可以試試“刷核心”

一次完整的刷寫過程,在終端其實並不需要太多指令核心管理器刷入法

核心管理器一直能夠備份核心、刷入開發者所開發的核心,但去年 Flash 核心開發者和 Franco 核心/ FK 核心管理器開發者聯合提交了一種能夠升級核心且保留 magisk 的辦法後,核心管理器刷核心變得更加開放通用,還可以刷入一些體積較小的 。zip 檔案。

如今,主流的核心管理器如 EX 核心管理器、FK 核心管理器均已經支援刷入各種第三方核心。

讓 Android 手機更省電流暢,你可以試試“刷核心”

兩款核心管理器的刷入核心功能

但是,使用核心管理器刷入核心需要授予核心管理器 root 許可權,這就需要我們至少能夠利用 magisk 獲取到臨時 root 許可權。

接下來刷核心的步驟就像平時使用 app 那樣稀疏平常,開啟核心管理器刷入,然後等待完成後重啟即可。

除非開發者有明確說明刷入核心可以保留 Magisk,一般情況下我們都需要在刷入核心後重新刷入一次 Magisk,如果有這個需求,不妨在刷入核心後轉去 Magisk Manager 重新刷入一次 Magisk,再執行重啟。

另外需要注意的是,由於金絲雀版本的 Magisk 改換了 Root 原理,導致無法使用核心管理器刷入核心。

操作不當可能會造成裝置損壞,請確認機型對應並按照開發者要求的步驟進行刷入。

回滾

在系統 OTA 更新時需要將核心切換回原廠核心,可以藉助 Mgaiks Manager 手動回滾,也可以提前在 TWRP 製作原廠核心的備份。

如果想更換另一款第三方核心,而當前又已經刷寫了一款第三方核心,在更換之前需要回滾一次當前系統/ ROM 的原廠/自帶核心,以防出錯。

勤快一些的核心開發者可能會幾天一個更新,或是放出一個 beta 版本供測試,進入維護期的穩定核心可能僅僅是在月度更新後才釋出新版本。但是無論如何還是請儘量保持關注,跟上最新的版本。

如果刷了第三方核心出了問題,不妨檢視這篇文章中的步驟提取 log 日誌檔案,帶上日誌檔案的話一般都能很快接近問題推出更新,有時甚至只需要幾分鐘。