【硬件折腾】小米MIX 2S安装Windows11 ARM版和安卓双系统

您所在的位置:网站首页 小米手机是arm还是x86 【硬件折腾】小米MIX 2S安装Windows11 ARM版和安卓双系统

【硬件折腾】小米MIX 2S安装Windows11 ARM版和安卓双系统

2024-07-10 16:47| 来源: 网络整理| 查看: 265

经过一番折腾后,UP主终于成功给一台小米Mix 2s成功装好了Windows11 ARM版和安卓双系统,虽然这方面的教程已经很多了,我自己在折腾的过程中也遇到了一些麻烦,但是最终还是解决了并整理了操作一下流程,打算把它写成一篇专栏。

多图+低创预警,这篇专栏因为比较乱,所以也不能称之为教程了(我想骂我自己都搞不懂还写什么教程),算是我自己的折腾记录,其中可能有一些讲的不好地方以及错误的观点,不过也希望可以给大家带来一点点帮助,有什么问题和错误的地方欢迎大佬们指出,谢谢。

在折腾过程开始之前,先回答一些大家可能想问的问题。

什么是ARM处理器,什么是x86处理器?

ARM处理器是基于RISC精简指令集的微处理器,例如高通的骁龙处理器,苹果的A系列和M系列的处理器就是基于ARM架构的处理器,通常运用在手机等低功耗的便携移动设备上,例如我们耳祥能熟的游戏掌机PSV使用的是ARM架构的Cortex-A9处理器,GBA使用了ARM7芯片,NDS使用了ARM7和ARM9芯片,3DS使用了ARM9和ARM11的芯片,Switch使用的Tegra X1同样也是基于ARM架构的处理器。

x86处理器则是基于CISC复杂指令集设计的处理器,例如英特尔和AMD的处理器,就是基于x86和x64的处理器,通常运用在高性能笔记本、台式机、服务器、超级计算机等大型高性能的设备上,例如我们组装台式机和购买笔记本通常会选择英特尔酷睿或AMD的锐龙处理器,而高性能服务器的CPU通常采用英特尔的Xeon或AMD的EPYC处理器。

Windows系统和软件通常情况下不是只能在x86处理器的设备上运行的吗?能运行在ARM处理器上又是怎么回事呢?

虽然Windows系统给人的印象通常情况下只能在x86的设备上才能安装,给ARM处理器的设备安装Windows系统在早期是几乎也是不可能的,可是自从Win10开始,微软除了给Win10推出了32位和64位版以外,还推出了ARM版,ARM版的Win10就可以运行在ARM处理器上,并可以支持模拟运行一些32位的x86程序,例如Surface Pro X采用的就不是英特尔处理器,而是微软与高通合作打造的基于ARM架构的SQ1/SQ2处理器,它运行的就是arm版的Windows,虽然对大型软件的支持较差,但是它的功耗更低,续航就比同期的Pro7长不少。

微软Surface Pro X官网介绍

那么既然有arm版的Windows可以安装在非x86的设备上,那是不是所有手机都可以刷上呢?

既然已经有使用高通处理器的设备可以运行Windows的ARM版,这样听上去给使用了高通处理器的手机装个Windows的ARM版的话,似乎也不是什么难事,但实际上还是有些麻烦的,目前来说只有骁龙845处理器的手机兼容性较好,因为高通之前出过骁龙850的电脑,它的架构和845接近,845的手机现在也有大佬负责编写驱动,所以就能支持。

虽然855的手机可能也可以支持,但目前还是缺少驱动,我们都知道硬件如果没有对应的驱动的话,就无法正常使用。

而且除了对手机的处理器有要求以外,对机型也有一定要求,有些机型目前还没有适配相关驱动,使用过程中可能还是会遇到一些麻烦,例如触屏和蓝牙等很多功能就无法使用,某些设备虽然可以支持,但可能也会出现对应硬件工作不正常的情况,这点需要注意。

下面是目前骁龙845的手机安装arm版的Windows的设备支持状态,想要关心最新进展的话可以访问官方网站查看:https://renegade-project.org/#/zh/windows/state-frame.html

而且除了需要解决硬件驱动的问题以外,给手机装arm版的Windows还有一个问题,就是启动固件。

前一篇专栏我们就讲到了安卓手机在进入系统前的引导加载程序是BootLoader,它是进入安卓系统前所需要执行的第一个程序,负责完成相关硬件的初始化,将操作系统映像或固化的嵌入式应用程序装载到内存中,然后再跳转到操作系统所在的空间,接着启动操作系统运行。

