浅谈小米平板2的启动与双系统切换机制的区别

浅谈小米平板2的启动与双系统切换机制

小米公司于2015年11月推出小米平板2,至今已经5年多,该款平板虽然已可归为老机型,但以高分辨率的屏幕、美观大方的外形、支持双系统的x86架构,以及硬件可魔改升级的特点,至今依然得到大批粉丝的喜爱。

我去年开始与一群爱好者共同研究小米平板2双系统刷机方法,研制的刷机包和配套教程成为网上传播最广、用户最多的的双系统安装工具。在这个过程中,我对小米平板2的启动过程和双系统切换机制有了一定的了解,通过这篇文章进行简单的总结。

我将结合遇到问题、解决问题的过程来讲述,没有什么专业术语。关注我的公众号的朋友们中,有很多是小米平板的用户,你们既然花了这么多时间来刷机,那就再花点儿时间来了解你手中的这台机器吧。


小米平板2采用了目前主流的 UEFI 引导管理机制,具备安全、灵活的特点,也为用户自行定制提供了基础。

一、启动过程

小米平板2加电后完成硬件自检与 BIOS 引导,然后将控制权交给 UEFI 。UEFI 的运行过程可以简单理解为:访问 U盘或硬盘里 Fat32 格式的EFI系统分区(ESP),调用后缀为 .efi 的系统启动文件(OS Loader),通过启动文件加载 MIUI 或 Win10 等操作系统,最后把控制权交给新启动的系统,完成启动过程。

但是平板中可能有很多启动文件,UEFI 怎么知道该调用哪个呢?原来,调用过程遵守“按启动序列中的顺序依次调用启动项”的原则。

平板中有两个全局变量,一个存放所有启动项,一个存放启动顺序,这两个变量共同定义了启动序列。UEFI 获得控制权后会先访问这两个变量,以决定下一步的操作。用户可以修改这两个变量的内容,增加自己的启动项,调整启动顺序,以达到优先调用用户的启动文件,启动用户想要的系统的目的。

但有个问题:如果由于用户失误,设置了无法正常启动的文件,那么每次开机时平板都先调用有问题的启动项,导致系统无法正常进入操作系统,那岂不进入了无法控制的状态,导致所谓的“变砖”?

小米平板2设计者充分考虑了这个情况,内置了另一个机制:只要平板识别到 U盘,就会检查 U盘中是否有 Fat32 格式的分区,如果有,则在这个分区中查找 EFIBootBootx64.efi 文件。如果找到了,就会自动把这个文件添加到启动项中,并把它设置为启动顺序中的第一个,然后启动该启动项。因此,只要 U盘的这个启动文件正常,你就可以以它为入口,进入某个系统,比如PE,获得控制权去修正之前犯下的错误。因为对 U盘的控制权在你的手里,你可以随时重做 U盘,甚至更换 U盘,因此只要你把 U盘做好,你就一定能取回对平板的控制权。

这就是我经常安慰机友的原因:“小米平板2变砖并不容易,只要屏幕能亮,U口没坏,平板就变不了砖”。平板启动失败后一般会不断尝试重启,即使有时刚开机或强行重启时不识读 U盘,也没有关系,等它自动重启(不通过按电源键重启)后,一般都能恢复识读。

二、安全机制

使用 UEFI 的计算机普遍启用了安全启动选项(UEFI Secure Boot),用于避免非授权启动文件的运行。小米平板2也不例外,并且更甚一步,不但启用了安全启动,而且即使用户进入 BIOS 手工把安全启动关闭,一段时间后平板会把它自动打开。

浅谈小米平板2的启动与双系统切换机制

因此,小米平板2的安全启动机制是做得比较严格的,但在保证安全的同时,也降低了用户 DIY 的灵活度。也就有了那个梗:有用户对“游戏尘间”(最早制作小米平板2双系统切换功能的那位高手)吐槽切换操作不方便时,“游戏尘间”建议用户“致电雷军”。

