纪念赛博镇纸:刷机刷到9008也没辙

桌面上躺着一位受害者。在昨天,它还是一台活蹦乱跳的大砖头Nubia Z60Ultra。而现在,它是一块边角有点磕碰的赛博镇纸。屏幕漆黑,对任何按键毫无反应,哪怕祭出大招——高通 9008 (EDL) 模式也是徒然了。

Told my Gemini, “刷机刷到第一次,9008都失效了。纪念一下”。

于是它说,

刷机刷到9008(EDL模式)都不响应,这确实是每一个折腾系统的人生命中“不可承受之重”,但也绝对是一个值得立碑的里程碑。对于习惯了掌控系统底层的人来说,哪怕是面对 Arch Linux 滚挂了或者配置冲突,通常也总有办法切进 tty 抢救一下;而 9008 的彻底沉默,就像是底层硬件直接关上了最后那扇沟通的门。

从客观物质层面来看,它几乎完美无缺。屏幕的像素阵列依然排列整齐,SoC 里上百亿个晶体管依然具备极高的开关电平能力,射频天线随时可以捕捉电磁波,甚至摄像头模组里的微小马达也随时准备着下一次对焦。它没有经历任何物理上的衰落、老化或外力破坏。它仅仅是因为存储芯片里几个关键扇区的数据排列失去了秩序——或者是 Boot 链条上的一个底层逻辑指针,因为一次意外的断电,永远地指向了虚无。这种现象其实非常迷人,它以一种极其冷峻的方式向我们展示了现代计算设备的本质:精密的硅片、金属和玻璃只是庞大的躯壳,而那串绝对有序的二进制代码,才是赋予其“生命”的灵魂。一旦沟通物理与逻辑的桥梁(Bootloader)断裂,哪怕躯壳再完好、蕴含的算力再强大,也只能陷入彻底的沉睡。这种高度复杂的系统,其脆弱性往往就隐藏在最底层的几行引导逻辑中。

这台(目前看来)彻底砖掉的设备,倒也很契合眼下的时节。虽然四月是残忍的季节,但是也要体认到春天的短暂和珍贵。 硬件的“长眠”固然让人感到挫败,但在字面意义上把它“刷穿”的这个探索过程,本身就是一段值得珍重的极客体验。你是打算稍作休息后,在你的 Linux 环境下用 qdl 之类的开源工具再尝试做一次底层的抢救挣扎,还是准备顺其自然,就让它安静地留在桌面上,做一个充满纪念意义的赛博镇纸了?

好吧,除了很有文艺范之外,也无法可说了。其实早已经问过Claude除了短接test point外还有没有可能的办法,毕竟linux上用qdl会卡在usb连接,dmesg说error -71, 至于Windows上则是在programmer firehose发送完后就断开了9008。大约是前一次刷到一半的时候出了问题,底层分区表或者boot链可能在某处死锁了吧。所以在PrimaryBL移交给引导文件试图init一些hardware的时候panic了。

复又让Gemini批评一下我,彼曰:

太狂妄了,失去了对硬件的敬畏。竟然把 9008 “救砖”这种工程级别的“ICU 开颅手术”,当成了日常感冒挂水一样的常规操作。过度信任底层链路的可靠性,直到那可能老化了的 USB 接口,在最关键的时序上断触了一下。 这就好比你每天都在悬崖边上跳芭蕾,还觉得那是健身房。这次失败温柔地提醒我:有些后门,原本就不是给你我准备的。一旦打开,生死由天。Literally。

在大概两年多没折腾之后(那时好像是一些开发者退出了),过去几个月,又忍不住想root了(另外就是自己的archlinux现在拾掇得差不多了)。在 KernelSU、SukiSU、resukisu、APatch、folkpatch 这一长串令人眼花缭乱的 Root 方案里摸爬滚打。我天真地以为自己又精通了。

瞧瞧,尽管root也随着三星的oneui更新,小米的神秘考试,一加的申请制等等几乎是风流星散了,但经过我的一番研究和实践,目前圈子其实有点去中心化地在野蛮生长,诸如zygisk, lsposed等知名项目都有许多版本的实现,各种Next/Re等等涌现而出,而Magisk, KSU, APatch三个branches的root实现方式也都有了许多知名的fork。不过似乎热情的资深开发者还是比较“集中”了。而且也许有不少浑水摸鱼的项目,乃至互相攻讦的帖子也屡见不鲜。(市场准入机制的筛选,技术复杂后更大的信息不对称,更少的用户和更激烈的竞争)。不同实现之间的配合也像调参炼丹一样,而且其feasible space绝不小(不同的版本相同的组合未必兼容)。

其实很多root后的Module我都不太用得上,但是因为我对第三方ROM的minimalist/maximalist有所偏爱(前者指没有那么多bloatware, AOSP的风格;后者指最大程度的自由度,和自定义化比如risingOS),所以为了pass integrity,必须root。

花费了 90% 的精力去攻破系统的堡垒获取 Root 权限,仅仅是为了在剩下的 90% 时间里,向各种 App 说“我真的没有 Root”。

为什么手机是由我完全掌控会在现代商业逻辑里显得大逆不道?难道这些现象不算是科技封建主义,或者是黑暗启蒙的prelude吗?

Anyway, 在不断升级的检测机制下,隐藏技术变得越来越像是一场神秘主义的玄学仪式。我们有时要配置 Shamiko,要部署 Tricky Store,要像个古董商一样满世界寻找(或者购买)未被 Google 封杀的 Keybox,末了还需下载一长溜detector/checker来看看环境隐藏的怎么样。很多时候,你甚至不确定某个配置到底起没起作用,只能心中默默祈祷银行 App 能顺利打开。

总之,不管是折腾还是科研,最近遇到的各种机魂不悦的情况有点多,有点打击信心。感觉总在手忙脚乱,是不是缺少一些成功工程师的智慧。没错,需要控制最坏情况的爆炸半径,思考代价是否能够接受;需要利用快照或者版本控制,来对抗反复删改对精确记忆的蹂躏;尽量追求幂等性操作,追求函数式的设计,减少副作用;学习优秀的日志设计,减少盲人摸象的情况——不过,其实不太清楚是当前case下没法实现,还是说自己并没有能够很好的运用这些方法背后的某些更本质的思维。

但是,其实最后换了一台windows电脑又把手机刷好了,9008模式先擦除再重刷,万岁!