而电脑在启动的过程中,需要执行的第一个程序就是我们DIY玩家熟知的BIOS,BIOS的主要功能则是为计算机提供最底层,最直接的硬件设置和控制,它保存着计算机最重要的基本输入输出的程序,开机后自检程序和系统自启动程序,提供操作系统与硬件之间的接口,可以从CMOS设置中读写关于这方面设置的具体信息。

BIOS在启动电脑的过程中也分为三个阶段,第一个阶段是硬件自检,第二个阶段是初始化设置,第三个阶段是引导程序,当引导程序找到引导记录以后,就会把电脑的控制权转给引导记录,再由引导记录做为“牵头人”,启动硬盘或者其他存储设备上的操作系统,在电脑成功启动以后,BIOS的任务才算是完成。后期也出现了UEFI(统一可扩展固件接口)作为传统BIOS的替代方案。

对BootLoader和BIOS有了一点点了解后,我们就能理解,无论是手机的BootLoader还是电脑的BIOS,它们都是做为手机和电脑软件和硬件之间的对接层,如果搞不定这个的话,那么手机也是无法启动Windows系统的。

所以我们需要在手机上启动Windows系统的话,就需要大佬们的帮助了,他们为845平台的各种机型定制了不同的UEFI引导镜像。

在折腾流程开始前同样再次声明,给手机刷机有风险,操作不当可能会导致手机变砖和失去手机厂商的保修(不过845的手机也是三年前的东西了,基本上也过保了),但还是推荐使用闲置和不常用的手机来进行操作,如果你想折腾的那部手机还是正在使用的主力机,而刷机经验不足的话,则不推荐折腾,因操作失误导致手机变砖本人概不负任何责任,目前我也无法提供救砖方面的技术支持。

虽然刚开始我手上有一台闲置的小米8可以折腾这个,不过那台手机在折腾过程中出了一些意外变砖了,我在分区过程中不小心把命令提示符关闭了,然后就喜提了米8的砖机一台,那台手机变砖后虽然可以支持FastBoot和进入TWRP,但是无法用一般的刷机工具恢复,无法挂载内部存储,尽管我尝试了很多方法来进行恢复,但一直都没有成功,只有等后面静下心来以后再找那台机器的救砖方案了,也就是高通9008模式下免授权的刷机方法,所以刷机过程中大家一定要注意。

不过失败乃成功之母,做为一个这方面的爱好者,遇上困难怎么能就这样放弃呢?

所以我又再次搞来了一台小米的Mix 2s来进行折腾,这台机器的配置也比我那台小米8更好一些,运行内存是8G,内部存储256G,屏幕是全面屏也更符合我个人的审美,原本那台小米8的配置是6+64G,这个大小感觉装了Win11和一些比较大的软件以后也没什么空间装安卓了,而这台机器的内部存储更大些,我就打算装个安卓和Win11 ARM版的双系统,安卓系统用来处理工作上的事务和拿来跑安卓应用,ARM版的Win11则拿来娱乐和学习折腾用。

把想说的说完了以后,就开始折腾吧,折腾前再次强调刷机有风险,操作需谨慎。

在折腾前我们需要准备以下工具

Dism++(用于PE过程中释放镜像和添加驱动)

下载地址:http://www.chuyu.me/zh-Hans/index.html

SDM845(高通845平台的UEFI引导镜像)

下载地址:https://github.com/edk2-porting/edk2-sdm845/releases

SDM845在发布页选择对应的机型下载即可,例如小米8的手机下载dipper那个,Mix 2s下载polaris那个即可。

想要最新版本可以使用git clone这个项目,然后在Linux系统或者安装了Docker的Windows下,使用docker-compose run edk2 ./build.sh -d再加上对应设备的名称的命令即可编译。

WOA-Drivers(手机在Windows系统中的驱动程序)

下载地址:https://github.com/edk2-porting/WOA-Drivers

我们可以直接下载成压缩包,或者使用git clone这个项目,等所有文件下载下来以后,使用extract.sh加上对应设备的名称的命令,即可将该设备对应的驱动复制出来。

Mix 2s输入extract.sh polaris即可,小米8的话则是extract.sh dipper,然后目录下就会多出一个名称为output的文件夹,这个文件夹里就是对应这款机型Windows下的驱动。

Win11的ARM版镜像

可以在UUP上下载,下载完那些的文件解压后,运行那个批处理,等待一段时间即可生成对应的镜像。

UUP地址:https://uupdump.net/

可以运行在Arm平台上的PE系统

注意要能支持运行在ARM平台上的PE系统才行,因为等会是需要手机进入这个PE系统使用Dism++来装系统和驱动的。