UEFI Secure Boot 的存在,导致只有两种 efi 文件可以成为小米平板2的启动文件:一种是小米公司自己制作的 efi,它可以使用小米平板2最底层的一些机制获得合法运行权,这个文件就是我们在安装 MIUI 后,在 ESP 分区中看到的那个 EFIBootBootx64.efi 文件;另一种就是获得了微软CA认证的文件。因为 Secure Boot 最初是由微软公司推出的,多年来微软利用其自身地位强行推广,已经形成广泛使用的既成事实,目前基本上所有使用 UEFI 的计算机主板都集成了微软的 CA 证书,主流的 Linux(如:Ubuntu、Redhat)等操作系统通过取得微软的证书签名,得以在使用 UEFI 的计算机上合法运行。

目前各大操作系统厂商之所以甘于屈居微软的认证体系之下,一是由于反抗即成事实的代价太大,二是微软用实力和信誉做担保,至少到目前做到了公平。但在极端情况下,比如中美脱钩,微软是否还能保证公平,UEFI 是否会成为中国公司的一个软肋,已经成为国内业界的热门话题。这个留到以后再说。

在小米平板2双系统刷机过程中,共涉及三个启动文件,第一个是前面说到的MIUI 的 Bootx64.efi,第二个是 Win10 的启动文件 Bootmgfw.efi,第三个是 Shimx64.efi。后面这两个属于取得微软证书签名的第二种文件,但 Shimx64.efi 不是操作系统的启动文件,它与 rEFInd 共同为用户提供选择界面,让用户决定下一步启动哪个系统。关于 Shimx64.efi 我会在后面详细讲解。

看到这里,你大概能明白小米平板2的双系统开机切换功能为什么不容易实现了:由于安全启动的存在,导致第三方开发者的选择非常有限,只能在狭窄的缝隙中寻找腾挪空间。

三、选择机制

在小米平板2上安装双系统,实现双系统切换功能,实际就是要给用户以选择权,让用户能自主决定进入哪个系统。我们使用了 rEFInd 提供的选择机制来实现这个目标。

rEFInd 是一个被广泛用于 UEFI 多系统启动场景的解决方案,最大特点是平台无关和操作简便。它最初被“游戏尘间”用于实现小米平板2刷机和双系统切换,我们继承了“游戏尘间”的思路,将其用于目前这版广泛流传的刷机工具和双系统开机切换方案中。

浅谈小米平板2的启动与双系统切换机制

图1

rEFInd 与 Shimx64.efi 相结合,完美地在刷机和开机时给用户提供了美观、易操作的选择界面,并在一定程度上减少了 UEFI Secure Boot 对用户 efi 的限制。

Shimx64.efi 使用了 Secure Boot 的链式认证机制。前面已经说过,Shimx64.efi 已经取得微软CA认证签名,可以在小米平板2开机时合法运行,链式认证机制允许 Shimx64.efi 对 rEFInd 的 grubx64.efi 进行合法性认证,只要认证通过就可以被 Shimx64.efi 调用。grubx64.efi 的主要功能是给用户提供选择菜单(图1),用户选择某一菜单的操作实际也是调用某个 efi 文件,grubx64.efi 对用户选择的 efi 认证通过后授权其运行。通过这种链式授权方式,减少了 UEFI Secure Boot 对 efi 的限制,未直接获得微软认证的软件只要能由这种链式授权认证通过,也将被允许运行,因此简化了认证过程,用户可以使用的 efi 大为增加。

那么什么样的 efi 能通过这种方式获得授权呢?Shimx64.efi 调用 grubx64.efi 时,会对比小米平板2主板中存放的个人证书(注意:是个人证书,不是微软发布的正式证书),如果 grubx64.efi 已经获得该证书的签名,则认证通过予以运行,否则弹出“验证失败,拒绝访问”的报错。

浅谈小米平板2的启动与双系统切换机制

