惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threatpost
P
Palo Alto Networks Blog
NISL@THU
NISL@THU
O
OpenAI News
Project Zero
Project Zero
G
GRAHAM CLULEY
P
Privacy International News Feed
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
D
Docker
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
W
WeLiveSecurity
P
Proofpoint News Feed
腾讯CDC
Cloudbric
Cloudbric
S
Secure Thoughts
C
Check Point Blog
博客园 - Franky
T
The Exploit Database - CXSecurity.com
T
Troy Hunt's Blog
GbyAI
GbyAI
Security Archives - TechRepublic
Security Archives - TechRepublic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
TaoSecurity Blog
TaoSecurity Blog
L
Lohrmann on Cybersecurity
V
Visual Studio Blog
F
Fortinet All Blogs
博客园 - 叶小钗
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
C
Cisco Blogs
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research

澄沨的漫游茶记

岁暮杂记 在 KOReader 上显示直排文本 虎落平阳:TNO 美国罗伯特·F·肯尼迪线·前篇 烟火·乙巳 蜀都行纪 实习日 事故小记 烟火·甲辰 藏地行纪 元旦杂记 浴火重生:TNO 东方红西北国防阵线党权线·后篇 太阳旗之下:TNO 东方红西北国防阵线党权线·前篇 尚在人间:TNO 乌克兰-苏维埃社会主义共和国线 上海电信 SDN 网关全局域网皆可收看 IPTV 的实现 论 AList 的滥用:多平台串联搭建个人影音-番剧流媒体服务 俄罗斯已逝:TNO 俄罗斯科米-神俄线·后篇 紫日高悬:TNO 俄罗斯科米-神俄线·前篇 The Pure WINDOWS Project: 使用 Windows Sandbox 隔离腾讯系软件的笔记 廣東手艺人:TNO 广东国索尼-长江实业线 使用 PaaS 服务部署 umami 统计工具的笔记 柏林春晓:TNO 德国施佩尔左线 闲话 COMICUP 与敝站 解决小米手机在 fastboot 模式下不被 Windows 识别的问题 贺正·癸卯 MIUI 下观看 Netflix 等流媒体时 Widevine DRM L1 认证失效之解决 崇明骑行纪事·合 磊哥小传 崇明骑行纪事·转 让 Hyper-V 虚拟机支持调用 USB 摄像头 崇明骑行纪事·起承 炎夏小憩 飞哥小传 さよなら、WordPress 使用 Cloudflare Workers 加速甲骨文存储桶 博客流浪纪事 moe-counter-cf:将萌萌计数器部署到 Cloudflare Workers 烟火·迪士尼 红十字救护员培训小记 迁移到了狗云 探索优雅纯粹的追番体验:蜜柑计划 + Resilio Sync Moe-counter: 给网站装上多种风格可选的萌萌计数器 疫情,在下的朋友圈拾遗 Postcrossing 初探小记 解决 Github 同步复刻上游仓库时冲突的问题 使用甲骨文免费云服务器搭建 frp 内网穿透工具的笔记 「在下」的两周年 The Pure WINDOWS Project: Hyper-V 虚拟机使用笔记 烟火·壬寅 贝恩小传「大盛り」 非法侵入住宅罪之浅究 碧蓝航线舰娘原型考据「铁血驱逐篇」 贰拾 火警纪事 观 EDG 夺冠有感 华硕路由器实现远程唤醒局域网设备的笔记 军训随笔 夏日蓝调 在 Wordpress 博客里创建彩色标签云页面的笔记 贝恩小传 迁移到了 Bandwagon Host 杂诗二首 来给 WordPress 添加一个书单页面吧 乡影随摄 从刑法的报复主义论中国刑法的发展 漫谈二次元的「破圈」 浅谈「FBI WARNING」 とある魔都の ACGN 巡礼目録 桜色 在 WordPress 上添加 moc3 Live2d 看板娘的超简单方法 COVID-19 疫苗接种全纪录 Steam 转区小记 元旦 更新主题为 Sakurairo 华为 HarmonyOS / EMUI 安装 GMS 谷歌框架的笔记 下载没有下载权限的钉钉直播回放的笔记 Re:从零开始的 Windows 简明优化指南 Re:从零开始的计算机使用指南 使用 ADB 工具箱卸载手机预装应用 基于宝塔面板的 Google Drive 百宝箱搭建笔记 The Story of the Snake | 蛇纪事 参议院纪事 箱轮纪事
The Pure MIUI Project: 小米 10 刷机笔记
澄沨 · 2022-02-08 · via 澄沨的漫游茶记

