Pixel7刷机折腾小记

 技术  pixel  刷机 󰈭 4984字

TL; DR 如何恢复Root?

Pixel 自动推送的更新总是会覆盖掉 Root, 这边将简洁地给出如何恢复 Root 的过程以供查阅, 全部操作过程应当不超过15分钟.

因为是恢复root, 因而这里将不介绍adb工具套件的获取、bootloader的解锁等过程

  1. 从官方下载原厂固件文件, 注意:
  • 选择的版本号需要与手机的操作系统版本号(build number)相匹配

  • 国内的网络无法直连下载固件文件, 可以使用拥有海外网络的小鸡下载

  1. 解压两次压缩包, 得到其中的 init_boot.img 文件, 该文件大小为标准的 8MB, 后续只需要用到该文件即可

  2. 手机打开 USB 调试, adb 连接手机; 将该文件传入手机, 操作magisk修补该文件, 修改后的文件将默认存储在Download下, 将其传回电脑.

1# 传入
2adb push init_boot.img /storage/emulated/0/Download
3# 传出
4adb pull /storage/emulated/0/Download/magisk_patched-25200_sZBNk.img .
  1. adb 刷入 init_boot 文件:
1# 重启进入 bootloader 模式
2adb reboot bootloader
3# 仅刷写 init_boot 部分
4fastboot flash init_boot magisk_patched-25200_sZBNk.img
5# 重启, root 完成
6fastboot reboot

或许有基于AB分区的其他方式来更好地实现 OTA 后保留 Root, 不过不太敢折腾, 至少上述的笨办法是万无一失的, 可能会留待后续补充.


今年两三月的时候由于老的遥遥领先实在服役太久了, 电池也烂系统也卡, 便考虑换一台新机子的想法. 在机型选取上最开始想搞一台能自己刷机的oneplus, 不过看消息说最新的版本也变得狗屎了, 原本的氢还是氧OS变成Color OS了, 更加劝退了我搞一台oneplus的想法… 反反复复纠结与看网上测评后还是最终在淘宝冲了一台Pixel7来当主力机用, 拿到后简单按照[如何root一台Google Pixel 7 Pro并开通5G和微信指纹支付? - 知乎]教程即顺利地解锁了root, 并刷入了诸多magisk模块实现手机通话等各个必需功能.

总体体验了大半年感觉确实在硬件上有点洋垃圾的感觉, 不过本身我也不玩什么手机游戏也不拍照, 单纯就pixel的安卓系统体验而言我是基本满意的, 不愧是皇太子, 没有那么多厂商乱七八糟的魔改APP用起来真的很舒服.

后来使用中一直相安无事, 也没有再去尝试DIY or 搞机.

刷机失败与送修

上个月Android14开始向Pixel推送了, 便立刻按捺不住又菜又想玩的心情去尝试刷了个Android14的root的镜像, 大体的方案还是参考上述的知乎链接中的OTA升级方案.. 结果是悲催的, 手机直接变黑砖, 并且无论按多久电源键+音量上都无法进入恢复模式, 万般痛苦, 折腾到2 3点都没有找到办法, 最后发现在贴吧一个隐蔽的角落以及酷安甚至淘宝店家都共同指向一个人:

太吓人了.. 联系sun dream后说有三种可能的结果, 正常修好, ic错误(加钱), 黑砖(退回); 维修价格基本要靠近我手机的1/5了.. 心累, 这就是折腾的代价吧.. 本身其实也不是很放心这种三方个人而且是微信交易, 就怕到时候是机财两空, 不过仔细看了看感觉全网这么多指向他的引流, 应该也不至于说坏自己招牌什么的..

送修后说预期要一个月=.= 中途还说机子是ic数据错误, 还拍了张照片证明(据说是几个字段是None和error就是ic错误), 并不承诺一定能修好, sad听天由命了.. 能拍照证明感觉确实还算靠谱的, 不是自说自话乱收费的感觉

报ic错误之后大概一周就修好了, 前后一共耗时20天左右吧, 花了小一千修理费用.. 拿到快递后担惊受怕地全程录像开包, 手机能正常开机, 不过貌似没有给我root啊.. 因为修的时候我提需求说是root好后给我发回来.. 坑爹, 这样又把变砖的风险落在我一个菜逼头上了..

手机变砖的最大损失是我微信上6年的聊天记录灰飞烟灭了, 修砖保不了手机数据, 刷机前我也没有做好十足的备份准备, 仅仅使用了谷歌的one服务备份了一遍本机的一些数据, 而老手机的微信由于占据了巨额空间在不久前我也没想太多直接把它删除了, 结果导致了从本科到现在的微信聊天记录全部over… 还是比较痛苦的, 不过想了想只要我所有的聊天对象都还保留着和我的记录, 那么便还存留一些恢复我大部分聊天记录的可能.. 也只能是这样来聊以自慰了..

