5-12 EvolutionX 刷入Log
我其实已经有点忘了我刷机的初衷是什么了,聊天记录找不到了,QQ的代码臃肿且缺乏维护导致的。好像是当时吐槽这个myui系统不想用了想刷新系统,然后跟Yuki说了,他帮我找了一个EvolutionX。最开始好像是看到了一个LineageOS的帖子还是什么的,心动了,想刷新系统了。忘了,差不多那么个事吧。XDA的帖子,EvolutionX by omariscal1019。Yuki说他之前给Note 12刷的就这个系统,自定义功能很多的Pixel。那等什么,刷吧。结果等我东西备份完,5月9号那个周五下午,万事俱备的时候,摩托罗拉官网又出了问题。老实等修复。
然后就这么等。其实5-11,周一晚上就有预感说“明天或者后天摩托罗拉官网会恢复的”。3:48 AM UTC+8, 13th May,XDA有人发出帖子,恢复了。赶紧第二天把多出来的数据备份了,刷机。
(R)NaN:准备阶段
设备型号:Motorola X40 / Edge + 2023
设备代号:rtwo
CMI Code: 0x000B(CID Verification)
ro.carrier: retcn(中国零售商)
刷机目标:Myui不好用。臃肿,bug频出。
参考资料:
关键文件:
- ADB Tool: platform-tools
- Motorola USB Driver
- ROM: EvolutionX
- Magisk from Github: Magisk
Ⅰ:解锁Bootloader
一般的步骤是:
1.备份数据
2.打开手机的开发者模式
3.打开OEM调试和USB调试
> OEM调试主要是为了开机之后不用再验证一遍谷歌,不然会很麻烦
4.电脑通过Terminal打开adb.exe
5.在电脑的Terminal输adb fastboot bootloader,进入手机fastboot模式
6.对于摩托罗拉来说,fastboot oem get_unlock_data获取unlock数值,如下:
7.把这五行拼接起来,获得一长串字符串,粘贴到[https://en-us.support.motorola.com/app/utils/welcome?p_next_page=standalone%2Fbootloader%2Funlock-your-device-b]获取解锁码
8.fastboot oem unlock (解锁码),然后这个时候就会解锁BL了。
(bootloader) 3A25656402792213#5A593232474846
(bootloader) 394E4D005854323330312D0000#9EDE
(bootloader) 保护隐私不予公开
(bootloader) 9F197A77974F654A6A99E19333CDD#4
(bootloader) 保护隐私不予公开但是问题就出在这里:
I tried to unlock my XT2301-5(machine code rtwo, CID 0x000B, and ro.carrier retcn) yesterday, and I ran into the same issue. The moto website said, "We are currently experiencing technical issues. You may be unable to register your device, check your warranty, or submit a repair at this time. We apologize for the inconvenience."
While I searched for the information, a post on twitter from 2023/6/17 ([https://x.com/Hikari_Calyx/status/1670045656214573063](https://x.com/Hikari_Calyx/status/1670045656214573063)) said they met the same issue, around the time when #111 was posted here. Using the UK website was available, but en-uk has been merged with en-us so that doesn't work anymore. I found a video tutorial of how to unlock bootloader of motorola, and the website shown in the video does not contain any of the "We are currently...for the inconvenience", and the tutorial guy successed, so I guess it is what it is.
Also, when I submitted a blank form, after returning "Serial Number not found in your identifier, please try again.", it still went for "Verifying Eligibility", and returned "not qualify". en-ca returned "Your input text was not recognized as a valid dataset. Please try again.", doesnt work either, combining the report previously these several days, I believe this could lead to a bigger issue which reveals some (maybe serious) problems with the backend of the Motorola Support website, and I guess we might have to wait until the issue got fixed.
以上是本人鼓捣了半天在XDA有关帖子下的回复。
说实话,查过资料才知道Motorola解锁算是简单的那一档了,只是联想实在是不给力。一开始看Your device does not qualify for unlocking bootloader的时候,心凉了半截。后来查询X,查询XDA的一些资料,才知道此时*有可能*是联想那边的问题。但是我当时还是不是很确定,所以尝试:
1. 提交空表单
2. 提交一个八竿子打不着的字节串:lianxiangwocaonima
这两个方法都仍然在检测之后返回Not qualify字符串,当时所以我这个时候更有底气怀疑是联想的问题了。此时我需要一个决定性的证据,所以我打开了开发者控制台,提交了自己的那一串(待)解锁码,得到了curl命令,放到Terminal里面确认不是自己的问题。好了,这一下结果连绕过了前端直接访问后端的终端也返回Not qualify,那我彻底死心了,等呗。
等到5月12号,XDA的帖子显示可以解锁了。提交完毕之后,确认数据都备份完了,回车。BL锁解开了,然后接下来就是刷入EvolutionX ROM包。
II:刷入ROM
一开始我还在担心这个包会不会有什么问题,然后看到Official,并且EvolutionX的官网确实有收录。那犹豫什么,刷呗。
First Time Install
(Note: These releases include firmware)
1. Download boot, dtbo, recovery, vendor_boot & rom for your device from [here](https://xdaforums.com/t/rom-unofficial-evolution-x-10-2-android-15.4715512/post-89925535)
2. Reboot to bootloader
3. fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash recovery recovery.img # TWRP在高版本安卓(尤其是做了A/B分区之后的)变砖的风险提高不少,不想用!
fastboot flash vendor_boot vendor_boot.img
fastboot reboot recovery
4. While in recovery, navigate to Factory reset -> Format data/factory reset and confirm to format the device.
5. When done formatting, go back to the main menu and then navigate to Apply update -> Apply from ADB
6. adb sideload rom.zip (replace "rom" with actual filename)
7 (optional). Reboot to recovery (fully) to sideload any add-ons (e.g magisk)
7. Reboot to system & #KeepEvolving
上面是官方的教程。概括下来就是:
0.
adb devices确认手机已经连上电脑,并且已经匹配了adb协议,已经在bootloader界面。并且确认自己下载好boot.img,dtbo.img,recovery.img,vendor_boot.imgrom.zip1.按照以下顺序刷
.img镜像文件:
fastboot flash boot boot.img
fastboot flash dtbo dtbo.img
fastboot flash recovery recovery.img([[#^0da635]])
fastboot flash vendor_boot vendor_boot.img
fastboot reboot recovery
注:官方文件实际上还提供了init_boot.img,但是在论坛链接里面并没有明确给出。实际上是刷入Magisk所需,刷ROM不需要,具体原理并不十分清楚。
2.在进入recovery之后,用音量键控制上下+电源键确认,先后进入Factory reset, Format data/factory reset,然后确定格式化设备。
3.格式化完毕之后(Terminal内会显示),回到recovery主菜单,并且选Apply updateApply from ADB,加载ROM.zip
4.重启即可进入新系统。不建议在这一步就安装面具(尤其是对小白),如果真的要在这里就安装面具,绝对要完全重启到recovery分区,不然有变砖的风险
实际上刷入ROM是最简单的一部分了,真的。教程简单,人家把路都铺好了。然后就是Magisk。由于Bootloader锁被解,设备完整性无法通过谷歌SafetyNet,所以会导致一系列的支付和安全问题。装入Magisk并且root,用来解决指纹支付等等问题。
Play Integrity API
Play Integrity API (前身为 SafetyNet Attestation API)是谷歌提供的一套安全机制,用来帮助应用开发者判断他们的应用是否运行在一个可信的、未被篡改的安卓环境中。
1.设备完整性
- MEET_BASIC_INTEGRITY:设备通过了基本的系统完整性检查,但可能已解锁Bootloader,或者运行的是未认证的系统
- MEET_DEVICE_INTEGRITY:设备运行的是经过谷歌认证的、未修改的安卓系统。Bootloader是锁定的,没有已知的系统完整性漏洞
- (无标签/不满足): 设备可能已被Root,或运行在模拟器上,或有其他篡改迹象。
2.应用真实性(App Recognition - Play Integrity API独有)
- 验证发出请求的应用是否是谷歌Play商店分发的正版应用,且未被篡改。
- (SafetyNet)CTS Profile Match:检查设备的软硬件配置是否与谷歌测试过的、认证过的设备配置文件相符。
- (SafetyNet)Basic Integrity:检查设备是否被篡改过(如Root)。
3.为什么要修复(Play Integrity Fix)
如果设备无法通过这些完整性检查(尤其是 MEETS_DEVICE_INTEGRITY 或旧的 CTS Profile Match),你可能会遇到:
- 银行和支付应用拒绝运行或限制功能:例如 Google Pay/Wallet,以及很多本地银行的App,它们需要高安全环境。
- DRM保护的内容受限: Netflix、Disney+ 等流媒体应用可能无法播放高清内容(例如只能看SD画质),或者完全无法播放。
- 某些游戏无法运行或封号: 一些对作弊敏感的游戏会检查设备完整性。
- Google Play商店显示设备“未认证”: 这可能会导致某些应用无法搜索到或无法安装。
- 其他对安全性要求高的应用无法正常工作。
所以安装Magisk并且配合模块实现更好的用机体验,某种程度上算是刚需。(后来才发现EvolutionX自带一个PIF,但那是后话了)
III:刷入Magisk
在刷入之前先做了点功课,毕竟Magisk涉及到对boot.img(或者init_boot.img)的修补,这两个都是关键的系统镜像文件,谨慎为妙。在[这里](https://xdaforums.com/t/rom-15-0-0_r17-official-evolution-x-10-3-03-16-25.4715512/page-3)以及TheLostOne提供的链接中,我找到了一些关键的信息:
1. TheLostOne
I just installed this ROM, but I don't manage rooting it with Magisk.
I took the boot.img from this ROM and patched it in the Magisk app.
I used the patched .img to flash with various commands:
- fastboot flash boot .\magisk_patched-28100_DCuE8.img
- fastboot flash init_boot .\magisk_patched-28100_DCuE8.img
- fastboot flash --slot=all boot .\magisk_patched-28100_DCuE8.img
- fastboot flash init_boot_a .\magisk_patched-28100_DCuE8.img
- fastboot flash init_boot_b .\magisk_patched-28100_DCuE8.img
I also tried the commands in the fastboot mode (fastboot reboot fastboot).
Ayone managed to root this ROM with Magisk?
TheLostOne无论是用什么方法,刷入修补过后boot.img还init_boot.img都无法成功刷入Magisk,然后他找到了[这条帖子](https://xdaforums.com/t/fyi-the-meaning-of-bootloader-preflash-validation-failed-when-rooting-your-device.4672698/)
2. mxz55
具体的内容就不谈了,关键是在这个post里,mxz55等人提到了一个方法:同时刷boot.imginit_boot.img。
我的具体操作大概是:
进入Fastboot
刷入修补过后boot.img
刷入修补过后的init_boot.img,此时大概率会提示权限不足
fastboot reboot fastboot进入fastbootd模式
在这个模式下刷入修补过后init_boot.img
以防万一,我也再次刷入了修补过后boot.img
这一步我记不大清了,好像是Apply还是Reboot了。
重启过后先进入Moto底层固件的开机界面,然后黑屏。此adb devices仍然能返回,但是手机黑屏,说明应该在尝试配置Magisk的工作。其实当时黑了这么久(虽adb devices显示手机没砖)我还是挺慌的,然后大概等了三分钟左右,手机重新开机,进入EvolutionX,成功刷入了Magisk。之后配置Play Integrity Fix和Shamiko就不再赘述了,这个是最简单的一部分了。
IV:总结与心得
没有。不写这种别扭的东西,唯一的心得就是联想跟惠普坐一桌的东西……呃不对,惠普还是单开一桌吧,联想至少还干点人事。
不过EvolutionX是没白刷,非常流畅,比Myui省电不少,最重要的是自定义功能很多。但是对新版本的QQ兼容性有问题,合理怀疑是没像国产魔改ROM那样给这样的软件开后门,导致尤其是新版QQ这个虚幻4大量申请资源占用,以及一些不合理的资源和权限申请,结果EvoX不给,然后就频繁卡死崩溃。刷回QQ8之后完美结局,但是QQ8又不支持新版本的一些小应用导致消息接收不是很方便,之后看看怎么解决吧。
V:新的问题
5.15
情况不妙,遇到了系统的一些bug。怀疑是盲目跟随那篇教程导致,所有系统应用出现了克隆,并且选择默认程序包的“始终”选项不可用。可能是init_boot.img刷入导致,重新干净刷机中。还好写了log,不至于大半夜断网然后刷机刷一半忘记关键步骤。
5.16
今天早上困得想死,下午去医院看耳朵结果其实没什么事,后来自己事后推测了一下,没休息够导致咽鼓管的问题被放大了。吧,应该,检测结果是我的纯音听力是没问题的,医生说让我好好休息不要太晚睡,这样子。行吧。
这个暂且不谈,说说刷机这事情。
今日新bug:指纹区域亮起,但是不识别。重新干净刷入EvolutionX后,本以为万事大吉,结果在尝试Root并配置相关模块后,指纹功能莫名其妙失灵。期间一度怀疑init_boot.img刷写问题、A/B分区Slot混乱、甚至面部识别与指纹冲突等等奇葩的东西。
最开始刷的时候是跟着XDA的那个教程走的,他的做法是,先在bootloader刷入一次修补过后的boot.img,然后由于bootloader提示刷init_boot.img没有相应的权限,所fastboot reboot fastboot进入fastbootd模式,然后刷入修补过后init_boot.img。但是这里有几个关键的操作和区别:
1.他在刷init_boot.img之后,又在fastbootd模式下刷入了一boot.img
2.他使用的例子是LineageOS系统
但是我当时并没有细看,我单纯跟着他的教程一步步走的,而且当时也是成功进入了系统的。但是当我昨天晚上察看的时候,发现了致命性的bug:选择打开方式的默认应用无法选择“始终“选项,这个选项是灰的,只有”仅此一次“可以选择。这虽然不是什么大毛病,但是很闹心,而且后面查看之后发现,每一个系统应用都被克隆了一份。后来分析原因推测,应该是那刷的第二boot.img所致。
- 系统在启动时,Bootloader需要加载内核 boot.img) 和ramdisk init_boot.img)。如果boot.img的“身份”或“状态”因为在不同模式下的重复刷写而变得模糊不清或存在冲突,Bootloader可能就真的不知道要选哪个爹了。
- 内核和ramdisk是紧密配合工作的。如果内核的状态因为多次刷写而混乱,它在尝试加载和初始化ramdisk时就可能出错。或者,Bootloader传递给内核的关于ramdisk的信息可能是基于一个“错误版本的爹”的理解。这种底层的混乱会直接传递到系统启动的早期阶段。包管理器在扫描和注册应用时,如果底层的内核或ramdisk加载就有问题,它获取到的系统环境信息可能就是错乱的。它可能错误地认为某些应用路径是合法的,或者无法正确识别已安装的应用实例,从而导致“应用克隆”的现象——它看到了多个“声称是同一个应用的影子”。默认应用选择服务同样依赖于一个稳定和一致的系统环境来存储和读取用户偏好。如果系统因为启动混乱而无法正确访问或解析这些设置,或者因为包管理器的混乱而无法准确识别目标应用,“始终”按钮变灰,无法保存选择,就顺理成章了。它也“不知道哪个应用实例是真正的默认应用候选者”。
- Fastbootd模式本身是在一个部分启动的Android环境(用户空间)中运行的。在这个模式下刷写boot.img,其效果和在纯粹的Bootloader模式下刷写可能存在细微但关键的差别。Bootloader可能更信任在“原生环境”(Bootloader模式)下确立的“父子关系”。当你在Fastbootd这个“干爹”环境里又给它指认了一个“爹”(再次刷boot.img),Bootloader在下次冷启动时可能就彻底凌乱了。
我不清楚mxz55是怎么发现这个方法的。同样的,[Magisk中文网的解锁教程](https://magiskcn.com/motorola-init-boot.html)也只提到了修补init_boot.img,但是通过对比图片中的字体可以看出来,~~这个字体是Rookery,说明是Moto的Myui系统是个屁,眼瞎啊你。这个判断方法作废。
但是即便上述的判断方法作废了,也不难推测,这教程的笔者有大概率是在Motorola自己的Myui系统下编写的教程,毕竟这是一篇Magisk教程,该控制的变量理所应当尽量控制。这篇教程里面提到了这个:
>对于发布时搭载 Android 13 的设备,通用 ramdisk 将从 boot 映像中移除,并放置在单独的 init_boot 映像中。
但是没有提到对boot.img,要如何处理。最大的问题可能就出在这里,见下文:
如上,15号晚上 / 16号凌晨在尝试解决“始终”问题和克隆应用问题的时候,因为脏刷无法完全解决问题,所以备份好数据又重新干净刷入了一次原生的EvolutionX,在Slot_a。配置完毕之后,用最新的magisk修补好boot.img和init_boot.img,开始实验。
1. 往slot_a的boot分区刷入修补好的boot.img,重启。Magisk显示没有root,刷回原装的boot.img,控制变量,单独刷入init_boot.img。
2. 这个时候出现致命的问题:把原装的boot.img刷到了slot_b!!无奈之下,只能全盘推翻重来,在fastboot -w之后,在slot_b重新安装了所有必要的镜像文件。
3. 确认slot_b的系统能够正常开机之后,进入fastbootd模式刷入init_boot.img文件。
4. 获得root权限,成功。
但是正如我所说,这是暂时性的成功,今天出现了奇怪的兼容性bug,最严重的就是指纹解锁问题。猜测是原始内核+修补过的Ramdisk导致的问题(即便此时已经获得了root权限),所以以slot_a为基准,先刷入了原始的boot.img和init_boot.img,确认能正常开机之后(并且此时没有root权限,指纹正常),先在bootloader刷入修补过后的boot.img,然后去fastbootd刷入修补过后的init_boot.img,**不要再次在fastbootd刷入boot.img**不然又会出问题。
此时,指纹正常,root也有,核心功能正常,没有奇怪的系统软件克隆行为。但是为了排误和可能性的偶然性成功,重启了。重启过后,指纹失效。猜测是magisk模块的问题,是指纹支付的模块,其原理是识别过指纹之后自动填入密码。然后打开了这几个指纹模块,重启,指纹就失灵了,然后把他们关闭,重启,指纹就好了。所以猜测是这几个指纹支付模块的问题,把它们删了。本以为到这里就结束了,结果一打开面部识别解锁,指纹再次失灵。在尝试:
- 删除所有已录入的面部数据。
- 在设置中关闭面部解锁功能。
- 重启手机。
这一流程之后,指纹仍然失灵。但是当我禁用了所有Magisk模块之后,指纹又神奇的恢复正常了。一个一个排查之后,发现居然是Shamiko的问题,禁用了之后,一切正常。还有一个好玩的现象是,如果系统出现不稳定(比如指纹解锁用不了),因为EvoX这个开机动画是自定义的,那么在开机动画的后面就会出现PIN码填写等界面和开机动画反复来回横跳的glitch,这个也是判断手段之一。
如果说不折腾root可能就没那么多事了,这几天真的是没休息好,把这个折腾完我也快要虚脱了。挺久没打游戏了,大概四天,现在也玩不怎么进去,想学网页三剑客和Kotlin,感觉好有意思。顺便可以试着构建一个个人的网页?注册一个域名也便宜,年费才一百¥左右吧,更何况网页本身可以部署在Github Pages上。
摸这种纯粹的黑箱真的很累人……两点半了,我决定睡觉。睡到明天下午两点半。
5.19Log
是的,孩子们,又坠机了。这次是更麻烦的问题。具体是,打开闪动校园,弹出通知:“检测到应用在root环境下运行”,然后应用闪退。当时我就觉得不对劲,明明已经打开Zygisk DenyList了啊,而且PIF模块的BASIC和DEVICE都通过。排查之后,打开Shamiko,闪动校园不再检测到root,但是指纹解锁失灵(前文已经提到过)。但是这就引入了一个新的困境:Shamiko和指纹解锁不可兼得,而闪动校园又是必备品(校园跑无敌了真是),这怎么办?
为了排查出原因,手机连接adb,抓取logcat。在指纹失效时,logcat中出现
```
UdfpsHelper: onFingerDown | failed to cast the HIDL to V2_3
UdfpsHelper: onFingerUp | failed to cast the HIDL to V2_3
```
这表明系统框架 (特别是屏下指纹辅助程序 UdfpsHelper) 期望与android.hardware.biometrics.fingerprint@2.3 (V2.3) 版本的指纹硬件抽象层 (HAL) 通信,但类型转换失败。
通过 adb shell ps -A | grep -i fingerprint (或 findstr 在Windows CMD) 命令,在多种模块配置下均观察到系统同时运行着两个指纹相关的服务进程:
- android.hardware.biometrics.fingerprint@2.1-goodixservice (例如 PID 2710) - 由指纹传感器供应商 Goodix (汇顶科技) 提供,实现 @2.1 版本接口。
- android.hardware.biometrics.fingerprint@2.3-service.rtwo (例如 PID 2712) - 可能是EvolutionX ROM针对设备 (代号rtwo) 适配的原生指纹服务,实现 @2.3 版本接口。
这个双服务共存的现象成为一个重要的疑点。
在非root shell下,lshal 显示无法获取到指纹服务的注册信息 (cannot be fetched from service manager (null))。通过在adb shell内输入su获得root权限,在root shell下,通过 adb shell ps -A | grep -i fingerprint (或 findstr 在Windows CMD) 命令,在多种模块配置下均观察到系统同时运行着两个指纹相关的服务进程:
- - PID 2712 (@2.3-service.rtwo) 注册了标准的 android.hardware.biometrics.fingerprint 接口的 @2.1, @2.2, @2.3 版本。
- PID 2710 (@2.1-goodixservice) 注册了供应商特定的接口如 com.motorola.hardware.biometric.fingerprint@1.0 和 vendor.goodix.hardware.biometrics.fingerprint@2.1。
这表明两个服务都在 hwservicemanager 中成功注册了它们各自负责的接口。
测试了禁用/卸载指纹支付Magisk模块(用于微信、支付宝等应用)、Shamiko、外部PIF模块 (PlayIntegrityFix by chiteroman) 的各种组合。发现即使卸载了指纹支付模块和Shamiko,指纹问题有时依然存在。当时心都凉了,没办法,只能下楼去拿外卖,边下楼梯边郁闷,这前后耳机还丢了一只, 还阳了(轻度症状),和16号一样的水逆。本来都想放弃了,拿完外卖上来,不甘心,然后突然想起来EvolutionX在"设置 -> System -> Evolution X -> 杂项"自带一个组件欺骗功能,其中就带有PIF。关闭之后,恢复正常。进一步测试确认,以下配置可以稳定运行,指纹解锁、指纹支付均正常,Play Integrity检测通过,“闪动校园”等应用也能通过root检测:
- EvolutionX ROM内置“组件欺骗”(PIF):禁用
- Magisk模块 - PlayIntegrityFix by chiteroman:启用
- Magisk模块 - Shamiko:卸载
- Magisk模块 - [你的指纹支付模块名称]:启用
- Zygisk DenyList (ExcludeList):启用,并将需要隐藏root的应用(如“闪动校园”)加入列表。
在该稳定配置下,ps -A 和 lshal 的输出与之前观察到的双服务运行和注册状态一致,表明双服务共存是当前系统的“正常”状态,关键在于移除干扰它们协调工作的因素。
所以问题的原因在于,EvolutionX毕竟作为一个自定义ROM系统,刷入这个系统就意味着解Bootloader锁,进而导致无法通过谷歌的Play Integrity完整性检测,即便是对于非root用户来说,所以它内置了一个PIF。其修改系统属性的方式可能较为“激进”或存在bug,当与Magisk环境(尤其是其他PIF机制或敏感的HAL服务如指纹)共存时,会产生严重冲突,导致:指纹服务功能异常 (表现为 failed to cast the HIDL to V2_3);同样,即使有DenyList,也可能导致某些应用依然能检测到root(因其造成的系统属性“污染”)。
同样,Shamiko为了实现更深层次的root隐藏和Zygisk注入隐藏,其策略可能“过于激进”。在ROM内置PIF这个主要干扰源存在时,Shamiko可能加剧问题;即使在ROM内置PIF禁用后,Shamiko本身也可能与指纹系统的特定实现(尤其是双服务共存的情况)存在一些不兼容,导致指纹不稳定或失效。而系统同时运行 @2.1-goodixservice 和 @2.3-service.rtwo 是一个特殊情况。虽然在最终稳定配置下它们能正常协调工作,但这种设计本身可能更容易受到外部因素(如错误的系统属性、模块干扰)的影响而出现问题。
现在大概就是,能用就行,别动它。能跑就别动这个bug.jpg
6/2
呃,还是回退了。现在Root处于一个很不稳定的状态,指纹老没法解锁,那我Root的初衷本来就是指纹支付,如果连最基本的指纹解锁都用不了那用个毛啊。还不如稳定点。
8/13
实际上目前发现,不能用Magisk里面安装的PIF。EvoX自己的PIF极有可能是深度绑定在ROM里面的,所以不大会出现冲突或者错误