刷机有风险,操作须谨慎,请提前做好数据备份。

惊闻 MIUI 13 系统级内置全链路反诈,已经有些时日了。望着手中高考结束后购入的 Mi 10,想起当时因小米的 168 小时「解 BL 锁冷静期」政策而放弃刷机的草草决定;被系统广告烦扰的日夜;不时犯病的 MIUI 12;真假未知的各式有关隐私的流言蜚语……在下遂决定痛下决心,抛下一切包袱,不惜一切代价,逃离这个光怪陆离的牢笼,代表月亮彻底净化这台 Mi 10。

经过一些简单的搜索,最终决定使用欧版 MIUI 系统作为 ROM 包。欧版 MIUI 来自小米欧洲社区,其去除了一些内置的 APP 和广告,整合了 Google 框架和部分 Google 全家桶;值得一提的是,欧版 MIUI 获得了欧盟官方分销商 ABC Data 的认可,而欧洲实行严格的数据保护,欧盟的一般数据保护条例使得在欧洲销售的手机系统也必须符合此标准,这意味着欧版 MIUI 在数据方面的安全性毋庸置疑。

解锁 Bootloader

Bootloader,相当于安卓系统 BIOS 的存在,是手机安全启动规范的底层的一环。主要作用是验证加载对象签名,通过校验系统 ROM 完整性,防止启动第三方 ROM 或 Recovery,避免由此带来的数据安全风险。但它同时也限制了通过 Fastboot 方式刷机(即线刷),这意味着一旦 Bootloader 处于上锁状态,就无法在手机上安装除官方 ROM 以外的其它 ROM。

根据小米的规则,解锁 Bootloader 需要率先在手机上绑定小米账号。因而,拥有一个小米账号是必须的。

在本机已登录小米账号的情况下,打开设置,点击我的设备-全部参数,不断重复点击 MIUI 版本,直到显示进入开发者模式。随后在设置中找到更多设置-开发者选项-设备解锁状态,点击绑定设备和账号

需要注意的是,这里设备和账号需要绑定 168 小时后才能解锁(具体时间可能有出入),再次点击绑定会重置计时,也就意味着还要重新等整整七天,所以准备解锁前千万别再手贱点一次(别问在下是怎么知道的)。

绑定时间期满,前往申请解锁小米手机页面下载官方解锁工具,并依照相关引导进行解锁操作。

刷入 TWRP Recovery

TWRP 是一个开放源码软件的定制 Recovery 映像,供基于安卓的设备使用。它提供了一个支持触摸屏的界面,允许用户向第三方安装固件和备份当前的系统。有了它,卡刷手机系统会变得非常方便。

首先当然是需要找到适合在下手上这台小米 10 的 TWRP 包,这里在下找到一个几乎包含小米全机型的 TWRP 包分享链接,部分 TWRP 包来自 Wzs 开发者。

此分享链接来自互联网,与在下并无关联,请自行甄别可能存在之风险。

这批 TWRP 包中应已打包好了一键刷入脚本,操作比较简单,只需关闭手机,按音量下和电源键进入 BootLoader,数据线连上电脑,运行一键刷入 Recovery 脚本即可。成功刷入后,会自动进入 Recovery,在关机状态下,按音量上和电源键也可以进入 TWRP Recovery。

若下载的 TWRP 包中没有一键刷入脚本,那么也可以自己动手做一个一键刷入脚本,具体操作如下:

  • 下载 SDK Platform-Tools,找到之前下载的 img 格式的 TWRP 镜像,将其文件放入 SDK 的文件夹中,并改名为 recovery.img

  • 在 SDK 文件夹中新建一个文本文档,键入以下内容,然后将 txt 后缀改为 bat。:

    1
    2
    3
    fastboot flash recovery recovery.img
    fastboot reboot recovery
    pause

刷入 MIUI EU