另外愚蠢的google one服务也完全不可依靠, 在我拿到新机子后尝试通过one来恢复, 但是看起来one把我的pixel和维修前的pixel看成了两台设备? 导致其无法导入之前我备份的数据, 此外我仔细看了下one备份的我的软件目录, 里面根本不全! 许多我自己安装的软件都没有被他覆盖! 而谷歌照片也是依托狗屎, 许多照片都没有成功上传, 而那些文件夹按理我确实打开了同步的标志! 结果就是刚拿到手机的第一天我没有忍耐注一口气配置到了凌晨4点才算将他变成了老手机的形状..

至此, 付出了惨痛的代价得到的教训是:

  • 从xda老哥的一个提问贴(我如何才能保证不让我的pixel变砖?)的回复中有人说, 在做任何自己不确定的事情前一定要多去更多更多地看各种资料, 确保自己真正理解了自己所做的事情.

  • 完整的Android备份方案:

    • one 无法复刻机器的方方面面, 不苛求说具体的ui布局的都能完美复刻了, 至少安装的软件包 图片 文件这些得备份下来吧

    • App用户数据备份, 尤其是某个把数据全部存在/data下还不给用户明文下载的小而美的软件. 具体备份方案可以参考: 安卓微信记录备份方案 - rqdmap | blog

非root使用Pixel

拿到修好的pixel的一段时间内, 我都不再敢轻易尝试自己去刷root了, 毕竟砖一次就要花钱去修一个月.. 而且我也没有弄清楚为什么上次的root就失败了.. 这次如果轻易尝试不说一定失败吧至少很大概率是听天由命了..

在这期间主要是依赖Shizuku解决语音通话volte的问题的, shizuku获取的是adb级别的权限, 可以通过usb adb来启用, 也可以直接通过wifi直接启动; 有了shizuku就足够启用volte了, 对应的app是Pixel IMS.

这儿还列了一些好玩的利用Shizuku的软件: ThePBone/awesome-shizuku: Awesome list of Android apps making use of Shizuku, 感觉有点开辟玩机新世界的大门:)

上一组App缩略图的对比, 不得不说审美被完爆.

事实上, 在不少的刷机帖子中, 当有人问到Pixel Root相关的操作时, 总有人发表高论: 既然都使用Pixel了为什么还要Root刷机?

我其实不是特别清楚这两者之间的联系, 不过就我的使用体验来看, 不root确实也已经能够获得很好的安卓体验, Pixel系统体验相比于国产的魔改安卓已经算是清爽至极了, 但是我并不是因为Pixel去选择的Root刷机, 而是因为想要Root才去选择的Pixel, 身为这台设备的使用者, 我想我理应获得所有我想要的权限, 实现所有我想干的事情, Pixel只是一个搭载着更原生的系统、更加容易Root的设备罢了.

为Android14解锁root

事情的起因是因为我玩的一款手机游戏可以与steam版本同步存档, 但是这份手机存档放在了私有的目录/data/data/下, 我无法获取! 又想到微信聊天记录也因为私有而无法很好地导出, 一怒之下我又下了壮士断腕的决心要Root我的设备!

首先我又问了问日之梦老板, 毕竟他没有给我root后就发给我了, 我想我应该可以去找他问问:

不过好像没有什么特别的指南or教程, 但是由于说了和往常没有区别那么我想就还是magisk那些老套路. 但我不太确定android14是否发生了新变化, 以及什么之前看到过的ab升级我确实不太懂, 因而这次吸取教训后我查看了蛮多的教程后才敢行动, 这边稍微列举一些比较好的说明:

总的来说在互联网上转了一圈没发现什么特别的Android14更新才有的坑, 便准备实操了!

由于此时老板已经帮我修好了刷成android14了, 因而我决定继续参考上述的那篇知乎教程, 不过此时用的是上半部分的root方案而不是OTA的方案, 这个方案是经过验证可行的, 手机刚买到时候就是参考这个实现的.

环境准备工作

  • adb这类安卓开发工具

  • 手机解锁OEM(这一步会清空所有手机数据, 恢复出厂设置)

  • Windows上还需要下载一个驱动, 以能够对pixel进行adb调试

这些我在第一次刷的时候就准备好了, 因而不再需要做额外的准备了.

原厂固件文件下载

从官方下载原厂固件文件: Factory Images for Nexus and Pixel Devices  |  Google Play services  |  Google for Developers, 选择的版本号需要与手机的操作系统版本号(build number)相匹配.

