教你提前用上微软最新的 Windows 10X 系统
cac55 2024-10-07 06:43 44 浏览 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<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
此教程送给各位想要折腾体验的朋友。至此这篇教程彻底结束,体验文我也不知道什么时候能写完……
相关推荐
- 如何屏蔽色情网站?_怎么能屏蔽网站
-
一、基础防御:全网DNS劫持阻断1.修改全网DNS服务器推荐DNS:安全DNS:CleanBrowsing(成人内容过滤):185.228.168.168/185.228.169.168Open...
- 容器、Pod、虚拟机与宿主机网络通信全解:看这一篇就够了
-
在日常开发与部署过程中,很多人一开始都会有这样的疑惑:容器之间是怎么通信的?容器怎么访问宿主机?宿主机又如何访问容器?Kubernetes中Pod的网络和Docker容器一样吗?容器跨机器是...
- Win11专业版找不到共享打印机的问题
-
有很多深度官网的用户,都是在办公室上班的。而上班就需要使用打印机,但更新win11系统后,却出现同一个办公室里面的打印机都找不到的问题,这该如何处理呢?其实,可能是由于我们并没有打开共享打印机而造成的...
- 常用电脑快捷键大全,摆脱鼠标依赖,建议收藏
-
Ctrl+C复制Ctrl+X剪切Ctrl+V粘贴Ctrl+Z撤销Ctrl+Y重做Ctrl+B加粗Ctrl+A全选所有文件Ctrl+S保存Ctrl+N新建Ctrl+O打开Ctrl+E...
- Win11实现自动追剧Jellyfin硬解,免NAS复杂操作
-
大家好,欢迎来到思赞数码。本期将详细介绍如何通过安装和配置Sonarr、Radarr、Prowlarr、qBittorrent和Jellyfin,打造一套自动化的影视管理系统。很多人认为,要实现自动追...
- 微软Win11安卓子系统WSA 2308.40000.3.0更新推送下载
-
IT之家9月21日消息,微软官方博客今日宣布,已面向所有WindowsInsider用户推送了Windows11安卓子系统的2308.40000.3.0版本更新。本次更新和之前...
- 路由器总掉线 一个命令就能猜出八九分
-
明明网络强度满格或有线图标正常,但视频卡成PPT、网页刷不开、游戏动不了,闲心这些问题很多小伙伴都碰到过。每次都要开关路由、宽带/光猫、插拔网线……一通忙。有没有啥办法能快速确定故障到底在哪儿,方便处...
- windows电脑如何修改hosts文件?_windows怎么修改hosts
-
先来简单说下电脑host的作用hosts文件的作用:hosts文件是一个用于储存计算机网络中各节点信息的计算机文件;作用是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中...
- win10广告弹窗ShellExperienceHost.exe
-
win10右下角老是弹出广告弹窗,排查为以下程序引起,但是这个是系统菜单的程序不能动:C:\Windows\SystemApps\ShellExperienceHost_cw5n1h2txyewy\S...
- Win10 Mobile预览版10512/10166越狱解锁部署已被黑客攻破
-
看起来统一的WindowsPhone和Windows越加吸引人们的关注,特别是黑客们的好奇心。XDA论坛宣称,在Win10Mobile预览版10512/10166上,已取得越狱/解锁部署突破,比如可...
- 6款冷门小众软件,都是宝藏,建议收藏
-
真的很不错(。-ω-)zzzBearhttps://bear.app/cn/Bear是一个漂亮,灵活的Markdown的写作工具。它一样只支持苹果家的全平台。它一出现就惊艳四方,就被AppSto...
- 如何让不符合条件的设备升级Windows 11
-
如果你是最近(6月24日之后)加入WindowsInsider项目并且你的设备并不符合升级条件,那么当你在尝试升级Windows11的时候可能会看到以下错误:你的PC不符合Wi...
- windows host文件怎么恢复?局域网访问全靠这些!
-
windowshost文件怎么恢复?windowshost文件是常用网址域名及其相应IP地址建立一个关联文件,通过这个host文件配置域名和IP的映射关系,以提高域名解析的速度,方便局域网用户使用...
- Mac Hosts管理工具---SwitchHosts
-
switchhosts!formac是一款帮助用户快速切换hosts文件的工具,switchhosts!formac能够帮助你快速方便的打造个人专用的网络环境,支持本地和在线两种方式,并且支持...
- 「浅谈趣说网络知识」 第十二弹 老而不死的Hosts,它还很有用
-
【浅谈趣说网络知识】第十二弹老而不死的Hosts,它还很有用什么时候才觉得自己真的老了,不是35岁以上的数字,不是头上的点点白发,而是不知觉中的怀旧。风口上的IT界讲的就是"长江后浪推前浪...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)