接下来要进行的就是狭义上的刷机了,首先要准备的,当然是合适的刷机包。MIUI EU 的刷机包在小米欧洲社区的官方网站可以下载,刷机包不需要解压。

需要注意的是,该网站需要魔法上网,直连会直接 502,由于是欧洲论坛,英文苦手者请善用浏览器翻译功能。

刷机包准备好之后就可以开始双清了,进入 TWRP,选择清除,然后滑动确认按键,手机双清就完成了。之后再连上数据线,把准备好的刷机包放在手机的内部储存里,在 TWRP 选择安装,选中刚刚复制进储存的刷机包,滑动确认按键,静候刷入完成。

提示刷入完成后,可以直接重启了,此时应该能正常进入系统,若进不去系统可以进 TWRP 在清除里格式化一下 Data 分区再试试。

MIUI EU 保留了安卓系统原汁原味的 Google 验证,此验证需要魔法上网方能通过。

本地化作业

MIUI EU 抛弃了大陆版 MIUI 系统的一些功能,这些功能可能一定程度影响使用体验,比如对于在下来说,小米钱包的缺失使得在下无法通过手机刷公交卡。好在藉由 Koizumi 大佬制作的 MIUI EU 欧洲版 本地化 Magisk 模块,这个问题能得到完美的解决。

其本地化项目分为三个部分:Magisk 模块、工具箱 app(Xposed 模块)和直接安装 apk 就可以恢复的系统功能,详情可参见前文提供的文章地址。不过作者在说明中提到:「为更好开发更新,后续更新将不再适配 MIUI 12。」这并不是说 MIUI 12 不可用,在下刷的系统正是 MIUI 12.5(因为 Mi 10 的 MIUI 13 的包还没有),目前使用并无异常。

刷入 Magisk

Magisk 是一个安全、美观且非常强大的安卓自定义工具。它主要有以下两个功能:

  • MagiskSU:获取设备 Root 并经用户授权给应用。
  • Magisk Modules:下载、挂载与管理模块。

它可以实现在安卓上管理 root 权限,或是通过模块实现某些深度自定义的功能,而且其挂载方式对现有的系统文件不会造成影响。

刷入 Magisk 的方法也非常简单,由于 Magisk 同时也是一个开源的项目,在其 Github 的 Release 页能轻松获取到最新版本。

下载好 Magisk 的 apk 文件之后,可以选择直接安装,然后根据其应用内引导下载 zip 包在 TWRP 刷入;也可以选择直接在 TWRP 刷入 apk 文件,两者效果是相同的。

安装 Xposed 框架

根据维基百科:Xposed 框架是一个运行于 Android 操作系统的钩子框架。其通过替换 Android 系统的关键文件,可以拦截几乎所有 Java 函数的调用,并允许通过 Xposed 模块中的自定义代码更改调用这些函数时的行为。因此,Xposed 常被用来修改 Android 系统和应用程序的功能。

遗憾的是 Xposed 框架对于安卓系统的支持止步于 Android 8,不过好在之后 EdXposed 团队成为了后续 Xposed 版本研发的继任者,EdXposed 的安装需要依赖于 Riru 模块,这是由国内独立开发者 Rikka 开发的一套模块系列。Riru 神奇的地方在于,它部分地达成了 Xposed 那样的功能,通过替换 Zygote,能够自定义到一部分的应用。不过 Magisk 24 加入了 Zygisk 功能,它的功能和 Riru 差不多,目前 Riru 已经建议其使用者转而使用 Zygisk。与此同时,EdXposed 的版本更新缓慢,甚至尚不支持基于最新版本的 Riru 安装,更别提对于 Zygisk 的支持了。好消息是 EdXposed 同样后继有人,那就是 LSPosed,LSPosed 是 Edxposed 的一个分支,但是它的版本迭代要比前者快得多,并且已经实现了支持 Zygisk。

MIUI EU 本地化模块也有需要 Xposed 框架实现的功能,因此,在下选择使用 Zygisk 版的 LSPosed 来安装 Xposed 框架。

首先,下载最新版本的 LSPosed,它也已经开源,直接前往 Release 页下载即可,注意选择 Zygisk 版本下载。