我使用的是其他教程中提供的Win10 20H2 Arm64的PE系统,这个因为找不到官方的下载地址,我就放在工具整合里面了,有能力的用户当然也可以自己做一个PE系统。

parted分区工具

用于给手机内部存储分区,这个暂时还找不到官方的下载地址,我会放在整合好的下载包里。

devcfg文件

小米Mix 2s支持触屏需要使用fastboot刷写devcfg分区,后面一定要刷,不然在启动系统的过程中会导致蓝屏。

下载地址:http://files.renegade-project.org/devcfg-polaris_FixTS.img

对应你手机的TWRP(我们需要在里面执行一些终端命令)

小米Mix 2s的TWRP镜像下载地址:https://twrp.me/xiaomi/xiaomimimix2s.html

工具整合下载

链接:https://pan.baidu.com/s/1MArKFSncmwARW3oiG1gAGg 

提取码:part

解锁手机BL和进入TWRP

上篇专栏我已经详细演示了米8解锁BL和进入TWRP的流程,本专栏中这部分就只做简单的演示,安装小米手机解锁工具所需要的驱动,ADB和TWRP的详细流程参考这篇专栏即可。

Mix 2s也是同样的折腾方法,首先我们还是进入开发者模式里面查看设备解锁状态,没有解锁的话,就需要将这台手机绑定账号和设备。

绑定完账号后将手机关机,按住开机键和音量调低的键,进入BootLoader模式。 

手机进入BootLoader模式后,将数据线插上,使用小米官方的解锁工具将手机解锁。

手机解锁后我们再刷入Mix 2s用的TWRP,方法和之前提到的一样,确保手机进入了FastBoot模式后,命令提示符中先输入fastboot devices查看设备是否存在,然后将对应的TWRP镜像刷入手机Recovery分区,再启动TWRP。

另外如果你的手机设置了锁屏密码后,进入TWRP后会出现如下输入密码的界面,这个密码就是你在安卓系统中设置的锁屏密码,不输入的话虽然也能进入TWRP的主界面,但DATA分区会是加密状态,这个可能也会影响我们折腾的,所以要输入正确密码把它解锁,或者回到安卓系统中将锁屏密码取消即可。

使用parted对手机内部存储进行分区

手机这边进入TWRP,电脑也可以访问手机的内部存储以后,我们就要来对手机内部存储来进行分区了,接下来的折腾流程我也会比前面说的的更详细,因为解锁BL和进入TWRP的详细流程我在前面那篇专栏已经说过了,所以这篇关于那方面的就简单说说,后面的才是重头戏。

注意分区这一步非常关键,折腾失败的话可能会导致你的手机变砖。

注意分区这一步非常关键,折腾失败的话可能会导致你的手机变砖。

注意分区这一步非常关键,折腾失败的话可能会导致你的手机变砖。

重要的事情说三遍,之前我的米8就是在分区的时候因操作失误导致变砖的。

首先将parted文件解压放到手机内部存储里,然后打开命令提示符,输入adb shell,进入安卓的调试模式。

接着分别输入下面这几行命令,这几段命令的意思是将parted文件复制到sbin目录下,将parted文件赋予755权限,取消挂载手机数据和sd卡的目录,打开parted。

cp /sdcard/parted /sbin/

chmod 755 /sbin/parted

umount /data

umount /sdcard

parted /dev/block/sda

出现(parted)以后输入P,查看手机的分区信息。

这样就看出了这部手机的内部存储有21个分区(我的Mix 2s是这样,其他手机可能情况各不相同),最后那个251G的分区就是userdata的分区号,也就是手机的内部存储空间,我们要将它格式化,然后建立新的分区。

在分区前我们可以找找规律和搞清楚parted怎么使用,搞懂以后我们就知道怎么分了,这部分使用说明请仔细阅读,避免因分区问题导致手机变砖。

首先是关于分区的规律,我们仔细观察,每个分区的大小其实是分区大小的结束部分减去分区大小的开始部分得到的。

例如第一个分区16.4kb就是41减去24.6的结果,第八个分区2079kb,同样也是4194减去2097的结果。

而parted分区工具使用方法的话,我来介绍几个parted在交互模式下常用的命令。

mkpart 创建一个分区

name 给指定的分区命名

rm 删除分区

分区命令的使用方法就是mkpart+分区名称+文件系统类型+分区大小的开始部分+分区大小的结束部分。

注意分区大小的开始部分和分区大小的结束部分不同的手机需要调整,情况不同的情况下不能直接复制粘贴别人的分区命令。

因为我们要安装Windows系统,而且是使用PE安装,因此要给这个分出对应UEFI,PE,Windows的分区。

