百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

教你提前用上微软最新的 Windows 10X 系统

ztj100 2025-03-12 22:24 48 浏览 0 评论

除了 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: 命令切换不同分区,并借助 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

此教程送给各位想要折腾体验的朋友。至此这篇教程彻底结束,体验文我也不知道什么时候能写完……

相关推荐

30天学会Python编程:16. Python常用标准库使用教程

16.1collections模块16.1.1高级数据结构16.1.2示例...

强烈推荐!Python 这个宝藏库 re 正则匹配

Python的re模块(RegularExpression正则表达式)提供各种正则表达式的匹配操作。...

Python爬虫中正则表达式的用法,只讲如何应用,不讲原理

Python爬虫:正则的用法(非原理)。大家好,这节课给大家讲正则的实际用法,不讲原理,通俗易懂的讲如何用正则抓取内容。·导入re库,这里是需要从html这段字符串中提取出中间的那几个文字。实例一个对...

Python数据分析实战-正则提取文本的URL网址和邮箱(源码和效果)

实现功能:Python数据分析实战-利用正则表达式提取文本中的URL网址和邮箱...

python爬虫教程之爬取当当网 Top 500 本五星好评书籍

我们使用requests和re来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前500本好五星评书籍怎么样?ok接下来就是学习python的正确姿...

深入理解re模块:Python中的正则表达式神器解析

在Python中,"re"是一个强大的模块,用于处理正则表达式(regularexpressions)。正则表达式是一种强大的文本模式匹配工具,用于在字符串中查找、替换或提取特定模式...

如何使用正则表达式和 Python 匹配不以模式开头的字符串

需要在Python中使用正则表达式来匹配不以给定模式开头的字符串吗?如果是这样,你可以使用下面的语法来查找所有的字符串,除了那些不以https开始的字符串。r"^(?!https).*&...

先Mark后用!8分钟读懂 Python 性能优化

从本文总结了Python开发时,遇到的性能优化问题的定位和解决。概述:性能优化的原则——优化需要优化的部分。性能优化的一般步骤:首先,让你的程序跑起来结果一切正常。然后,运行这个结果正常的代码,看看它...

Python“三步”即可爬取,毋庸置疑

声明:本实例仅供学习,切忌遵守robots协议,请不要使用多线程等方式频繁访问网站。#第一步导入模块importreimportrequests#第二步获取你想爬取的网页地址,发送请求,获取网页内...

简单学Python——re库(正则表达式)2(split、findall、和sub)

1、split():分割字符串,返回列表语法:re.split('分隔符','目标字符串')例如:importrere.split(',','...

Lavazza拉瓦萨再度牵手上海大师赛

阅读此文前,麻烦您点击一下“关注”,方便您进行讨论和分享。Lavazza拉瓦萨再度牵手上海大师赛标题:2024上海大师赛:网球与咖啡的浪漫邂逅在2024年的上海劳力士大师赛上,拉瓦萨咖啡再次成为官...

ArkUI-X构建Android平台AAR及使用

本教程主要讲述如何利用ArkUI-XSDK完成AndroidAAR开发,实现基于ArkTS的声明式开发范式在android平台显示。包括:1.跨平台Library工程开发介绍...

Deepseek写歌详细教程(怎样用deepseek写歌功能)

以下为结合DeepSeek及相关工具实现AI写歌的详细教程,涵盖作词、作曲、演唱全流程:一、核心流程三步法1.AI生成歌词-打开DeepSeek(网页/APP/API),使用结构化提示词生成歌词:...

“AI说唱解说影视”走红,“零基础入行”靠谱吗?本报记者实测

“手里翻找冻鱼,精心的布局;老漠却不言语,脸上带笑意……”《狂飙》剧情被写成歌词,再配上“科目三”背景音乐的演唱,这段1分钟30秒的视频受到了无数网友的点赞。最近一段时间随着AI技术的发展,说唱解说影...

AI音乐制作神器揭秘!3款工具让你秒变高手

在音乐创作的领域里,每个人都有一颗想要成为大师的心。但是面对复杂的乐理知识和繁复的制作过程,许多人的热情被一点点消磨。...

取消回复欢迎 发表评论: