PTT推薦

[心得] 製作第三方ROM LineageOS

看板MobileComm標題[心得] 製作第三方ROM LineageOS作者
ivon852
(內容農場殺手)
時間推噓42 推:42 噓:0 →:4

製作自己的Android ROM就像吃早午餐一樣,編譯指令分別爲breakfast → lunch→ brunch,最後製作出bacon!

https://i.imgur.com/IOPmIwD.png


因為想修改Android的Linux核心(kernel),便順便學習如何編譯LineageOS ROM。

手機為Sony Xperia 5 II (pdx206),更新二個Android版本後就被放生的旗艦機。XDA上有unofficial移植的版本,直接拿它原始碼來用。

之所以選LineageOS,是因為接近原生AOSP的風格就很好看了。沒有預載太多軟體,Sony原廠的相機也還能用。
https://i.imgur.com/WwDnnDt.png


理論上Linux核心可以獨立於原始碼樹編譯(standalone),不過失敗率很高。為此將整部系統的原始碼抓下來,再用LineageOS (AOSP) 提供的工具去編譯核心。

實際操作一遍設定LineageOS專案、下載原始碼、抽取閉源驅動。

---

首先需要一台Linux電腦,這裡用Arch Linux。RAM需要至少16GB,需要至少100GB的硬碟空間。

接著按照LineageOS Wiki的內容安裝編譯用的依賴套件。這篇是Xperia 1 II的,跟Xperia5 II的有部分差異。
https://reurl.cc/pZQd6e

自己寫的中文解說版。網路上還有Jeremy Chen大大寫的AOSP編譯教學。
https://reurl.cc/LX9367

步驟約略如下:

1. 下載50GB左右的LineageOS原始碼,分支選取LineageOS 20 (Android 13)

2. 下載Sony Xperia 5 II的裝置設定檔,再下載Sony的專有驅動(proprietary blob)

3. 從OTA更新包抽取Sony的專有驅動。

4. 按照需求修改LineageOS原始碼,例如改內建桌布、將Gapps預編譯進去等。
我主要是要改核心所以沒做太多變更。

5. 使用brunch指令開始編譯ROM,Intel i5-7400約要編譯6小時。
https://i.imgur.com/pKn8VrQ.png



6. 編譯好的刷機包要用手機的Recovery刷進去。如果手機已經安裝LineageOS,那麼直接髒刷(dirty flash)更新也行的,GApps可能也要重刷。


---


最後是我比較在意的點:修改Linux核心。

Linux核心部分是可以獨立編譯的,會直接輸出為boot.img。

我主要是想開啟手機跑Docker的能力,為此需要去開啟核心選項開Cgroups等CONFIG,以及啟用binfmt。然而開某些選項會被認為不安全而導致整個ROM編譯失敗,為此做法是先用LineageOS原始的核心編譯完ROM後,將ROM刷進手機。再獨立編譯boot.img刷進手機(只刷boot.img不用清除手機資料)

值得注意的是boot.img沒有啟用Root權限,為此還得給Magisk修補才能取得Root權限。

在一番搗鼓後,終於可以在Android手機跑Docker了,另外開啟binmt以支援x86→ARM轉譯映像檔的功能。
https://i.imgur.com/EcMOB6Q.png


--
最真實的1944年日美海空戰,絕贊上映中。
https://i.imgur.com/XvVnOv9.png
https://i.imgur.com/z3atpS6.png
https://i.imgur.com/QrmG2LL.png
https://i.imgur.com/zZ0vNvR.png
https://i.imgur.com/dlhNnEL.png

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.188.73 (臺灣)

※ 文章網址:
https://www.ptt.cc/MobileComm/E.9MCmYQIztgvg

gaiaesque02/05 01:17猛..

Two402/05 01:20推~

NX999902/05 01:24很用心,雖然我三星

sakala02/05 01:29太專業了 還好我手機有官方版的Los可以刷QQ

Arbin02/05 02:09如果沒有前人做的Device Tree連編譯都別想了..

Arbin02/05 02:09(望向我那隻跟孤兒沒兩樣的初代Xperia 1)

chickengod02/05 02:10cool

※ 編輯: ivon852 (36.236.188.73 臺灣), 02/05/2023 02:25:35

morphy02/05 02:33想知道手機跑docker穩定度與發熱量,盒子可以做到手機應該

morphy02/05 02:33更好才是

試過跑包在Docker內的NodeJS APP,性能良好。可是docker compose不能用。

wizard663602/05 03:12感謝分享,對工作上很有幫助

hyghmax120202/05 04:11專業推推

Kagero02/05 06:30會不會做完螢幕就多一條綠線了

沒,刷機前我壞掉的只有指紋XD

Taichun31802/05 06:36

pttpu02/05 07:22原始碼竟然有50gb

lkj12tw02/05 07:24強,推教學

ProSpicy02/05 08:14先推

kenlin010502/05 08:39???

※ 編輯: ivon852 (36.236.188.73 臺灣), 02/05/2023 09:17:25

Raysun9602/05 09:18

A4P8T6X902/05 09:19

TF0020737402/05 09:49

andy012102/05 10:10好厲害

ltytw02/05 10:26

qa1122z02/05 10:40看惹一下,還以為走錯板

slsamg711202/05 10:51推 還好xz3還有lineage官方維護

stonys02/05 10:53感謝分享

kimi11213602/05 11:06docker compose不能用應該是沒選到arm版吧?

是從Termux裝的。Termux docker的socket位置好像不一樣,docker-compose無法連接。

littlefish102/05 11:20鼓勵更多實作文

twinkleAshed02/05 11:20推, 很實用.

aasssdddd02/05 11:22推 之前有想試 但是不能開網銀就退縮了

kklighter02/05 11:57技術文推

WLR02/05 12:09推技術文

cliff200102/05 12:18

avans02/05 12:27推心得與分享!

zvx91102/05 12:33

lovemayu02/05 13:04

abc092200102/05 13:15推心得。現在 windows 也可以開 WSL2 去編譯 ROM 了

※ 編輯: ivon852 (36.236.188.73 臺灣), 02/05/2023 13:25:27

ShibaTatsuya02/05 13:58推優文

vercetti02/05 15:27

Alllllogo02/05 16:02推心得

get95175302/05 16:05專業 推

eric52549802/05 19:47

kkkk123402/05 19:57

a920250702/05 20:32強。我也以為走錯版。

leveger090302/05 22:22技術文推

lucisferre02/05 22:58

abc092200102/06 20:38https://tinyl.io/7okO LineageOS 官方要上 5II 了