在 Magisk 中轻点右上角设置图标,在 Magisk 一栏中开启 Zygisk,随后设备会重启。重启完成后,在 Magisk 中选择模块-从本地安装,选择之前下载好的 LSPosed 的 zip 文件刷入,完成后再次重启。

桌面出现 LSPosed 图标,Xposed 框架就宣告安装完成了。

安装本地化工具箱

MIUI EU 本地化模块中下载工具箱的 apk 文件,随后安装。

安装完成后 LSPosed 应该会提示模块尚未激活,转到 LSPosed 处打开模块开关,并检查作用域,推荐应用需全部勾选,之后重启即可。

安装模块

刷好了 Magisk 和 Xposed 框架之后,就可以安装本地化模块了,下载 Koizumi 大佬的 MIUI EU 本地化模块,在 Magisk 中选择模块-从本地安装,选择准备好的 zip 文件,根据提示一步步操作即可。

安装完成后,别忘了重启。

至此,本地化作业已经全部完成。

一些其他优化

Magisk 和 LSPosed 的玩法可不止实现 MIUI EU 本地化那么简单,有大量有趣实用的模块等着阁下去探索,这方面在下就不过多赘述了。

尽管 MIUI EU 受到欧盟一般数据保护条例的规制,在系统层面上不需费心,可是道高一尺魔高一丈,对于长期游离于 Google Play 商店规范之外的国产应用环境来说,就不见得能够高枕无忧了。在下采取了一种激进的办法——使用炼妖壶将之彻底隔离。

炼妖壶,基于安卓原生的 Android Work Profile,可以让应用读取独立的系统信息,包括联系人、通话记录等,实现用户手机信息隔离,目前也已经开源。尽管与虚拟机仍有差别,但是对付国产应用,在下认为还是够了。

许多国产 ROM 可能阉割了 Android Work Profile,在使用炼妖壶时会无法配置,但是 MIUI EU 保留了这一功能,因而系统层面上没有阻碍。另外,之前 Magisk 已经帮在下获取了 ROOT 权限,可以直接使用炼妖壶的 ROOT 模式。

Android Work Profile 可以随时开启与停止,在处于停止状态时,处于工作资料中的应用无法实现任何操作,这相当于冻结应用所有的后台行为。

使用炼妖壶隔绝国产应用之后,由于 Android Work Profile 完全隔离了主空间的数据,在下目前唯一的痛点就是主空间的文件读取问题,例如微信没法读取手机截屏,主空间的图片也无法分享到微信。这造成了一些使用上的麻烦,目前在下的方案是通过 CX 文件管理器的 FTP 服务器功能实现两个不同空间文件的传输。但是在下认为牺牲一些便利,换取一些自由与心安依然是值得的。

系统更新

MIUI EU 在系统升级 app 中提供了系统更新渠道,可以获取 ROM 的更新信息,届时可移步 MIUI EU 论坛下载。且升级自 MIUI EU 系统时,则支持通过 OTA 更新系统,这样在刷新系统版本的时候,手机的既有数据也会得到保留。

在选择最新系统 ROM 时,需要注意该 ROM 是线刷包还是卡刷包,即通过 Fastboot 刷入还是通过 Recovery 方式刷入,切勿将线刷包当作卡刷包使用。

后话

在下从春节前腊月二十八折腾完整套流程,使用到现在,也有快半个月了。目前看来,使用体验流畅,没有遇到恶性 BUG,耗电什么也比较正常。MIUI EU 去除了所有的系统广告,并且没有预装谷歌全家桶,仅预装了谷歌框架,非常纯净。再加上通过本地化模块,可以依照自己的意愿恢复一些国内版的功能,刷 MIUI EU 的痛点大大减少。可以说,这样一个 MIUI 系统,使用起来是相当上头的。

对于更新的问题,MIUI EU 可以通过 OTA 更新,这样的话就算更新系统也不需重新刷机。值得一提的是小米欧洲社区相当优秀,MIUI EU 做到了更新速度与国内版平行,测试版甚至比国内提前发布还快。

最后,向 Xiaomi European Community、TWRP 团队、Koizumi 大佬、John Wu 大佬、LSPosed 团队以及所有为我们铺平搞机之路的大神们致以崇高的敬意!