作者ivon852 (内容农场杀手)
看板MobileComm
标题[心得] 制作第三方ROM LineageOS
时间Sun Feb 5 01:00:49 2023
制作自己的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
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.cc), 来自: 36.236.188.73 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MobileComm/M.1675530057.A.C19.html
1F:→ gaiaesque: 猛.. 02/05 01:17
2F:推 Two4: 推~ 02/05 01:20
3F:推 NX9999: 很用心,虽然我三星 02/05 01:24
4F:推 sakala: 太专业了 还好我手机有官方版的Los可以刷QQ02/05 01:29
5F:推 Arbin: 如果没有前人做的Device Tree连编译都别想了..02/05 02:09
6F:→ Arbin: (望向我那只跟孤儿没两样的初代Xperia 1)02/05 02:09
7F:推 chickengod: cool02/05 02:10
※ 编辑: ivon852 (36.236.188.73 台湾), 02/05/2023 02:25:35
8F:推 morphy: 想知道手机跑docker稳定度与发热量,盒子可以做到手机应该02/05 02:33
9F:→ morphy: 更好才是02/05 02:33
试过跑包在Docker内的NodeJS APP,性能良好。可是docker compose不能用。
10F:推 wizard6636: 感谢分享,对工作上很有帮助02/05 03:12
11F:推 hyghmax1202: 专业推推02/05 04:11
12F:推 Kagero: 会不会做完萤幕就多一条绿线了02/05 06:30
没,刷机前我坏掉的只有指纹XD
13F:推 Taichun318: 推02/05 06:36
14F:→ pttpu: 原始码竟然有50gb02/05 07:22
15F:推 lkj12tw: 强,推教学02/05 07:24
16F:推 ProSpicy: 先推02/05 08:14
17F:推 kenlin0105: ???02/05 08:39
※ 编辑: ivon852 (36.236.188.73 台湾), 02/05/2023 09:17:25
18F:推 Raysun96: 推 02/05 09:18
19F:推 A4P8T6X9: 推 02/05 09:19
20F:推 TF00207374: 推 02/05 09:49
21F:推 andy0121: 好厉害 02/05 10:10
22F:推 ltytw: 推 02/05 10:26
23F:推 qa1122z: 看惹一下,还以为走错板 02/05 10:40
24F:推 slsamg7112: 推 还好xz3还有lineage官方维护02/05 10:51
25F:推 stonys: 感谢分享02/05 10:53
26F:推 kimi112136: docker compose不能用应该是没选到arm版吧?02/05 11:06
是从Termux装的。Termux docker的socket位置好像不一样,docker-compose无法连接。
27F:推 littlefish1: 鼓励更多实作文02/05 11:20
28F:推 twinkleAshed: 推, 很实用.02/05 11:20
29F:推 aasssdddd: 推 之前有想试 但是不能开网银就退缩了02/05 11:22
30F:推 kklighter: 技术文推02/05 11:57
31F:推 WLR: 推技术文02/05 12:09
32F:推 cliff2001: 推 02/05 12:18
33F:推 avans: 推心得与分享! 02/05 12:27
34F:推 zvx911: 推 02/05 12:33
35F:推 lovemayu: 推 02/05 13:04
36F:推 abc0922001: 推心得。现在 windows 也可以开 WSL2 去编译 ROM 了 02/05 13:15
※ 编辑: ivon852 (36.236.188.73 台湾), 02/05/2023 13:25:27
37F:推 ShibaTatsuya: 推优文 02/05 13:58
38F:推 vercetti: 推 02/05 15:27
39F:推 Alllllogo: 推心得 02/05 16:02
40F:推 get951753: 专业 推 02/05 16:05
41F:推 eric525498: 推 02/05 19:47
42F:推 kkkk1234: 推 02/05 19:57
43F:推 a9202507: 强。我也以为走错版。 02/05 20:32
44F:推 leveger0903: 技术文推 02/05 22:22
45F:推 lucisferre: 推 02/05 22:58