做到这一步的时候我忽然疑惑, 怎么当初ota升级到android14的时候不需要呢? 当时我下的是什么版本的呢? 往下翻了翻知乎的这篇教程:

直接下载要刷入当前手机的最新版固件,或者说你想更新到的版本,不用考虑手机本身的版本。

那我下的是什么呢?..

如何存档网页?

如何存档一个网页? - 影子屋 第一次实际去archive.org上save page, 这儿做一个记录~

我仔细翻了下历史记录, 发现我好像下的是这么个东西: 适用于 Google Pixel 的出厂映像  |  Android 开发者  |  Android Developers

这尼玛的.. 我真是脑梗了, android14都已经发布了, 你还隔这里beta.. 而且发布的镜像的名字也不知道是个什么东西.. 我居然就用了这种镜像来flash_all.bat了我的手机.. 太愚蠢了, 我太愚蠢了, 不看清楚不多方调查就随便下载了一个镜像包.. 明明android studio也是你谷家的怎么消息一点都不同步, 而且这里的还如此的闭塞, 最新的更新还是10月18号, 正好是我刷挂的第二天(但是你tm更新了也没更新到正确的image包上啊!你更新了个什么鬼)..

这儿大概是摸清楚了为啥更新失败了, 因为下载的image大概是有问题的..

疑问?

官方的完整的OTA镜像和出厂镜像的区别?

确实不太懂, 问了下GPT是这样说的:

官方的完整OTA镜像和出厂镜像是在软件分发和更新方面有所不同的两种镜像类型。

完整OTA镜像(Over-The-Air Image):完整OTA镜像是指包含完整系统软件的镜像文件,用于通过无线网络进行设备的软件更新。这种镜像通常包含操作系统、固件、驱动程序和其他相关的系统组件。完整OTA镜像可以用于更新设备的操作系统版本、修复漏洞、改进性能等。

出厂镜像(Factory Image):出厂镜像是指在设备出厂时预装的原始系统镜像。这种镜像是设备制造商根据设备规格和要求预先配置的操作系统和软件。出厂镜像通常包含设备的基本操作系统、预装的应用程序和驱动程序等。它是设备的初始状态,用户在购买设备时会看到的预装软件。

两者的区别在于使用场景和目的。完整OTA镜像主要用于设备的软件更新,可以通过无线网络进行远程更新。而出厂镜像是设备出厂时预装的初始系统镜像,用于设备的初始设置和功能。

Magisk打补丁

Magisk打补丁的原理可以参考上述的: 玩机必看!带你入坑安卓刷机,小白也能看懂的ROOT基础指南来啦!, 老样子把其中的init_boot拿出来打个补丁, 再把patch后的文件拿到电脑环境上.

刷入init_boot

知乎上使用的flashboot指令是:

1fastboot flash init_boot magisk_patched-25200_sZBNk.img

而上次的ota更新则是flash_all了, 又有看到一些教程的指令是fastboot flash boot xxxx… 其实有点心里打鼓不太确定具体该用什么指令, 不过我努力想了想其中的原理, 将patch后的boot文件覆盖回指定的位置, 那么确实只需要将这个8KB的init_boot文件刷回这个顾名思义的init_boot就行了, 便还是沿用了知乎给出的指令方案.

疑问?

flash boot init_bootflash boot boot 的区别?

刷入后, 手机自动启动, 有一个recover还是什么模式有选项需要选择进入系统, 按下电源键确认, Google Logo开始转, 那几秒我紧张到了极点, 像极了鼓足勇气给暗恋的女孩递去小纸条后忐忑不安地砰砰心跳.. 好在没有持续太久, 仅仅数秒后我便看到了熟悉的锁屏壁纸, 一切顺利!!

Magisk, 启动!

这样便算是root成功了!

玩机展望

另外一个激励我root的动力是, 后续希望写一点简单的Android程序优化一下日常的手机使用体验, 比如自动记账, 无感备份这类功能, 或者一些与自己vps结合的前端程序.

不管怎么说, root过后便是海阔天空!

嗨! 这里是 rqdmap 的个人博客, 我正关注 GNU/Linux 桌面系统, Linux 内核, 后端开发, Python, Rust 以及一切有趣的计算机技术! 希望我的内容能对你有所帮助~
如果你遇到了任何问题, 包括但不限于: 博客内容说明不清楚或错误; 样式版面混乱等问题, 请通过邮箱 rqdmap@gmail.com 联系我!
修改记录:
  • 2024-04-02 17:51:29更新 Pixel 刷机简易指南
  • 2023-11-19 02:14:43Pixel7刷机折腾小记
Pixel7刷机折腾小记