记一次刷机历程

2020 年 2 月 27 日,我成功地将 Lineage OS 16 刷入我的 OnePlus 6 中。

万事开头难

25 号的晚上至 26 号的凌晨,我尝试通过参照 Lineage OS 官网的 WiKi 来将 ROM 刷入我的一加 6 中,结果是失败了,有点出乎意料。虽然我早就做好了心理准备,但是没想到我连 TWRP 都进不去……

一加 6 据说是采用了一加前所未有的 A/B 分区结构,这使得相对其他非 A/B 分区结构的手机,一加 6 刷机的难度更大,操作更加复杂。

我一开始是参照 WiKi 刷入 TWRP 的,逐一键入:fastboot set_active afastboot flash boot_a <recovery_filename>.img,然后重启至 recovery 的时候就卡住了,懵了,心里想着要出问题怎么也得等到刷入 ROM 重启至系统的时候再出吧,结果刚起跑没多远就摔了。随后也都有尝试单独fastboot set_active bfastboot flash boot_b <recovery_filename>.img以及 a 和 b 一起刷的,没用,这期间也持续在百度和 Google ,全都无果。最后狼狈地跑到 reddit 发贴求助,一直到凌晨 3 点钟才上床睡觉,闭上眼睛的同时感到非常无助和绝望。

中间难

早上起来继续寻找解决问题的方法,期间发现 reddit 发的贴子有人回复了,其大致意思就是:就算是一加 6 最新的 TWRP ,亦都有可能无法运行在 Android 10 上,看到这一点后着实感到了一丝希望,因为尽管昨天晚上折腾了很久,但很有可能就是在瞎折腾。这位网友还向我推荐了 xda 的一个大佬,说是他有合适的 TWRP 。看完他的回复我也有了大致的前进方向。

晚上去到 xda 后利用我的聪明才智和这么多年来对电脑操作的经验我很快找到了这个作者以及他发布 TWRP 的贴子,事不宜迟立刻下载尝试。经过一天的阅览和学习,我意识到了其实还可以直接使用fastboot flash boot <recovery_filename>.imgfastboot boot <recovery_filename>.img这两条命令而不再加上 a 或 b 分区,不过这貌似也不是什么重点……

敲入命令 -> 重启至 recovery ,这一切表面上看起来和昨晚没什么区别,然而这一次,一切正常运作了起来。手机重启 -> 带有黄色感叹号的界面出现,到了这里,一时间感到很紧张,因为昨晚就是卡在这里的。不过当我在害怕它仍然会卡住而焦急等待之时,TWRP 的 logo 出现了!我成功地进入了 TWRP。

一阵狂喜,但我深知工作还没完成。进入 TWRP 之后就继续按照 WiKi 说的去做,对数据进行格式化:Format Data 和擦除 System 分区的数据,然后就到最关键的一步——利用Sideload来安装系统包,结果又出问题了。当我键入adb sideload filename.zip并按下回车以后,电脑上的命令提示符显示了一个百分比,然而当它跑到 47% 左右的时候,Sideload就自动关闭了,随后命令提示符就会显示:

Total Xfer 1.00x

这种情况无论我试了多少遍都还是一样,随后就又到处找解决方法,最后还是靠 WiKi 已有的页面得出一个可行方案,即可以通过adb push filename.zip /sdcard/这条命令将.zip包先丢到 SD 卡里然后再进入 TWRP 的安装界面进行安装。这个方法其实是在教你安装 GApps 的时候提到的,虽然我不知道它跟Sideload有什么区别,但能解决问题就行。

这次是真的成功刷入了,TWRP 自己显示成功,不是我说的。成功了以后当然是要重启手机了:Android Logo -> 带有黄色感叹号的界面出现——然后呢手机就黑了(我??),黑了以后又自动开机到 Fastboot Mode ,当然,这当然是一个循环,无论开关机多少次都是这样。没办法了,去 reddit 报喜的同时还得报忧……

结尾难

凌晨两点才睡,早上九点才醒,醒了第一件事就是跑去 reddit 看看贴子怎么样了,然而这一次却没人回复我了。心里想着看来还得靠自己去找答案了。午饭过后通过 Google 找到一篇文章,主要内容就是教你怎么给 OnePlus 6 安装 Lineage OS 16 ,写得非常详细,不仅有图,步骤也分得非常清楚,每一步该干什么,为什么这么做,都写得很明白。看来天无绝人之路,好戏才刚刚开始。