以这台手机为例,userdata分区大小的开始部分是1611MB,我们想要创建esp分区的话,就可以输入mkpart esp fat32 1611MB 2000MB,这样就可以得到一个2000-1611=389MB大小的esp分区。

接着创建PE分区也是同理,我们想创建一个3000MB大小的PE分区的话,则需要输入mkpart pe fat32 2000MB 5000MB

创建Windows分区的话,因为Windows分区最好还是使用NTFS格式的文件系统,所以之前命令的fat32我们要改成ntfs。

我这台手机是256G的内部存储,我计划装安卓和Win11 ARM双系统,想给Windows分配150G左右的话,那么就输入mkpart win ntfs 5000MB 155GB

最后就要分配安卓的分区了,Windows这边我分配了150G,剩下的就全部留给安卓了,安卓那个分区的文件系统是ext4的,所以我们也要把那部分命令改成ext4。

对应的命令则是mkpart userdata ext4 155GB 251GB

对怎么分区有个大致的了解后,我们就可以开始分区了,注意这里非常非常关键,出现分区分错了的话,就重新执行rm命令来重新创建分区,在没有完成分区的情况下,千万不能关闭命令提示符以及将手机关机,或者是将数据线断开,不然手机可能会变砖,如果变砖的话,可能就需要进入高通9008模式寻找对应的方法来恢复设备了。

然后我们在命令提示符中输入rm 21,将第21个分区格式化。

接着分别输入上面提到的那几段命令,原理我已经讲解清楚了,不同存储空间和不同类型的手机千万不能直接复制粘贴,等搞清楚了以后再输入对应的分区命令,不然胡乱分区很容易导致手机变砖。

mkpart esp fat32 1611MB 2000MB

mkpart pe fat32 2000MB 5000MB

mkpart win ntfs 5000MB 155GB

mkpart userdata ext4 155GB 251GB

分区操作完成后,我们再输入set 21 esp on,将第21个分区设置为ESP分区,我的情况是这样,不同机型的手机也需要调整。

最后我们输入P查看分区信息,可以看出Windows分了150G,安卓留了96G(其实对于我这种安卓应用装的少,照片视频经常转移的来说64G也够了)

分区完成后手机端重启TWRP,重启选项中点击Recovery。

格式化新的分区,备份安卓的Boot

重新进入TWRP以后,我们再对刚才分出来的新分区进行格式化,命令提示符中重新输入adb shell,重新进入ADB的调试模式,分别输入以下命令:

mkfs.fat -F32 -s1 /dev/block/by-name/pe

mkfs.fat -F32 -s1 /dev/block/by-name/esp

mkfs.ntfs -f /dev/block/by-name/win

mke2fs -t ext4 /dev/block/by-name/userdata

其中mkfs命令是make file system的缩写,通常用于管理Linux的文件系统,最后那段命令我输错了,重新输一下就可以了。

格式化完成后再重启至TWRP,电脑这边我们就可以看出留给手机内部存储的空间变了,其他的空间都分配给Windows了。

然后我们再进入安卓系统,再关机进入TWRP,备份安卓的boot,因为我们是要装双系统嘛,手机的boot分区后面需要刷入为845平台定制的UEFI引导镜像,所以我们就要备份安卓的boot信息,到后面切换系统要用到。

安卓的Boot备份完成后,手机内部存储路径TWRP文件夹的BACKUPS目录下就会出现这样一个以时间日期命名的文件夹,这个就是刚刚备份的安卓Boot信息,我们可以把这个文件夹重命名为其他名字,方便后面容易管理和识别。

将PE文件复制到手机内部存储的PE分区

安卓的Boot备份完成后,我们再找一个U盘(最好是带Type-C接口可以直接插在手机上的)将Win11的ARM版镜像,PE系统,Dism++,WOA-Drivers(注意是已经整合出来的驱动而不是那个项目下载下来的文件)复制到U盘中。

U盘里的文件复制完成后,手机端我们进入TWRP,插上U盘,TWRP中挂载选项中勾选外接的U盘,在高级选项中打开终端。

终端打开后,我们先要挂载PE分区到mnt,输入mount /dev/block/by-name/pe /mnt即可。

mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来。

/mnt的命令是将此目录作为挂载点使用。

PE分区挂载到mnt后,我们还需要将U盘内的PE文件复制到PE分区

