前言
!> 本文的操作有一定砖机的风险,请谨慎操作,后果自负
x> 请注意提前备份QCN,参考 这篇文章
Mix2S目前可以正常使用的特性有:WiFi,GPU,USB,触屏,充电,电池读数
最新的设备支持状态请前往项目主页查看:链接
硬件准备
-
一台解锁BootLoader,并且刷入TWRP的手机。兼容的设备列表
-
OTG转接线
-
USB键鼠
-
U盘(exFAT或者FAT32格式)
软件获取
parted
i> 用于给手机闪存手动分区
PE系统
i> 用于安装Windows11
Dism++
i> 用于释放Windows11镜像
WOA 驱动包
i> 不打的话无法使用触屏、GPU、USB、WiFi、电池和蓝牙
x> 1.0.2的UEFI能够支持GPU和触屏,但是不再支持蓝牙,有待修复
MIX2S的设备代号是polaris,请根据实际的机型写对应的设备代号。
output
文件夹下就是一会要用到的驱动
Devcfg分区镜像
i> 不刷的话无法使用1.0.1及以后的UEFI进行引导,会报Watchdog错误然后蓝屏
Windows10 Arm64 镜像
i> 由于Win11还在内测阶段,没有镜像发布,所以只能采用UUP的方法生成镜像文件。
i> 脚本分为2个阶段,第一个阶段使用Aria2下载UUP包,第二个阶段解压文件,生成镜像,可能会比较慢,耐心等待,如果下载文件错误报错,请删掉uup文件夹并重新运行脚本。
适用于845的UEFI引导镜像
i> 用于引导Windows启动
edk2-porting/edk2-sdm845/releases
下载的对应设备代号的文件即可,比如Mix2S的代号是polaris
,就下载boot-polaris.img
操作步骤
!> 本文的操作有一定砖机的风险,请谨慎操作,后果自负
准备U盘
U盘内需要存放如下文件:
- Dism++
- WOA驱动包使用脚本解包后的
output
文件夹 - winpe.7z解压后的整个文件夹
- Windows11Arm镜像
i> 建议使用exFat格式,不然可能放不下完整的Windows镜像。
拷贝工具
# 第一个参数是当前电脑上parted文件的路径
adb push parted /sbin/
然后打开ADB Shell,在shell里操作
adb shell
chmod 755 /sbin/parted
取消挂载DATA
在TWRP->挂载 中,取消勾选 Data
然后在ADB Shell中取消挂载ufs:
umount /data
umount /sdcard
命令df -h
可以查看挂载的项目,如果看不到/data
说明取消挂载成功,可以进行下一步操作了。
polaris:/ # df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.7G 288K 2.7G 1% /dev
tmpfs 2.7G 0 2.7G 0% /mnt
tmpfs 2.7G 28K 2.7G 1% /tmp
手动创建PE分区
x> 此步操作会清空UFS中的内容,请提前备份!
输入命令parted /dev/block/sda
,进入parted
的交互命令行。
polaris:/sbin # parted /dev/block/sda
GNU Parted 3.2
Using /dev/block/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
看到命令提示符变成(parted)
,就说明成功了。
命令print
可以查看当前分区表,下面是我的设备的输出,仅供参考。
(parted) print
Model: TOSHIBA THGAF4G9N4LBAIRB (scsi)
Disk /dev/block/sda: 59.1GB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 24.6kB 41.0kB 16.4kB switch
2 41.0kB 73.7kB 32.8kB ssd
3 73.7kB 524kB 451kB bk01
4 524kB 786kB 262kB bk02
5 786kB 1049kB 262kB bk03
6 1049kB 1573kB 524kB keystore
7 1573kB 2097kB 524kB frp
8 2097kB 4194kB 2097kB bk04
9 4194kB 8389kB 4194kB misc
10 8389kB 16.8MB 8389kB logfs
11 16.8MB 33.6MB 16.8MB oops
12 33.6MB 50.3MB 16.8MB devinfo
13 50.3MB 67.1MB 16.8MB bk05
14 67.1MB 134MB 67.1MB ext4 persist
15 134MB 201MB 67.1MB ext4 persistbak
16 201MB 268MB 67.1MB logdump
17 268MB 403MB 134MB minidump
18 403MB 1275MB 872MB ext4 cust
19 1275MB 1342MB 67.1MB recovery
20 1342MB 1611MB 268MB ext4 cache
21 1611MB 59.1GB 57.5GB ext4 userdata
第一列代表分区号,倒数第二列是分区名称,我们需要操作的是userdata
分区,记下它的编号21
。
如果想要保留原来系统的数据,可以使用resizepart
裁剪该分区,如果不打算用安卓了,就直接用rm
命令删除该分区。
我使用第二个方法,输入rm + 分区编号
删除分区(我的是21)。
rm 21
然后创建ESP
和MSR
分区。
最后两个参数是分区的起始位置和结束位置,起始位置填上一个分区的结束位置就行,结束位置根据你想给这个分区多大空间决定。
i> 分区的实际大小 = 结束位置 - 启示位置
一般给ESP分配500MB就够了,给PE分区预留4GB左右即可,剩下的空间用来留给Windows系统和原来的userdata分区。
我的手机内置空间64GB,留了800MB给ESP分区,留了40GB左右给Windows系统,留了4GB左右给PE系统,剩下7GB左右给安卓系统。
#创建820MB大小的esp分区,格式为fat32
mkpart esp fat32 1611MB 2500MB
#创建45GB大小的win分区,格式为NTFS
mkpart win ntfs 2500MB 46GB
#创建4GB大小的pe分区,格式为fat32
mkpart pe fat32 46GB 50GB
#创建7GB大小的userdata分区,格式为ext4
mkpart userdata ext4 50GB 57.5GB
i> 把PE分区创建在WIN分区后面方便装好系统以后回收空间
(parted) print
Model: TOSHIBA THGAF4G9N4LBAIRB (scsi)
Disk /dev/block/sda: 59.1GB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 24.6kB 41.0kB 16.4kB switch
2 41.0kB 73.7kB 32.8kB ssd
3 73.7kB 524kB 451kB bk01
4 524kB 786kB 262kB bk02
5 786kB 1049kB 262kB bk03
6 1049kB 1573kB 524kB keystore
7 1573kB 2097kB 524kB frp
8 2097kB 4194kB 2097kB bk04
9 4194kB 8389kB 4194kB misc
10 8389kB 16.8MB 8389kB logfs
11 16.8MB 33.6MB 16.8MB oops
12 33.6MB 50.3MB 16.8MB devinfo
13 50.3MB 67.1MB 16.8MB bk05
14 67.1MB 134MB 67.1MB ext4 persist
15 134MB 201MB 67.1MB ext4 persistbak
16 201MB 268MB 67.1MB logdump
17 268MB 403MB 134MB minidump
18 403MB 1275MB 872MB ext4 cust
19 1275MB 1342MB 67.1MB recovery
20 1342MB 1611MB 268MB ext4 cache
21 1611MB 2500MB 889MB fat32 esp
22 2500MB 46.0GB 43.5GB ntfs win
23 46.0GB 50.0GB 4000MB fat32 pe
24 50.0GB 57.5GB 7499MB ext4 userdata
然后我们需要给ESP分区添加一个FLAG
#添加esp标记,21是ESP分区的编号
set 21 esp on
再次查看分区列表,输出如下
(parted) print
Model: TOSHIBA THGAF4G9N4LBAIRB (scsi)
Disk /dev/block/sda: 59.1GB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 24.6kB 41.0kB 16.4kB switch
2 41.0kB 73.7kB 32.8kB ssd
3 73.7kB 524kB 451kB bk01
4 524kB 786kB 262kB bk02
5 786kB 1049kB 262kB bk03
6 1049kB 1573kB 524kB keystore
7 1573kB 2097kB 524kB frp
8 2097kB 4194kB 2097kB bk04
9 4194kB 8389kB 4194kB misc
10 8389kB 16.8MB 8389kB logfs
11 16.8MB 33.6MB 16.8MB oops
12 33.6MB 50.3MB 16.8MB devinfo
13 50.3MB 67.1MB 16.8MB bk05
14 67.1MB 134MB 67.1MB ext4 persist
15 134MB 201MB 67.1MB ext4 persistbak
16 201MB 268MB 67.1MB logdump
17 268MB 403MB 134MB minidump
18 403MB 1275MB 872MB ext4 cust
19 1275MB 1342MB 67.1MB recovery
20 1342MB 1611MB 268MB ext4 cache
21 1611MB 2500MB 889MB fat32 esp boot, esp
22 2500MB 46.0GB 43.5GB ntfs win
23 46.0GB 50.0GB 4000MB fat32 pe
24 50.0GB 57.5GB 7499MB ext4 userdata
可以看到Flags列出现了boot, esp
字样。
因为分区改变了,我们需要重启TWRP。
接着进入ADB Shell,手动格式化新分区
#格式化esp分区
mkfs.fat -F32 -s1 /dev/block/by-name/esp
#格式化win分区
mkfs.ntfs -f /dev/block/by-name/win
#格式化pe分区
mkfs.fat -F32 -s1 /dev/block/by-name/pe
#格式化userdata分区
mke2fs -t ext4 /dev/block/by-name/userdata
输出如下
polaris:/ # mkfs.fat -F32 -s1 /dev/block/by-name/esp
mkfs.fat 3.0.28 (2015-05-16)
polaris:/ # mkfs.ntfs -f /dev/block/by-name/win
Cluster size has been automatically set to 4096 bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
polaris:/ # mkfs.fat -F32 -s1 /dev/block/by-name/pe
mkfs.fat 3.0.28 (2015-05-16)
polaris:/ # mke2fs -t ext4 /dev/block/by-name/userdata
mke2fs 1.43.3 (04-Sep-2016)
Discarding device blocks: done
Creating filesystem with 1830912 4k blocks and 457856 inodes
Filesystem UUID: 94797801-e4fd-43a2-966a-7d01da72684f
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
刷入PE
先在ADB Shell里挂载PE分区
#挂载PE分区到/mnt目录下
mount /dev/block/by-name/pe /mnt
把之前下载的winpe.7z
,解压后把文件夹复制到U盘里,用OTG线接到手机上。
然后在TWRP -> 挂载
里勾选USB-OTG
因为没法使用ADB Shell了,所以下面的命令在TWRP的终端里执行(高级 -> 终端命令
)
#拷贝PE系统到PE分区
cp -r /usb_otg/winpe/* /mnt
i> 不同手机、不同TWRP版本下,OTG设备挂载的位置可能有所不同
然后重启进入fastboot(TWRP -> 重启 -> BootLoader)
或者关机后长按电源键
+ 音量-
,也可以进入fastboot
刷写Devcfg分区
首先准备好devcfg映像文件。
!> 刷写Devcfg分区有一定风险,请谨慎操作
手机进入fastboot以后,用数据线连接电脑,然后执行命令。
fastboot flash devcfg_ab .\devcfg-polaris_FixTS.img
fastboot flash devcfg_a .\devcfg-polaris_FixTS.img
fastboot flash devcfg_b .\devcfg-polaris_FixTS.img
>fastboot.exe flash devcfg_ab .\devcfg-polaris_FixTS.img
Sending 'devcfg_ab' (37 KB) OKAY [ 0.016s]
Writing 'devcfg_ab' OKAY [ 0.000s]
Finished. Total time: 0.031s
>fastboot.exe flash devcfg_a .\devcfg-polaris_FixTS.img
Sending 'devcfg_a' (37 KB) OKAY [ 0.000s]
Writing 'devcfg_a' OKAY [ 0.000s]
Finished. Total time: 0.016s
>fastboot.exe flash devcfg_b .\devcfg-polaris_FixTS.img
Sending 'devcfg_b' (37 KB) OKAY [ 0.000s]
Writing 'devcfg_b' OKAY [ 0.000s]
都显示OKEY就代表刷入成功了,然后使用UEFI文件进行系统引导。
#boot镜像名根据实际情况修改
fastboot boot .\boot-polaris.img
>fastboot boot ./boot-polaris.img
Sending 'boot.img' (1488 KB) OKAY [ 0.037s]
Booting OKAY [ 0.067s]
Finished. Total time: 0.113s
看到手机上出现Renegade Project
字样,等待片刻,即可进入PE系统。
在PE系统中安装Windows11
i> 如果此步操作有误,无法引导进Windows或者PE系统,可以挂载esp分区后将EFI文件夹改名,命令参考文末,或者格式化esp分区,也可以重新进入PE了,命令参考上面。
!> 请不要关闭PE系统的控制台,关掉以后会直接关机。
大部分操作需要在控制台中执行,使用OTG转接线接一块键盘操作。
diskpart
先进入diskpart,然后等待命令提示符变成DISKPART>
再进行下一步
#选择磁盘
select disk 0
#查看分区
list part
这里输出的分区信息和parted输出的差不多,我们要找到ESP分区,类型为系统
,我的手机上是第21号。
#选择分区(21根据实际情况修改)
select part 21
#分配驱动器号为Y
assign letter=Y
然后退出diskpart,控制台千万不要关闭
#退出diskpart
exit
然后打开资源管理器,在U盘里打开Dism++
(后缀带Arm64的那个)
左上角文件 -> 释放映像
,如图操作
接下来需要等它完成。
点一下打开会话
,然后左侧选择驱动管理
,右下角添加驱动
驱动文件夹选择U盘内的output
文件夹
如果添加以后出现了驱动(数量可能不一样,没关系),就说明成功了
然后需要禁用驱动签名,在控制台执行命令
bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} testsigning on
bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} nointegritychecks on
显示操作成功完成
,就说明成功了,否则可能命令拼写有问题
然后用命令关机
shutdown -s -t 0
到这里Windows11已经装好了,重新进入Fastboot重新引导应该就能进入WIndows11
如果遇到蓝屏不要怕,关机后重新引导即可
如果卡在Renegade Project
引导屏幕,并且出现报错提示,可能是驱动签名没关,需要重新来过
如果能成功进入系统,但是USB不识别,可能是没有打驱动包,也需要重新来过(也有可能是设备兼容性问题)
x> 在磁盘管理器中可能会看到有1GB左右的空闲空间,请不要对这一块区域做修改,会导致FastBoot分区被清空。
后记, 安装完系统之后重新回到PE的方法
进入安卓系统或者Recovery,然后使用命令挂载esp分区
# 需要使用root权限进行挂载
mount /dev/block/by-name/esp /mnt
cd /mnt
只要把EFI文件夹改个名字,然后重新引导就能重新进入PE系统了
操作完成再把EFI文件夹的名字改回去即可,重命名示例如下
# 把EFI文件夹重命名为E
mv EFI E
# 恢复
mv E EFI
本文链接:https://blog.chrxw.com/archives/2021/07/18/1582.html
转载请保留本文链接,谢谢
30 条评论
博主这么折腾的吖,手机发热问题怎么解决
按照你的文档 咋就没证明白呢
gpu还是挂不上,mix2s,重装了好几遍
解决了吗?我也是这样。看论坛说不要用较新的windows版本。。。
用1.0.3版驱动
千万丈的大厦总要有片奠基石,最初的爱好无可替代。
大佬,请问装完后重新进PE的话只能重新装系统么?
在安卓系统或者REC下挂载ESP分区,把EFI文件夹改个名就能进PE了。
具体操作可以参考文末
吼吼,GPU都出来了,等几天再完善点了重新搞一遍
fastboot boot .\boot-polaris.img 之后就蓝屏了,见链接
https://t.bilibili.com/562102861320172851
多试几次吧。实在不行就从头来过
fastboot boot .\boot-polaris.img之后屏幕上出现press esc in 5 seconds to skip startup.nsh or any other key to vontinue怎么办
应该是引导失败了,可能是PE没弄好。
谢谢
请问以后该怎么进安卓系统呢
看你的boot分区是什么了,如果是原来安卓系统自带的boot分区,直接开机就是安卓
如果用 fastboot flash boot xxx.img 刷掉了boot分区,那么开机就进windows系统了
能教我怎么装?
这个教程是故意让别人蓝屏的吗。。。
parted和PE系统这两个下载不了,第一个下载提示违法,第二个打不开,希望能给新链接或者私发我一份[email protected],万分感谢大佬
按照教程走一定会蓝屏,这个是那个地方出了问题呀,想知道能解答吗
感觉是PE的问题,我重下一个试试
好评,比其他的详细一点 (来自小米8用户的好评)ヾ(´・ ・`。)ノ"
好评,比其他的详细一点 (来自小米8用户的好评)ヾ(´・ ・`。)ノ"
现在MIX2s的USB和触控屏还是不可以吗?wifi摄像头之类的呢?
USB和蓝牙可以用了,其他还是不行。
有了USB,其他的驱动再有就可以直接在win11里装了吧?
小米8的devcfg也要这样刷吗? ab,a,b刷三遍?
USB驱动要在PE里用Dism++提前注入进去,不然进Win11 USB无法工作
我理解是因为没有USB装了win11也没法用所以要提前注入嘛,其他驱动可以等进win11了以后正常装?
Windows并没有内置这些奇奇怪怪的驱动,识别不了。