[心得] 製作第三方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上有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
--
猛..
推~
很用心,雖然我三星
太專業了 還好我手機有官方版的Los可以刷QQ
如果沒有前人做的Device Tree連編譯都別想了..
(望向我那隻跟孤兒沒兩樣的初代Xperia 1)
cool
※ 編輯: ivon852 (36.236.188.73 臺灣), 02/05/2023 02:25:35
想知道手機跑docker穩定度與發熱量,盒子可以做到手機應該
更好才是
試過跑包在Docker內的NodeJS APP,性能良好。可是docker compose不能用。
感謝分享,對工作上很有幫助
專業推推
會不會做完螢幕就多一條綠線了
沒,刷機前我壞掉的只有指紋XD
推
原始碼竟然有50gb
強,推教學
先推
???
推
推
推
好厲害
推
看惹一下,還以為走錯板
推 還好xz3還有lineage官方維護
感謝分享
docker compose不能用應該是沒選到arm版吧?
是從Termux裝的。Termux docker的socket位置好像不一樣,docker-compose無法連接。
鼓勵更多實作文
推, 很實用.
推 之前有想試 但是不能開網銀就退縮了
技術文推
推技術文
推
推心得與分享!
推
推
推心得。現在 windows 也可以開 WSL2 去編譯 ROM 了
推優文
推
推心得
專業 推
推
推
強。我也以為走錯版。
技術文推
推
https://tinyl.io/7okO LineageOS 官方要上 5II 了
38
[心得] 編譯修改Android Kernel修改Android kernel(內核)可以開啟一些隱藏的功能,也意味著要從頭編譯kernel,要懂一 點C語言。 先從簡單的開始: 刷入自己修改過的kernel後,會在手機核心版本顯示自己的名字。 網誌好讀版:27
[心得] 手機跑dockerWe need to go deeper... 基本上,Android手機沒辦法直接跑docker,因為kernel根本就不支援。雖然如此,我們還 有QEMU虛擬機呀,可惜KVM也沒辦法用。 網誌好讀版: 架構:Termux模擬器建立QEMU虛擬機,虛擬機裡面安裝Docker,然後再通訊埠轉發。9
[情報] Xperia 1 / 5 部分版本可以暫時取得root可參見原文: xploit-via-cve-t4146103 縮網址:10
[心得] 紅米Note 5安裝Ubuntu touch+多重開機Ubuntu touch旨在將Linux帶到手機上,成為行動作業系統。Canonical放棄Ubuntu touch後 ,交由Ubports社群來維護,官方支援的機型約20台,並提供一鍵安裝器。 這台紅米Note 5非官方所支持,使用到Halium Project的技術,可與Android系統共存,還 可以安裝Android模擬器。8
[心得] 3D硬體加速的Proot Linux## 一、目的 嘗試在Android手機執行Linux桌面程式,自行編譯驅動,觀看1080p影片和玩3D遊戲,外接 螢幕和鍵鼠操作。 網誌好讀版: 實際測試程式:6
[問題] 請問有人android 11可以root了嗎?手機是pixel 2 今天順利升上11 因為ota不確定哪邊沒有做好 移除magisk ota完之後裝到另一個分區5
[心得] 容器化與Box86執行exe心得: 也許手機未來能執行Steam商店,看是要用Box86硬跑x86 Linux版的Steam,還是隔一層Wine 跑Win32版本的Steam,至少樹莓派台灣已有成功案例。 以內核支援docker的手機,用Termux執行32位元的Ubuntu容器,接著編譯Box86(x86指令轉A5
[問題] HTC U11 刷第三方 Rom 後無法通話試過刷底下 2 種 Rom 將 U11 安裝 Android 11: Pixel Experience 11 PLUS: LineageOS 18.1:3
Re: [閒聊] HTC ONE M8 好神我手邊的是 M9 ( 因為 M7太耐用,沒辦法買 M8 啊 .....) 也是在去年刷了 LineageOS (Android 9) 原本官方的 ROM 喇叭發出來的聲音也還很讚 可是刷成 LineageOS 之後 喇叭就破音了 我原本以為是 M9 的喇叭壽終正寢了