也不包袱了,作为应届狗肯定是没有网课可以上了。本文简单记录如何把不支持 RCM Mode 的 Nintendo Switch 引导并运行 Android 系统,从而可以体验大名鼎鼎的至今还没上架 eShop 的我亲爱的原神(?
2020 年 1 月 13日:
米哈游:旗下手游《原神》将登陆 Nintendo Switch
在较老的机型上,热情的技术爱好者们发现并利用了一个硬件设计缺陷可以方便地引导第三方软件,它利用了 NVIDIA Tegra Recovery Mode 来加载自定义二进制。而这也使在 Switch 上运行盗版游戏成为了可能。任天堂老爸肯定是不希望孩子们这样做的,便通过推出修订版主机的方式修补了这个缺陷。
我的主机生产比较晚,这个问题已经被修复过了。这时想要加载第三方固件的唯一现实方法就是去购买并安装一种由单片机和 FPGA 构成的精妙小工具 (modchip),把它焊接在 SoC 的电容上和 eMMC 之间来劫持正常启动流程,从而使 Switch 默认从 SD 卡加载 BootLoader。
这种小工具 (modchip) 市面上在售的有两种类型:
一种是软硬件所有方案闭源且商业化,主要成员因为触犯版权法而落网的 Team-Xecuter 的方案;
一种是硬件闭源但使用了开源固件 Spacecraft-NX 或 HWfly-NX 实现的方案,相对来说更开放,也是我所使用的方案。
因为可用于绕过 DRM 的原因,这芯片的性质有点灰色,选购和安装的过程在此不表。安装后因为这个组件的厚度原因,需要破坏一些屏蔽罩和均热板。它在机身内的情况大概是这样的:
如果安装成功的话应该可以看到一个 SPACECRAFT 小火箭图标动画,上面写着“NO SD”,这就证明了你的 Switch 唯一启动设备已经是 SD 卡了;为了让你的 Switch 看上去不像是变了砖,我们需要一个 BootLoader 来控制 Switch 接下来的 SD 卡引导。
首先,先去下载一个 hekate,它是目前最流行也是 Switchroot 项目所支持的 BootLoader。
然后,找一张大于 32G 的高速存储卡,把刚刚下载到的 hekate release 包全部解压到 SD 卡根目录中,并记得将其中唯一的 bin 文件重命名为 payload.bin
。
此时你的 SD 卡根目录应该有两个东西:bootloader 目录和 payload.bin 文件。
Switchroot 是目前 Nintendo Switch 上唯一可用的 Android 移植项目。
参照下面的指南,我们开始 Android 的安装:
https://wiki.switchroot.org/en/Android/Setup-10
这个教程里没有提到分区管理时那四个分区的作用:
- HOS:Switch 原厂系统使用的空间,FAT 文件系统,Windows 可以直接访问的空间,无需关心;
- emuMMC:克隆内置 eMMC 时使用的空间,主要用于防止 BAN 机和自制软件开发,无需关心;
- Linux:顾名思义,当你安装 Linux 系统时的空间大小划分,无需关心;
- Android:顾名思义,这是本次教程中需要考虑的分区,不要小于 16G,根据需求分配即可。
如果你有对照着教程完成环境配置和文件下载,此时文件目录结构应该是这样的:
一切顺利的话,跟随上面 Switchroot 的教程应该就可以进入 TWRP 了。使用方法和寻常的手机端 TWRP 卡刷无异,刷机包存储在 /external_sd
目录中,以前玩过刷机的应该会比较亲切。刷机完成会自动重启进入系统。
虽然操作过程简单,但想要在 Switch 上引导 Android 确实是一件很复杂的事情。启动过程链式经历了 Spacecraft-NX、hekate、TWRP,最后才启动了 Android;其中每一个环节都可以大做文章,但因资料的透明程度和本人学识都极为有限,实在是很难哪怕大致讲讲他们的工作原理了。