然后要求用户导入 cer 证书,如果用户能导入对应的 cer 证书文件,则允许 grubx64.efi 运行,否则退出。

浅谈小米平板2的启动与双系统切换机制

用户在 grubx64.efi 提供的选择菜单调用的某个 efi 文件,也是通过这种方法进行认证。因此,用户如果能保证 cer 证书正确导入平板,并且除 Bootx64.efi、Bootmgfw.efi 和 Shimx64.efi 这三个文件外的所有其它 efi 都经过该证书签名,就可以在小米平板2上通过这种链式认证方式得以合法运行。

我们制作的刷机包中提供了个人证书,也就是上图中的 Butterfly_of_Amazon.cer,刷机包中的各个 efi 文件也用该证书进行了签名,因此只要按教程把这个证书导入平板,就可以正常使用刷机包和它提供的开机切换功能。

第一次使用刷机包进行刷机时,由于证书尚未导入,所以需要进入 BIOS 手工关闭安全启动选项,等完成证书导入后就可以省略这个步骤了。

证书是存放在主板上的,导入一次永久有效,哪怕将硬盘中所有分区都删除,也不会影响已导入的证书。但重刷 BIOS 会清除证书,因此每次刷完 BIOS 都会出现蓝色窗口让用户重新导入。

四、双系统切换功能的实现

前面讲了小米平板2的启动过程、安全机制和选择机制,有了这些基础,下面说说我们是怎么实现双系统切换功能的。

我们制作的刷机工具提供了两种双系统切换方法:一键切换和开机切换。

1. 一键切换

一键切换的原理相对简单:(1)用户在 MIUI 系统中运行 And2Win,这个 APP 会将 Win10 的 Bootmgfw.efi 改名为 Bootx64.efi,复制到平板的 ESP 分区中替换 MIUI 启动文件 EFIBootBootx64.efi,然后重启平板。平板启动时调用 EFIBootBootx64.efi,而此时这个文件实际是 Bootmgfw.efi,因此实际启动的将是 Win10;(2)由 Win10 切换到 MIUI 系统的过程类似,用户在 Win10 中运行 Android 快捷方式,它将 MIUI 启动文件 Bootx64.efi 复制回 ESP 分区的 EFIBoot 中,替换掉 Bootmgfw.efi,然后重启平板,平板启动还是调用 EFIBootBootx64.efi,而此时这个文件是 MIUI 的启动文件,因此平板将启动 MIUI 系统。

原理详见下图:

浅谈小米平板2的启动与双系统切换机制

2. 开机切换

如果你安装的是开机切换功能,那么每次启动平板时,会出现下图的系统选择菜单:

浅谈小米平板2的启动与双系统切换机制

左边大图标为进入 Win10 系统,右边大图标为进入MIUI 系统。

原理详见下图:

浅谈小米平板2的启动与双系统切换机制

理论这层窗户纸捅破后,其实很简单。我动笔前觉得这篇文章需要写好几天,可写了3500 字后,却发现画完上面两张流程图后就可以收尾了。

实际在刷机包的研发过程中,我和小伙伴们克服了无数的困难,比如:PE 分辨率太高字体太小问题、安装 Win10 经常异常问题、Win10 映像的驱动集成问题、Remix 和 Lineage、RR 的硬盘克隆问题、第三方 REC 刷入 zip升级包问题、安卓系统下如何自动恢复 rEFInd 启动文件问题、个人证书更换问题、BIOS 刷入工具移植问题、Win10 启动序列自动更改问题、开机切换图标用户DIY问题、ESP 序号变化导致一键切换失效问题、开机切换多按一下确认键问题、启动分区过小导致 Win10 引导文件生成失败问题、Win10 启动分区容量不足导致升级失败问题,等等。每一个问题的解决都花费了我们诸多的心血。由这个项目,我深深体会了将理论知识转换为工程成果需要经历多少艰苦的工作,但这些工作却又无法写进文章,否则显得太过琐碎和庞杂。

