V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acbot
V2EX  ›  Android

手机厂商为自定义 ROM 设置了哪些障碍

  •  
  •   acbot · 2022-10-11 13:22:16 +08:00 · 9960 次点击
    这是一个创建于 766 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由于手机厂商老是喜欢在官方 ROM 做一些小动作,比如:搞点广告啊,窃取点隐私啊啥的,加之一些走量的手机型号(大厂的低端型号也在列)出厂之后基本得不到后续系统升级服务,系统漏洞长时间得不到修复,时间长了就有安全问题,所以就产生了一些自定义 ROM 的需求。以前对自定义 ROM 了解也不多,所以不知道手机厂商为自定义 ROM 设置了哪些障碍,也就是说自己定义一个 ROM ,要能在具体的设备上运行有哪些要素是必须由硬件厂家提供才能行的(注:这里说的运行仅仅是 Android 原生系统和基本功能(电话,上网等)的运行,不考虑界面美观的等因素)

    我能想到的有:

    1. BL 锁 1 ) BL 锁原理介绍中说,BL 锁的是根据 ROM 签名来验证的,那么哪些第三方制作的官方精简 ROM 是如何通过 BL 锁验证的呢,签名应该会变吧?难道说 BL 仅仅是验证内核的签名? 2 ) BL 解锁,在新版本系统中有的介绍仅仅是打开开发者模式里面的解锁 oem 选项就可以了,有这么简单的吗?怎么我看有的设备除了这个操作还需要获取解锁码的步骤呢?

    2. 设备树或驱动 https://www.v2ex.com/t/885123 在这个帖子中看到了 提取 vendor blob 的介绍,由于不太懂这个 vendor blob 是不是就是设备树或者说驱动

    除开这些还有哪些因素在障碍自定义 ROM 呢?

    15 条回复    2023-11-06 00:26:46 +08:00
    neptuno
        1
    neptuno  
       2022-10-11 15:12:37 +08:00
    好多年不玩刷机了,按照以前的经验,最大的障碍还是销量吧,销量大的,win 都给你适配,销量小的,就只能用用官改甚至连官改都没有。
    singerll
        2
    singerll  
       2022-10-11 15:26:53 +08:00
    第三方 rom 通过不了官方 bl 的验证,一般都是解锁 bl 后替换官方 bl 为第三方 bl ,也就没了验证的问题。
    手机厂商给的最大障碍就是 bl 锁,不给 bl 锁就没有后续的一系列操作。
    aqtata
        3
    aqtata  
       2022-10-11 16:01:26 +08:00
    借个地问问 MIUI 锁 system 分区有办法破吗?刷入 magisk 后仍然无法读写 system 分区。网上找到的资料都是 18 年左右的,试了都没效果
    shangsharon
        4
    shangsharon  
       2022-10-11 16:13:23 +08:00
    @aqtata 说是 recovery 里面取消 avb2.0 验证后可以读写 system,但是我试了好像不行
    而且取消验证后(小米 K30 5G)手机开机后几分钟内会无故重启 UI(不是重启系统),重启后还会出现 1 到 2 次这种情况,然后回归正常.
    也有一定几率重启 UI 后黑屏无法操作,只能长按电源关机重启.
    重启后就是重复前面的流程,只能祈求多次重启 UI 后不黑屏,然后正常使用别关机就行.....
    所以还是别折腾,想折腾直接用国外开源的适配 ROM
    treblex
        5
    treblex  
       2022-10-11 16:15:51 +08:00
    纯刷机玩的话 1+ 6T 和 小米 6 是比较经典的
    新的款式都不太愿意用户刷机了,甚至下载 app 都要联网输密码的,跟 iphone 对齐了
    想要比较新的硬件只能考虑国外的,或者开源硬件,开源硬件可能配置差点
    binsys
        6
    binsys  
       2022-10-11 16:20:53 +08:00   ❤️ 1
    固件签名( Boot 链式校验,公钥私钥,SecureBoot 3.0 等)
    设备参数及配置
    Vendor 驱动及库
    (有些 so ko 手机厂商也没代码,是 SOC Vendor ,HW Vendor 私有的,涉及大版本变动时,API 修改了等,直接挂,除非网上有人上各种黑科技 wrapper 套娃等方法让他跑起来,但厂商人员不会这么干,生命周期外会直接停更放弃)
    Linux kernel 涉及变更版本时,源码兼容都无法保证,更别说二进制兼容了。
    只能是广大网友有时间有精力有技术的贡献支持。
    acbot
        7
    acbot  
    OP
       2022-10-11 16:24:14 +08:00
    @singerll BL 锁原理介绍中说,BL 锁的是根据 ROM 签名来验证的,那么哪些第三方制作的官方精简 ROM 是如何通过 BL 锁验证的呢,精简后签名应该会变吧?难道说 BL 仅仅是验证内核的签名?
    gam2046
        8
    gam2046  
       2022-10-11 19:11:05 +08:00   ❤️ 1
    大致流程图:https://s2.loli.net/2022/10/11/bcVGF9Rykh7f5Kv.png

    我知道的,目前似乎没有厂家开源过 bootloader 部分代码,几乎开源的部分都只是内核部分,因此#2 表述并不准确,不是替换了原厂了 bootloader ,仅仅是关闭了 bootloader 的签名验证。

    而一个能用的系统跑起来,除了内核至少还需要 Android 以及设备驱动,前者厂家都不会开源,后者甚至连 OEM 厂家都没有。
    acbot
        9
    acbot  
    OP
       2022-10-11 21:42:59 +08:00
    @gam2046 https://www.v2ex.com/t/885123 在这个帖子中 和 https://wiki.lineageos.org/extracting_blobs_from_zips 看到了 提取 vendor blob 的介绍,由于不太懂这个 vendor blob 是不是就是设备树或者说驱动
    acbot
        10
    acbot  
    OP
       2022-10-11 21:48:32 +08:00
    @treblex “...新的款式都不太愿意用户刷机了,甚至下载 app 都要联网输密码的,跟 iphone 对齐了...” 这个也就是 为啥想自定义 ROM 的原因之一 主要是针对:1. 哪些已有并且还在使用的设备但是原厂商已经停止更新设备(一般就是各个品牌走量的中低端机器),2. 原系统绑定太多。 所以并不是为了自定义 ROM 而自定义 ROM
    abc8678
        11
    abc8678  
       2022-10-12 14:34:30 +08:00 via Android
    电脑可以用原版镜像,手机 ROM 被迫选择类似于毒瘤打包的一键 ghost
    abc8678
        12
    abc8678  
       2022-10-12 14:36:35 +08:00 via Android
    @aqtata 酷安是吧,现在搜个基本步骤,搜索结果全是开箱评测,百度谷歌也不一定搜不到,全是乱糟糟的
    thqw0925
        13
    thqw0925  
       2022-10-12 14:42:45 +08:00 via Android
    可以去 xda 了解,国内的酷安已经没法看了
    Marionic0723
        14
    Marionic0723  
       2023-03-01 12:19:46 +08:00
    @abc8678 刷好了一堆卫士、应用市场和浏览器,我都不知道这些包是怎么做出的,自己做的包就刷不了,这种塞了流氓软件的还能刷。
    zhujiahao
        15
    zhujiahao  
       2023-11-06 00:26:46 +08:00
    1.差异化(交互习惯,变体,风险,售价,避免同质化)
    2.操作系统等上游决策(FBE,BL,TEE )
    3.手机变体数量(增加适配工作量)
    4.供应链的风险(主流芯片/储存的选择,相机超广角畸变算法/充电管理/微机集成,屏幕 dc ,超声波二进制程序,基带射频音频等封装举措)
    5.内核开源决策
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2853 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 11:34 · PVG 19:34 · LAX 03:34 · JFK 06:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.