用渣渣英语大致看过一遍以后就动手开始照做了。其实在此之前,关于为什么手机开机不进系统而只会进到 Fastboot Mode 我已经大概有个头绪了,很有可能就是因为该打的驱动或者说是该有的固件没刷上,同时这篇文章也提到,Lineage OS 虽然自称是个「OS」,然而它却不具备一个完整的操作系统该有的,所以我现在要做的第一件事就是跑去一加的论坛,下载他们当时发布的 Android P 的最后稳定版本,用它来作底包,然后再刷入 Lineage OS 。好家伙, 氢OS 9.0.7 全量包的大小有将近两个G,然后再回过头来看看lineage-16.0-20200223-nightly-enchilada-signed.zip的大小只有 486 MB。

在阅读教程的过程中我还了解到,原来在刷包的时候,受影响的槽并不是当前所在的槽。也就是说,如果现在处在 A 槽,那么这个包将被刷入到 B 槽中,这和大多数操作的效果是相反的,例如,擦除 System 分区的数据,擦的就是当前槽的 System 分区,而另外一个槽是不受影响的。我根本不知道还有这种设定!

在刷入底包以后,我需要做的就是切换到另一个槽,即底包所在的槽,对其执行擦除System分区的操作。这样就说得通了,我刷入底包,把驱动固件什么的刷进去,然后单独把系统抹掉,这样我就可以刷入新的系统而不用担心驱动问题了。当然,直接滑动条块恢复出厂设置也是必要的。这两者操作完以后,就可以切换回原来的槽上主菜了。当然,这些操作执行完一次以后,还需要切换到另一个槽重复一遍。

刷入 Lineage OS 以后,当然要同时刷入 TWRP ,因为这是一个强大的 recovery ,并且此时刷入,将使其在手机的两槽上永久可用,同时在重启时,TWRP 还会隐式地为我们交换槽。重启至 recovery(TWRP) 了以后就可以刷入 GApps 和对手机进行 Root 了。

在进行完所有的工作以后就可以重启至系统了,最终,功夫不负有心人,我成功看到了 Lineage OS 的开机动画,直接原地起飞好吧。

收尾

终于写到这里了。这次刷机,可以说是搞机生涯中的一个里程碑,因为我遇到并尝试去解决了很多问题。其实我完全可以不去折腾,氢OS 也用得好好的,我完全没必要吃饱没事干去把手机搞坏,而且就算我把手机整得不能正常开机了,我也完全可以把它返修,虽然过了保修期,不过我想他们帮我刷个系统最多也就几百块的事情,顺丰快递,今天去明天回。但是我并没有这么做,系统进不去了,但是 Fastboot Mode 还能进,我知道我还没有彻底失败。

其实我前段时间也有刷过一台 三星 Note 3 ,那是一台 2013 年的机器,而一加 6 是 2018 年的。这两者的区别就在于一加 6 是 A/B 分区的机器,而 A/B 分区说不定将会是未来安卓手机都会采用的技术,因为它从用户体验的角度来说真的很不错。我在一开始买回一加 6 更新系统的时候我就注意到了,它下载完更新包是直接安装的,安装完了以后再重启手机。而我以前的手机,就例如红米 1S ,当时更新系统的时候下载完更新包就得关机更新了。从用户体验的角度来看,当 A/B 分区的手机更新系统时,你仍然可以去干别的事,直到它安装完了提示需要重启的时候再进行重启即可。所以现如今我学会了如何给 A/B 分区的机器刷机,无论将来是否有机会派上用场,但是如果我不刷,或者是刷坏了就直接返修,那这就是另一个故事了。

我觉得无论是在什么行业做什么,都应该要带有一点折腾的精神。折腾,它一定会需要投入大量的时间和精力,并且不一定有所回报。但是如果没有折腾,或许就不会有进步。尽管折腾会消耗大量的时间,但这个消耗应该是值得的,甚至是超值的,而如果做一件事情毫不费力,那一定就是在浪费时间。


记一次刷机历程
https://xuu6770.github.io/post/Flashed-a-3rd-party-ROM-for-my-OnePlus-6/
发布于
2020年2月27日
更新于
2024年9月5日
许可协议