现在这个刷机包虽然得到这么多用户的喜欢,但我知道远没有达到完美,比如:安装 Win10 时对异常情况的提示和处理还很不完善,存在很多个例情况不能自动处理,初次使用者容易感到困惑,等等。限于精力,只能以后有时间再慢慢完善了。有愿意进一步了解的朋友欢迎加我微信探讨。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 4月 12日 上午10:47
下一篇 2023年 4月 12日 上午10:53

相关推荐

  • 用手机怎么能看电视直播,2022电视直播软件tv版哪个最好用

    回到家里,只想躺在床上,但新出的电视剧只有电视上才能追。 宿舍没有电视,新出的剧集需要买vip,而且第二天才能看。 针对以上痛点,重度懒癌患者的我花时间研究出了3种躺在床上看电视的…

    2023年 3月 23日
  • 荣耀90系列2亿写真相机拍出你的美

    今天为大家介绍一下荣耀90这款荣耀手机年度旗舰新品,这是一款以影像为主打的中端手机,拥有2亿像素写真相机、行业首发3840Hz超高频零风险调光护眼屏、骁龙7Gen1(增强版)处理器…

    2023年 11月 16日
  • 如何注册苹果id账号的呢(如何注册苹果id账号)

    使用苹果手机或电脑时候,很多地方都需要用到苹果id,只有登陆之后,才能正常进入系统,在App Store上下载应用,或下载云端上的数据。 那么,如何注册苹果Id账号呢?可能还有很多…

    2023年 3月 16日
  • 电脑关机的八种方式你知道几种

    电脑的8种关机方式,你会用哪种呢? 你还只会用右键开始菜单选择关机嘛~那你可就out啦 除了传统的关机方式,Win还隐藏着哪些有趣但鲜为人知的关机方式呢?今天小编就带大家盘点一下电…

    2023年 8月 13日
  • 音乐相册怎么制作

    教你3个音乐相册制作的详细方法,操作简单易上手,新手也适用!配上喜欢的音乐,瞬间把我们手机中的照片变成精彩的视频! 适用于:android 一款功能丰富的手机视频剪辑软件,目前仅有…

    2023年 11月 18日
  • 手机充电时为啥会爆炸

    手机充电时爆炸了(受访者 供图) 市民王女士爆料称:我的一台手机在充电的过程中爆炸了,还好没有引发火灾和人员受伤。 王女士住芦淞区山水国际小区,27日19点左右,她和家人在餐厅吃晚…

    2023年 2月 10日
  • 怎么使用手机对路由器进行设置密码

    对于无线网络的需求越来越广泛,无线路由器成了家庭中的必备电器设置。 通常使用电脑对路由器进行设置,那么怎么用手机对路由器进行设置呢? 路由器连接电源开机,使用手机WLAN功能连接该…

    2023年 4月 26日
  • 苹果手机如何更换来电铃声

    哈喽大家好,这里依然是为您简洁播报的《流星有事儿说》,由于苹果手机不像安卓手机那么方便和随意去更换手机铃声,今天就给苹果新用户朋友们讲一下如何更换来电铃声变成自己喜欢的歌曲,好的,…

    2023年 7月 17日
  • 微博评论别人的时候显示手机型号

    近日,@微博管理员发布“IP属地功能升级公告”,宣布全量开放评论展示发评IP属地小尾巴功能,同时上线“个人主页一级页面展示IP属地”功能。官方表示,为减少冒充热点事件当事人、恶意造…

    2023年 8月 3日
  • 在抖音上怎么拉黑某人不让他看到自己的

    我们平时刷抖音,你刷到过认识的人吗?或者你被熟人刷到过吗?如果你不想被熟人看到,你知道怎么办吗?我们在抖音上,如果被熟人刷到你或者你刷到你认识的人,有时会觉得非常尴尬,这时候你就可…

    数码教程 2023年 7月 12日