那么就需要输入cp -r /usb_otg/20h2pe_new/* /mnt

其中cp在Linux里是复制文件的命令,但只有cp的命令就只复制文件,不复制文件夹,因此要加上-r的命令。

usb_otg则是U盘的目录名,不同U盘不同手机可能会有差别(例如有些是usbstorage)大家可以根据自己情况来进行修改,之前我搞错了,还以为U盘的目录名是挂载里面的USB-CTG,后面在文件管理里面才知道U盘的目录名为usb_otg,大家不确定的话可以先去TWRP文件管理里面确定一下U盘的目录名。

20h2pe_new则是PE的文件夹名称,如果你之前重命名了那个文件夹的话,那么这里对应的文件夹名称也需要调整。

文件复制完成后,我们还可以输入ls /mnt来查看文件是否复制成功,ls是Linux中常用的查看文件命令。

这些就对应PE文件下的三个文件夹和efi文件。

PE复制完成后,我们关闭手机拔下U盘,按下开机键和音量-键进入BootLoad,也就是FastBoot这里,到这里我们插回数据线与电脑连接。

再将之前的845平台UEFI引导镜像,还有小米Mix 2s支持触屏需要的devcfg文件复制到一个方便命令提示符转到的目录里,我还是放在D盘。

然后打开命令提示符,输入下面这几段命令,这几段命令分别代表查看fastboot设备是否存在,刷入devcfg分区(修复Mix2s触屏问题,其他手机不需要,Mix2s一定要刷,不然会导致蓝屏)将UEFI引导镜像刷入启动内核(刷之前把安卓的boot备份好,后面Windows系统装好后也需要重启几次),启动UEFI引导镜像。

fastboot devices

fastboot flash devcfg_ab D:\devcfg-polaris_FixTS.img

fastboot flash boot D:\boot-polaris.img

fastboot boot D:\boot-polaris.img

然后手机端就会出现这样的界面,在手机上看到了电脑的命令提示符,是不是有点激动呢?

PE装载镜像,安装驱动,禁用驱动程序签名

这时候我们就需要像操作电脑一样来操作手机了,拔下数据线,找一个扩展坞,接上键盘鼠标U盘来进行操作。

然后在刚才的命令提示符中分别输入以下命令。

diskpart

select disk 0

list part

select part 21

assign letter=y

exit

这些命令的意思分别是打开diskpart,选中磁盘0,查看分区列表,选择第21个分区,将第21个分区分配驱动器号Y(相当于是将第21个分区挂载为Y盘),关闭diskpart。

这里大家可能有疑问,为什么要将第21个分区挂载Y盘?原因是我们后面装载了镜像和安装了驱动以后,需要通过输入一段命令来禁用驱动程序签名,不关闭驱动程序签名的话,后面进入装好的系统就会出现蓝屏的情况,如图所示。

将第21个分区挂载Y盘以后,打开Dism++的ARM64版,按下快捷键Ctrl+N选择Win11镜像,将镜像释放到D盘,并添加引导。

注意那个命令提示符的控制台不要关闭,关闭了就会导致关机。

等待镜像释放完成后,Dism++这边我们打开会话,左侧选择驱动管理,点击添加驱动,选择之前整合好的驱动目录,安装那些驱动。

驱动安装完成后,我们在继续在刚才的命令提示符中输入以下两段命令,关闭驱动程序签名,不然后面安装的系统需要验证驱动程序签名的话,加载系统的时候可能会出现蓝屏的问题。

bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} testsigning on

bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} nointegritychecks on

关闭驱动程序签名后,我们就可以退出PE重启手机了,也可以在命令提示符里输入shutdown -r -t 0的命令来重启手机。

然后重启后就可以进入Windows了,我个人也是折腾了很久,终于成功了。

进入Windows系统以后设置完该设置的东西以后,我们再进入TWRP,将Windows的Boot备份出来,电脑端将那个备份出来的文件夹重命名为Windows11。、

这样我们就有两个系统的Boot信息,需要启动什么系统的话,就进入TWRP将之前的备份恢复到Boot分区即可。

不过有时候启动安卓再重启以后,Recovery分区又会还原成小米官方版的,这就比较麻烦,所以我换了一种思路,将TWRP刷入手机的boot分区,Recovery分区则用来刷入安卓或者Windows的boot信息,开机进入TWRP后,就可以通过将对应镜像刷入Recovery,来启动对应的操作系统。

安卓的boot镜像我们可以从官方提供的线刷包里找到,把它和845平台的UEFI引导镜像复制到手机目录下,需要进入什么系统就使用TWRP将其刷入Recovery分区,然后开机按住电源键和音量调高键即可进入对应的系统。

那么这篇专栏就到这里了,后面有时间的话我也会写一篇关于这台手机在ARM版Windows下的体验和一些测试,希望大家喜欢。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3