教你提前用上微软最新的 Windows 10X 系统
haoteby 2025-01-15 13:29 2 浏览
除了 Surface Pro 系列和 Surface Laptop 3,去年 10 月的 微软新品发布会 还发布了两款令人眼前一亮的双屏设备:Surface Duo 与 Surface Neo。其中 Surface Duo 为搭载 Android 操作系统的双屏 Surface「手机」1,早些时候微软已经放出了预览版的 SDK 和模拟机系统,少数派也已经做过相关介绍。
另一款折叠屏设备 Surface Neo 则搭载了一款以 Windows Core OS 为核心的全新操作系统 Windows 10X。就在最近,微软也发布了 Microsoft Emulator 和适用于模拟器的 Windows 10X 的镜像以供开发者使用、开发相关的软件。
和模拟机系统不太一样的是,Windows 10X 的镜像可以像普通 Windows 10 镜像那样安装到实体机上,除了 Surface Go,甚至还有人在 MacBook 上 成功安装。经过一天的折腾(也踩了一天的坑),我也终于把 Windows 10X 成功安装到了自己的设备上,写下踩坑的记录以供想折腾的朋友参考。
注意:安装 Windows 10X 需要有一定基础知识和动手能力,有一定风险。
前期准备
如果你想借助现有的 Windows 电脑(宿主机)向另一台设备(目标机)安装 Windows 10X,两台设备需要分别满足以下条件。
宿主机:
- 安装了 Hyper-V 的 Windows10 系统(推荐 21H1,理论上19H1版本也可以但未实测)
- 一个 32GB 左右的 USB 存储设备(已经安装了 PE 系统而且存在 EFI 分区的也可以使用)
目标机:
- 支持 Hyper-V 的 CPU
- 有 DCH 驱动的显卡(可以使用 Microsoft Store 里的 Intel 显卡控制中心或者 NVIDIA 控制面板)
- 主板有 UEFI 固件(关闭安全启动 Secure Boot)
- 一个大于 128GB 的 SSD(根据理论似乎不需要 128G 也可以但是未实测)
当然,宿主机与目标也可以机是同一台电脑,确保条件满足即可。不过这里并不建议在你的主力设备上安装 Windows 10X,毕竟尝鲜有风险。最好的办法仍然是找一台不怎么用但符合「目标机」条件的设备。
安装步骤
Step 1:获取镜像
借助 这个网站 我们可以下载微软商店中的任意 appx 安装包,这里我们把 Windows 10X 模拟器镜像 的链接粘贴进去并进行下载 appx。
用 7zip 打开刚刚下载的 appx 包,在 content 文件夹里可以看到 Flash.vhdx,这就是我们需要的镜像了,将其解压到需要的路径中,本文以 D:\WCOS 为例。
Step 2:挂载镜像
首先我们通过 PowerShell 挂载刚刚从商店下载到的镜像:
Mount-VHD "D:\WCOS\Flash.vhdx"
然后检查是否有正确挂载:
Get-StoragePool -FriendlyName OSPool
如果显示如下内容则为挂载成功:
FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly Size AllocatedSize
------------ ----------------- ------------ ------------ ---------- ---- -------------
OSPool OK Healthy False False 127.9 GB 21.81 GB
要安装镜像,我们还需要使用 diskpart 为挂载的镜像分配卷标:
diskpart
lis vol
#选择标签为 MainOS 的卷
sel vol 15
#分配一个闲置的盘符(比如M)
assign letter=M
Step 3:添加驱动
为了保证 Windows 10X 能过脱离虚拟机在我们需要的设备上正常运行,我们还需要为其添加一些必要的驱动文件。以显卡驱动为例:
从刚刚挂载的 MainOS 中复制以下文件到 D:\WCOS\Tools,包括:
M:\Windows\Servicing 目录中的
- UpdateApp.exe
- CbsApi.dll
- CbsMsg.dll
M:\Windows\System32 目录中的
- CbsCore.dll
- DrvServicing.dll
- IUSpaces.dll
- IUSpaces_vb.dll (复制 IUSpaces.dll 为副本并重命名)
- UpdateAPI.dll
- cimfs.dll
- cmiadapter.dll
- cmiaisupport.dll
- cmintegrator.dll
- dpx.dll
- drvstore.dll
- msdelta.dll
- mspatcha.dll
- mspatchc.dll
- turbostack.dll
- wcp.dll
- wdscore.dll
以上文件已打包上传至 OneDrive。
随后我们以管理员身份运行 PowerShell 并定位至 Tools 文件夹(cd D:\WCOS\Tools),测试 UpdateApp.exe 是否正常工作:
.\UpdateApp.exe getinstalledpackages
正常工作的话会显示以下内容:
UpdateApp - Update Application for Windows Mobile
[00:00:00] Loaded servicing stack from X:\wcos\tools with session name IUPackageInfoSession_EFIESP
[00:00:00] External storage staging directory is: (null)
[00:00:00] Closing session IUPackageInfoSession_EFIESP
[00:00:00] Loaded servicing stack from X:\wcos\tools with session name IUPackageInfoSession_MainOS
[00:00:00] External storage staging directory is: (null)
[00:00:01] Closing session IUPackageInfoSession_MainOS
164 packages:
Microsoft-OneCore-HyperV-Guest-UpdateOS-Package~31bf3856ad364e35~amd64~en-US~10.0.19563.1000, UpdateOS
Microsoft-OneCore-HyperV-Guest-UpdateOS-Package~31bf3856ad364e35~amd64~~10.0.19563.1000, UpdateOS
Microsoft-OneCore-ServicingStack-UpdateOS-Package~31bf3856ad364e35~amd64~~10.0.19563.1000, updateos
[...]
getinstalledpackages completed successfully
command took 6 seconds
用 Dism++ 导出 Intel 显卡驱动到 D:\WCOS\Drivers\Graphics\Intel 中(Dism++会创建一个子文件夹存放文件,自行移动到上层文件夹中),这时在 D:\WCOS\Drivers\Graphics\Intel 中应该存在一个 iigd.inf 的文件,打开它记下 Provider 和 DriverVer 的值,比如我的是:
Provider=%Intel%
DriverVer=09/25/2019,26.20.100.7262
Provider 提供的是一个变量值,inf 里搜索可得:
Intel = “Intel Corporation”
然后使用我们刚刚获得的 UpdateApp.exe 为 Windows 10X 安装驱动到 bsp 分区:
.\UpdateApp.exe install "DriverPackage|D:\WCOS\DHCUDrivers\Graphics\iigd_dch.inf|Intel_Corporation-iigd_dch.inf~amd64~26.20.100.7262~bsp|0"
这里需要特别注意的是:
- 双引号内的内容中若包含有空格,请用下划线 _ 代替所有空格
- 文件名中也不得出现 - ,请修改文件名
- 有些驱动的 Provider 的值比较奇怪,比如 DW1820A 网卡的 Provider 的值为 BROADCOM, NTamd64.6.1,保留 BROADCOM 即可。
推荐安装的驱动有网卡、显卡和蓝牙,其他的请自行斟酌添加。看到 install complete successfully 的提示才能确保安装成功,若不成功请检查上面的 Provider 和 DriverVer 的值
安装完驱动后用管理员 PowerShell 运行以下命令卸载镜像:
Dismount-VHD "D:\WCOS\Flash.vhdx"
添加完驱动后就可以准备制作启动盘了。
Step 4:制作启动盘
准备以下文件和文件夹到 D:\WCOS\Boot 中为制作启动盘做准备
- 从 Windows 10 19559 AMD64 或者更高版本的镜像中获取 boot 文件夹、EFI 文件夹、sources\boot.wim 文件和 bootmgr.efi 文件
- 从 GPT fdisk 下载 gdisk64.exe
- 从 dd for windows 官网 下载 Windows 版本的 ddrelease64.exe
- 从 GitHub 下载 EFI Shell,重命名为 bootx64.efi,然后移动到 efi\boot 中,并将 efi\boot 中 原有的 bootx64.efi 重命名为 winx64.efi
- 新建一个 startup.nsh 文件,内容为:
dmpstore -d SecureBootPlatformID
fs0:\efi\boot\winx64.efi
fs1:\efi\boot\winx64.efi
fs2:\efi\boot\winx64.efi
fs3:\efi\boot\winx64.efi
fs4:\efi\boot\winx64.efi
fs5:\efi\boot\winx64.efi
fs6:\efi\boot\winx64.efi
fs7:\efi\boot\winx64.efi
fs8:\efi\boot\winx64.efi
fs9:\efi\boot\winx64.efi
fsA:\efi\boot\winx64.efi
这个脚本会从 nvram 中删除 SecureBootPlatformID 这个变量。因为 Windows 10X 会重新在 nvram 中写入安全启动的相关变量。
然后连接 USB 存储设备(这里我们制作的是 U 盘启动盘),管理员运行 PowerShell 执行 diskpart(请确保在以下步骤中选择正确的硬盘,否则您将丢失您的数据):
lis dis
#列出所有硬盘,然后选择 USB 存储设备,我这里是磁盘1
sel dis 1
#清除硬盘
clean
#转换成 gpt 格式
convert gpt
#创建一个 5000MB 的 FAT32 分区作为引导分区,并分配空盘符 Y
create part pri size=5000
format fs=fat32 quick
assign letter=Y
#剩余空间创建为 exFAT 分区作为存储分区,并分配空盘符 Z
create part pri
format fs=exfat quick
assign letter=Z
以上面的分区为例,我们需要把 Step 4 开头准备的文件和文件夹拷贝到 Y 盘中,Flash.vhdx 拷贝到 Z 盘中。
于是你获得了一个启动U盘了,它的目录结构如下:
Y:.
│ startup.nsh
│ ddrelease64.exe
│ gdisk64.exe
│
├─sources
│ boot.wim
│
├─boot
│ │ bcd
│ │ boot.sdi
│ │ bootfix.bin
│ │ bootsect.exe
│ │ etfsboot.com
│ │ memtest.exe
│ │
│ ├─en-us
│ │ bootsect.exe.mui
│ │
│ ├─fonts
│ │ chs_boot.ttf
│ │ cht_boot.ttf
│ │ jpn_boot.ttf
│ │ kor_boot.ttf
│ │ [···]
│ │
│ └─resources
│ bootres.dll
│
└─efi
├─boot
│ winx64.efi
│ bootx64.efi
│
└─microsoft
└─boot
│ bcd
│ cdboot.efi
│ cdboot_noprompt.efi
│ efisys.bin
│ efisys_noprompt.bin
│ memtest.efi
│ winsipolicy.p7b
│
├─fonts
│ chs_boot.ttf
│ cht_boot.ttf
│ jpn_boot.ttf
│ kor_boot.ttf
│ [···]
│
└─resources
bootres.dll
Z:.
Flash.vhdx
以上文件已打包上传至 OneDrive
Step 4:如何安装
在目标主机上从 USB 存储设备启动。开机时疯狂按 Esc 中断 startup.nsh 的执行,在 EFI Shell 中 输入以下命令备份 nvram:
dmpstore -all -s fs0:
#此处的 fs0 可以自由选择分区的,可以通过 fs<number>: 命令切换不同分区,并借助 ls 命令查看硬盘里的目录得知是什么硬盘的什么分区
然后输入 exit 再次重启电脑,这次不中断 startup.nsh 执行放任它自己启动即可进入 Windows 10X 安装环境,按键盘 Shift+F10 启动 cmd(或者和我一样进入自己的 Windows PE 系统运行 cmd),通过以下命令确定刚刚我们准备的工具和 Flash.vhdx 的所在分区(即上面提到的 Y 和 Z 分区,如果是 Windows PE 系统中可以直接打开文件管理器查看文件在哪)。
C:
dir
D:
dir
E:
dir
[···]
例如我的启动引导分区为 E,我的 Flash.vhdx 在 F 分区中,用 diskpart 挂载它:
diskpart
#启动 diskpart
sel vdisk file="F:\Flash.vhdx"
#选择 Flash.vhdx 文件
attach vdisk readonly
#挂载虚拟磁盘为只读
lis dis
#确认是否挂载成功,如果有看到超过物理磁盘的数量则挂载成功
根据启动 cmd 的环境,分为两种情况(我这里为情况 2):
1. 如果是在 Windows 安装环境启动命令行的,则会看到一个 2048MB 的已联机的磁盘,把它的编号然后减去 1 ,然后记下来,比如:
磁盘 ### 状态 大小 可用 Dyn Gpt
-------- ------------- ------- ------- --- ---
磁盘 4 联机 2048 MB 2048 MB *
则记下为磁盘 3。
2. 如果在 Windows PE 系统中会看到一个 128G 的已联机的磁盘,因为这个 vhdx 是 128G 的动态扩展虚拟磁盘文件,记下磁盘编号,比如我的是磁盘 2
3. 在 diskpart 中选中要安装的磁盘并抹除:
sel dis 0
#如上图我要安装的硬盘为磁盘 0,选中它
clean
#抹除
convert mbr
#转换为 mbr,和大佬讨论之后认为目的是彻底地破坏 gpt 分区结构
exit
#退出 diskpart
然后把 Windows 10X 镜像数据写入到物理硬盘中:
E:\ddrelease64.exe if=\\.\physicaldrive2 of=\\.\physicaldrive0 bs=8M --progress
注意:该命令中的 physicaldrive2 和 physicaldrive0 是根据我自己的实际情况(磁盘 2)编写的,请读者自行替换。即将 2 替换为刚刚记下来的挂载的 vhdx 虚拟磁盘的磁盘号;将 0 替换为要安装系统的磁盘号,笔记本单硬盘的状况下一把就是 physicaldrive0 了。
例如,情况 1 中的例子是磁盘 3,此处则应该将 physicaldrive2 替换成 physicaldrive3 ,下文中所用的磁盘号均使用我实际情况中的磁盘号,即 0 和 2,也请读者自行同步替换。
另外,一定要加上 --progress 这个参数,不然会等得很着急。去休息一下,等待它达到 131072M 即可,出现错误 27 直接无视,已经写入成功了。
接着我们运行以下命令:
E:\gdisk64.exe -l \\.\physicaldrive2
出现如下结果然后拍照截图记下来:
[···]
Number Start (sector) End (sector) Size Code Name
1 512 8703 32.0 MiB EF00 BS_EFIESP
2 8704 33554426 128.0 GiB 4202 OSPool
然后手动重建 gpt 分区,运行以下命令(基本照搬即可):
E:\gdisk64.exe \\.\physicaldrive0
#接受任何警告
x
z
E:\gdisk64.exe \\.\physicaldrive0
#接受任何警告
n
1
4096
69624
EF00
n
2
69632
268435408
4202
c
1
BS_EFIESP
c
2
OSPool
p
#检查与刚刚记下来的数字分区等有没有对应
w
#确认执行即可
这时就可以退出 Windows PE 或者 Windows 安装环境,拔下 USB 存储设备,重启计算机,这时应该可以启动 Windows 10X 了,请尽情探索!
如何恢复启动原来的系统
如果你在一台本身安装了 Windows 10 的设备上安装 Windows 10X,Windows 10X 会在 nvram 中写入安全启动相关的信息,导致正常的 Windows 10 系统无法启动,这时候需要进入 EFI Shell 删除刚刚启动盘中的 startup.nsh 文件,方法如下。
从 U 盘启动进入 EFI Shell, 执行以下命令:
dmpstore -d -all
以上命令会清除 nvram ,可能会导致键盘大写灯无法亮起或者其他未知问题。重启选择正常 Windows 所在的硬盘启动,应该就可以正常启动原来正常的 Windows 10 系统了。
如果无法启动,可以尝试再次清除 nvram,步骤同上;如果出现键盘大写灯无法亮起或者其他未知问题,可以通过 EFI Shell 尝试恢复我们上面备份的 nvram:
dmpstore -all -l fs0:VarDump.txt
此教程送给各位想要折腾体验的朋友。至此这篇教程彻底结束,体验文我也不知道什么时候能写完……
相关推荐
- 简单Labview实操案例
-
有几位条友私信我说Labview是怎么学的,怎么才能学好Labview,今天给大家简单介绍一下,如果想学上位机,Labview是相对来说比较容易上手的,而且开发速度也比较快,但是运行时候比较吃内存,...
- 关于LabVIEW用于仪器测控的自动测试程序的程序框架的选择问题!
-
有很长一段时间没有在公众号平台上输出、总结关于LabVIEW的知识文字内容了!主要是这段时间自己本职工作任务甚为繁重,加上各种家庭事宜的牵绊,耗费了过多的时间和精力,也就无力及时更新了。今天是端午节假...
- LabVIEW编程基础:分割条控件的使用
-
1、分割条控件简介同其它高级编程语言类似,在LabVIEW中分割条控件也是界面设计中常用的一种控件元素,利用分割条控件可以将前面板划分为多个独立的区域,每个区域都是一个单独的窗格,这些窗格具有前面板的...
- csgo一直显示正在连接到csgo网络怎么办?三招帮你解决
-
CSGO是一款射击类的游戏,它的全名叫反恐精英:全球攻势,是一款由VALVE与HiddenPathEntertainment合作开发、ValveSoftware发行的第一人称射击游戏,相信很...
- cs1.6没有bot怎么办
-
Hi~大家好啊,这里是聚合游戏,每天为你分享游戏相关的内容,喜欢的快来关注哟~...
- 《反恐精英:全球攻势2》 漏洞暴露玩家的IP地址
-
#文章首发挑战赛#据报道,在全球知名的电子游戏——CS2(《反恐精英:全球攻势2》)中存在一个HTML注入漏洞,这个漏洞被广泛利用来在游戏中注入图片并获取其他玩家的IP地址。...
- 《电子宠物》《007黄金眼》《雷神之锤》入选世界电子游戏名人堂
-
世界电子游戏名人堂5月8日公布了新的四位入选者《防卫者》《电子宠物》《007黄金眼》和《雷神之锤》,以向改变游戏行业规则的经典游戏致敬。世界电子游戏名人堂每年都会表彰那些具有持久热度并对视频游戏行业或...
- V社修复《反恐精英2》游戏漏洞:可抓取玩家IP地址、发起XSS攻击
-
IT之家12月12日消息,Valve旗下《反恐精英2》游戏被曝光新的安全漏洞,攻击者通过注入恶意代码来抓取玩家的IP地址,并能对同一游戏大厅中的所有玩家发起跨站脚本攻击(XSS)。攻击...
- 粉丝自制《CS》1.6重制版将于2025年登陆Steam
-
基于Valve官方起源引擎SDK,由多位“CSPromod”粉丝项目前开发人员从头构建的《反恐精英》1.6版本重制版《CS:Legacy》日前宣布将于2025年在Steam发布。开发团...
- 知名网游源代码泄漏 ,外挂潮将来?
-
SteamDatabase近日发布消息称Valve旗下游戏《反恐精英:全球攻势》(CS:GO)与《军团要塞2》(TF2)的源代码疑遭泄露。据了解,游戏源代码如果泄露的话,黑客可以更为轻松地开发出外挂,...
- 求斐波那契数列(Fibonacci Numbers)算法居然有9种,你知道几种?
-
ByLongLuo斐波那契数列...
- 三维基因组:Loop结构 差异分析(2)
-
通过聚合峰分析进行可视化既然已经找出了“WT”和“FS”条件之间的差异loop结构,就可以利用聚合峰分析(APA)来直观地展示loop结构调用的质量。APA是一种以Hi-C数据中的中心loop像...
- 用Excel制作动态图表(动态名称法)
-
动态图表也称交互式图表,指图表的内容可以随用户的选择而变化,是图表分析中比较高级的形式。使用动态图表能够突出重点数据,避免被其他不需要的数据干扰,从而提高数据分析效率。一个好的动态图表,可以让人从大量...