[心得] 製作第三方ROM LineageOS
製作自己的Android ROM就像吃早午餐一樣,編譯指令分別爲breakfast → lunch→ brunch
,最後製作出bacon!
https://i.imgur.com/IOPmIwD.png

因為想修改Android的Linux核心(kernel),便順便學習如何編譯LineageOS ROM。
手機為Sony Xperia 5 II (pdx206),更新二個Android版本後就被放生的旗艦機。XDA上有u
nofficial移植的版本,直接拿它原始碼來用。
之所以選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的,跟Xperia
5 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編譯失敗,為此做法是先用Lin
eageOS原始的核心編譯完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





--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.236.188.73 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1675530057.A.C19.html
→
02/05 01:17,
3年前
, 1F
02/05 01:17, 1F
推
02/05 01:20,
3年前
, 2F
02/05 01:20, 2F
推
02/05 01:24,
3年前
, 3F
02/05 01:24, 3F
推
02/05 01:29,
3年前
, 4F
02/05 01:29, 4F
推
02/05 02:09,
3年前
, 5F
02/05 02:09, 5F
→
02/05 02:09,
3年前
, 6F
02/05 02:09, 6F
推
02/05 02:10,
3年前
, 7F
02/05 02:10, 7F
※ 編輯: ivon852 (36.236.188.73 臺灣), 02/05/2023 02:25:35
推
02/05 02:33,
3年前
, 8F
02/05 02:33, 8F
→
02/05 02:33,
3年前
, 9F
02/05 02:33, 9F
試過跑包在Docker內的NodeJS APP,性能良好。可是docker compose不能用。
推
02/05 03:12,
3年前
, 10F
02/05 03:12, 10F
推
02/05 04:11,
3年前
, 11F
02/05 04:11, 11F
推
02/05 06:30,
3年前
, 12F
02/05 06:30, 12F
沒,刷機前我壞掉的只有指紋XD
推
02/05 06:36,
3年前
, 13F
02/05 06:36, 13F
→
02/05 07:22,
3年前
, 14F
02/05 07:22, 14F
推
02/05 07:24,
3年前
, 15F
02/05 07:24, 15F
推
02/05 08:14,
3年前
, 16F
02/05 08:14, 16F
推
02/05 08:39,
3年前
, 17F
02/05 08:39, 17F
※ 編輯: ivon852 (36.236.188.73 臺灣), 02/05/2023 09:17:25
推
02/05 09:18,
3年前
, 18F
02/05 09:18, 18F
推
02/05 09:19,
3年前
, 19F
02/05 09:19, 19F
推
02/05 09:49,
3年前
, 20F
02/05 09:49, 20F
推
02/05 10:10,
3年前
, 21F
02/05 10:10, 21F
推
02/05 10:26,
3年前
, 22F
02/05 10:26, 22F
推
02/05 10:40,
3年前
, 23F
02/05 10:40, 23F
推
02/05 10:51,
3年前
, 24F
02/05 10:51, 24F
推
02/05 10:53,
3年前
, 25F
02/05 10:53, 25F
推
02/05 11:06,
3年前
, 26F
02/05 11:06, 26F
是從Termux裝的。Termux docker的socket位置好像不一樣,docker-compose無法連接。
推
02/05 11:20,
3年前
, 27F
02/05 11:20, 27F
推
02/05 11:20,
3年前
, 28F
02/05 11:20, 28F
推
02/05 11:22,
3年前
, 29F
02/05 11:22, 29F
推
02/05 11:57,
3年前
, 30F
02/05 11:57, 30F
推
02/05 12:09,
3年前
, 31F
02/05 12:09, 31F
推
02/05 12:18,
3年前
, 32F
02/05 12:18, 32F
推
02/05 12:27,
3年前
, 33F
02/05 12:27, 33F
推
02/05 12:33,
3年前
, 34F
02/05 12:33, 34F
推
02/05 13:04,
3年前
, 35F
02/05 13:04, 35F
推
02/05 13:15,
3年前
, 36F
02/05 13:15, 36F
※ 編輯: ivon852 (36.236.188.73 臺灣), 02/05/2023 13:25:27
推
02/05 13:58,
3年前
, 37F
02/05 13:58, 37F
推
02/05 15:27,
3年前
, 38F
02/05 15:27, 38F
推
02/05 16:02,
3年前
, 39F
02/05 16:02, 39F
推
02/05 16:05,
3年前
, 40F
02/05 16:05, 40F
推
02/05 19:47,
3年前
, 41F
02/05 19:47, 41F
推
02/05 19:57,
3年前
, 42F
02/05 19:57, 42F
推
02/05 20:32,
3年前
, 43F
02/05 20:32, 43F
推
02/05 22:22,
3年前
, 44F
02/05 22:22, 44F
推
02/05 22:58,
3年前
, 45F
02/05 22:58, 45F
推
02/06 20:38,
3年前
, 46F
02/06 20:38, 46F
MobileComm 近期熱門文章
PTT數位生活區 即時熱門文章