pixel3刷机安卓12及root记录附相关知识整理
pixel3刷机安卓12及root记录(附相关知识整理)
前置知识
安卓和Linux
安卓基于Linux内核,是Linux发行版之一。Ubuntu、Debian、CentOs等也是Linux发行版,称为GNU/Linux。虽然Android和GNU/Linux都是Linux的发行版,但是从应用、库、抽象层甚至到内核层对Linux内核的拓展,系统架构间存在很大差别。
Android内核基于上游 Linux 长期支持 (LTS) 内核,是AOSP一部分。在 Google,LTS 内核会与 Android 专用补丁结合,形成所谓的Android通用内核(ACK)
。
Android开源项目(Android Open Source Project,简称AOSP)提供了 Android系统的框架。以下是AOSP系统架构图:
AOSP是开源的,我们可以基于AOSP定制自己的安卓系统。AOSP官网有源代码和文档。并且由于AOSP采用Apache2.0授权,我们基于AOSP开发的代码不需要开源,详情参考该文章。
权限和分区
这部分比较复杂,这里只做简单介绍,详情参考官方文档。
安卓系统权限从低到高分为应用权限、用户权限和超级用户(root)权限。
几个常见的标准分区:
- boot:引导分区,启动引导文件,包含Kernel和Ramdisk,安卓root操作主要是修改boot分区。
- recovery:恢复分区,存放了recovery.img,相当于一个简易Linux系统,系统进入Recovery模式后会装载Recovery分区,运行Recovery服务(/sbin/recovery),用于OTA升级。Recovery模式下可以擦写分区,是刷机的方式之一。
- system:系统分区。存放安卓系统和系统应用。
- vendor:包含定制应用与库文件,很多厂商也直接将这些文件放入system分区。
- data:也叫userdata,个人数据分区,包含用户安装的应用和数据,包括自定义数据。
- misc:校验数据分区,供 recovery 分区使用。
- cache:缓存分区,加快运行速度。
A/B分区:A/B System Updates,Android7.0引入的一种新的OTA升级方式,将boot和system等分区变为两套,称为slot A(boot_a,system_a…)和slot B(boot_b,system_b…),一个作为主分区,另一个作为备用分区。该方式的优点是可以进行无缝升级,即升级时不影响手机正常使用,并且如果主分区损坏可以通过备用分区恢复。缺点是要占用双倍存储空间。
虚拟A/B分区:Virtual A/B System Updates,解决了A/B分区的空间占用问题。
对于采用A/B分区和VA/B分区的机型,recovery分区被并入了boot分区中。通过recovery模式刷机时,刷第三方recovery镜像会很麻烦。因此更推荐采用fastboot刷机。
刷机和root
刷机的两种方式,本文采用fastboot线刷
卡刷:刷机包(通常是.zip)放入手机的内存卡或内置存储中,通过Recovery模式安装。一般情况下,官方内置的Recovery模式限制较多,只能安装官方ROM,而第三方Recovery提供了更多功能,可以自由地刷入第三方ROM,其中以TWRP Recovery较为知名。因此采用卡刷经常需要先刷入第三方Revocery。卡刷本质是对手机文件的替换过程,不会重新刷新整个手机分区、只是替换部分文件,整个卡刷包的内容实际上就是一些文件和目录,所以卡刷相对线刷风险较小。
优点:方便、简单,刷机方法通用,不会破坏手机底层数据。
缺点:需要借助第三方recovery,有时需要先获取root权限。
用途:更新、恢复出厂设置、清除数据、系统备份/还原。
线刷:刷机包(通常是.img)存在电脑,通过数据线连接电脑进行刷机。常见的线刷方式有fastboot模式、CPU端口模式(如高通9008端口模式、联发科端口模式)。线刷通常是修改底层的分区文件。
优点:功能强大,可以进行底层修复,在升级过程中可直接将bootloader、基带等一并升级,可在卡刷失败时可以使用官方刷机包进行救砖。
缺点:操作繁琐;风险较高,线刷变砖很难补救。
用途:更换系统、解锁Bootloader、卡刷变砖补救、修改系统分区。
安卓root技术的发展历史、原理和工具可以参考该文章
为什么root
1.Android逆向/攻防对抗需要真机环境。以native层动态调试为例,有的APP会检测模拟器,需要在真机才能运行,而不管模拟器还是真机,需要root才能动态调试。还有抓包,https的抓包需要安装系统证书,安装系统证书需要root,所以针对存在模拟器检测的APP抓包,需要root真机。
2.拓展手机功能,增加DIY程度,比如各种Magisk模块。
坏处:失去保修、设备安全性减弱、可能变砖。
如何选择用来root的手机
主要考虑三个方面:
1.root的难度:或者说解锁bootloader的难度,因为一般通过bootloader修改boot分区实现root,当然也不一定,不同厂商的产品root的方式各不相同。
2.圈子和生态:决定了你从互联网获取到的相关资料的数量和质量,前人的经验可以大大降低上手难度。
3.兼容的安卓系统版本:比如Pixel3最高兼容Android12,如果你有研究更高版本的需求,需要选择更新的型号。
比较流行的用于root的手机:一加、谷歌Pixel、谷歌Nexus、小米、魅族
pixel购买注意事项
笔者在咸鱼上花380买的pixel3,oem已解锁。对于也想买pixel来root的同学,以下是一些经验。
地区、版本和oem锁
OEM:Original Equipment Manufacturer,原始设备生产商。
OEM锁:又称设备锁,厂商为防止设备被篡改加的锁,出厂自带,限制了用户修改底层配置。OEM解锁的设置在开发者选项中,有OEM锁的设备这一项是灰色的,无法修改。
没有OEM锁才能解锁Bootloader,解锁Bootloader才能root。也就是说我们要买无OEM锁的设备。
谷歌pixel手机官方版本(无oem锁)主要在欧洲和美洲销售,其它地区如亚太销售运营商定制版(verizon版),当然欧洲和美洲也有运营商定制版。
运营商定制版:verizon版,简称v版
,有运营商定制锁(oem锁)。国内发售的只有v版,当然欧版和美版也可能是v版。
美版:可能是官方版本,也可能是v版。需要查imei才能确定是不是v版,是v版则无法解锁oem。支持移动和联通,不支持电信。
欧版:欧洲国家版本的统称。官版多v版少,但购买时也最好查imei确认。欧版支持国内三大运营商。
OEM可解锁(非v版)是首位的,其次最好是欧版,网络问题比较好处理。
如何判断是否v版
1.可通过adb shell getprop ro.boot.cid
查看是不是v版。无锁的非v版返回11111111或00000000,否则是v版。
2.官网查询
输入IMEI/设备序列号即可查询设备信息,欧版和美版不论是否v版都可以对应产地的官网查到。如果查不到多半是亚洲的v版。
3.开发者选项查看OEM是否解锁。
其它
笔者买到的pixel3非常诡异,如图,OEM虽然已解锁,但是灰色无法修改;adb连接用户为shell说明未root;通过IMEI在官网查不到设备,说明很可能是国内v版;getprop ro.boot.cid
输出是00000001;Product revision
中 的MP1.0表示是工程机,JPN表示在日本发售。
准备工作
下载Android SDK platform-tools
PC端需要Android SDK中的platform-tools工具包,主要用到其中的adb
和fastboot
工具。
adb连接
手机连点7次设置->关于手机->版本号
进入开发者模式。
进入系统->高级->开发者选项
,开启USB调试
。
数据线连接手机和电脑。
PC端运行adb devices
,手机端在弹出的消息中选择同意调试,连接成功会显示已连接的设备。adb shell
进入手机的shell。由于还没root,只有普通用户权限,部分文件夹无权限访问。
如果无法识别设备,可以尝试安装最新的Google USB Drivers
解锁Bootloader
重启手机并进入bootloader菜单,可以使用adb命令或在关机时长按[电源键]+[音量下键]
1 |
|
在bootloader菜单中使用fastboot命令解锁bootloader
1 |
|
解锁后每次开机会有警告
刷入google官方安卓12镜像
镜像下载地址:传送门
查看设备型号,笔者的是pixel3 blueline
选择对应型号的镜像下载
解压镜像压缩包,如果没有把Android platform-tools加入环境变量,则需要把压缩包中的文件和Android platform-tools放在同一文件夹,然后运行以下命令
1 |
|
等待脚本跑完,中间如果卡住可以按回车试试。刷完进行系统初始化,自行设置即可。初始化完成记得重新进入开发者模式,开启USB调试,重新连上adb。
刷入Magisk Patch过的boot.img实现root
关于Magisk
先安装Magisk 下载地址
1 |
|
刚才的解压的镜像包中还有一个压缩文件image-blueline-sp1a.210812.016.c2.zip
,解压后里面有个boot.img
。
把boot.img
传到手机上
1 |
|
手机上打开 Magisk
, 依次点击 安装->选择并修补一个文件->/sdcard/boot.img->开始
。
修补完成后,将修补后的 boot.img
传到电脑上
1 |
|
刷入经过 Magisk 修补好的 boot.img
1 |
|
再次开机,电脑adb shell
后输入su
,手机同意超级用户权限,root成功。
刷入电信模块
通过Magisk模块-China Telecom Supporter
开启Pixel3对电信SIM卡的支持和VoLTE高清语音通话功能。
项目地址:传送门
下载项目,打包成zip并传入手机
1 |
|
进入手机shell并解压
1 |
|
移动解压后的文件夹到系统目录/data/adb/modules/
1 |
|
最后重启手机,插入电信SIM卡测试,能正常打电话和流量上网即可。
Reference
查询 Google Pixel 保修信息以及判断是否为 Verizon (运营商) 版
Android 玩家必备神器入门:从零开始安装 Magisk
如何使用Magisk解锁Bootloader以及RootGoogle Pixel 3?