这是一篇从前博客迁移来的文章。
tags:
- Windows
categories:
- 搞电脑
#
May. 22 / 2019 Update: 辣鸡 M$ 把这个功能扔了草,source: https://docs.microsoft.com/en-us/windows/deployment/planning/windows-10-1903-removed-features#features-were-no-longer-developing
本文可以教你给自己 U 盘创建一个便携式的 Windows To Go (以下简称 WTG)。我们将会使用 VHDX
格式存储系统镜像。不懂相关知识也没关系,跟着教程走就好了,必要知识会涵盖在里面。
为什么不用第三方工具? #
本文除了分区以外没有使用第三方工具,原因如下:
-
某些第三方工具并非纯净。详情见引用 1 底部。
-
自己动手可以学到更多知识
-
自己动手可定制性更强
基础知识 #
Windows To Go (WTG) #
Windows To Go 可以让你把 Windows 装到一个 USB 里进行便携式使用。Windows 10 Pro 内置了一个创建向导,不过对 U 盘有诸多要求,笔者的 U 盘无法满足这些要求,所以无法使用。
VHD (X) #
VHD 格式是一种虚拟磁盘格式,我们用它来存储 WTG 系统档案。使用 VHD 而不是直接把系统存进 U 盘分区有以下几个好处:
-
(看上去)创建时间快一点
-
方便备份和迁移
-
强迫症福音
VHD 可以选用固定大小和动态大小。
VHD 差分 #
VHD 差分是 VHD 一个很重要的功能,简而言之它就是 VHD 的 “版本控制”。透过差分,可以达到下列目的:
-
快速备份和回滚
-
保护母 VHD
-
基于一个母盘同时进行多份修改(不适用于 WTG)
如果你学过 Docker,你应该更容易理解这个概念。“差分” 就是对母盘做一个 “影子”,所有新的修改都会写入这个 “影子” 里,并保持母盘只读。这个 “影子” 暂且叫它 “子盘”。子盘和母盘强关联,一旦母盘修改子盘就无法使用了。
WTG 会引导一个你设定好的母盘(大概),所以在制作差分的时候需要修改母盘的名字,然后差分子盘,子盘的名字需要保持和原先母盘名字不变才能引导。
具体步骤示例:
C:> diskpart
DISKPART> create vdisk file=xxx.vhd parent=parent.vhd
这样就创建成功了,记得把母盘设置为只读。子盘一开始会非常小(4M),随着修改被写入会逐渐增大。如果需要回退可以随时修改文件名来指定原来的盘。
开始操作 #
基本概念已经阐述完了,下面说一下需要的材料:
-
一台有管理员权限的 Windows 电脑。笔者是 Windows 10 Pro。
-
一个高速 U 盘,最好是 SSD。U 盘性能对 WTG 的速度有着至关重要的影响。 注意:这个 U 盘会被格式化。
-
一个 Windows 系统镜像,笔者使用 Windows 10 Pro 镜像。
-
一台支持 UEFI 的电脑。(我个人不会操作 Legacy)
-
DiskGenius 等分区工具。
稍候,我们会逐步创建:
-
一个空白 VHD(X),笔者是 VHDX 动态大小
-
2 个 U 盘分区以及 GPT 分区表
-
引导分区
0x00 创建 VHDX #
打开 计算机管理(Computer Management),左侧打开 磁盘管理(Disk Management):
出来后右键磁盘管理,如果创建 VHD(Create VHD) 是灰色的,就在右侧分区点几次再试试,原因未知。
填写参数:
-
位置: 暂时放在电脑硬盘,因为这样最快。
-
大小:笔者是 45G
-
格式,笔者是 VHDX`
-
类型,笔者是动态大小
创建完之后如果没有挂载的话手动挂载一下,然后右键磁盘,选初始化 (Initialize Disk):
之后选 GPT 分区表。
最后右键未使用空间,点新建简单分区(New Simple Volume):
一路 Next 即可,确保文件系统是 NTFS。
之后按照默认选项会分配盘符并挂载,打开资源管理器看看多了分区没有。
至此,VHD 准备完毕。
0x01 准备 U 盘 #
打开分区软体,不同软体操作方式不一样,所以不多说。总之操作步骤:
-
如果不是 GPT 分区表,重建。
-
删除所有分区
-
创建 100M ESP 引导分区,设定盘符。Win 应该会占 70+M 的引导,如果单系统 100M 足矣。
-
创建 NTFS 分区存储镜像,比你的 VHD 大小大一点就行。设定盘符。
-
如果还有空间可以再建自己的数据分区存普通文件,和 WTG 没有关系不再赘述。
我们假定引导分区盘符为 X:
,镜像分区盘符为 V:
。至此 U 盘准备完成,可以暂时拔下来了。
0x02 写入镜像 #
确保刚才的 VHD 分区已经挂载了。这里假定挂载到了 D:
。
打开你的 Windows ISO,找到 source\install.wim
,解压到一个目录。然后打开管理员 CMD (或 Powershell)。
一个 WIM 可以带有多个版本(家庭版、专业版等),使用 Index 区分。用下面的命令来列出版本避免装错。
C:\> Dism /Get-ImageInfo /imagefile:C:\path\to\your\install.wim
确定了 Index 之后,输入命令开始 Apply:
C:\> Dism /Apply-Image /imagefile:C:\path\to\your\install.wim /index:<Your index> /applydir:<你的 VHD 分区>
这个过程应该很快能完成。完成后卸载 VHD:
0x03 (可选)设置 Bitlocker #
如果想给 WTG 开启 Bitlocker 的话,直接给镜像分区开启即可。推荐在下一步(复制镜像)前进行,会快一点。设置好后开机引导就会提示输入密码。我不是很清楚能否给 VHD 里面的分区设定 Bitlocker,感兴趣可以自行尝试。
0x04 复制文件 #
准备引导前必须复制 VHD 到 U 盘。这里复制到镜像分区( V:
)。复制完后再次挂载 VHD,但请挂载复制完的、U 盘中的 VHD。这里假定挂载到 D:
。
0x05 设置引导 #
输入以下命令设置引导,盘符根据自身情况修改:
C:\> bcdboot D:\Windows /s X: /f UEFI /l en-us
/l
指定语言,根据自身情况设定。
至此,基本的 WTG 已经准备好了。记得卸载 VHD。别急着重启,还有点事。
0x06 (可选)进行一次差分 #
我个人建议刚弄好的时候差分一次,方便回退到纯净系统。
- 移动 U 盘内的 VHD。如
V:\windows.vhd
到V:\fresh_install.vhd
- 打开
diskpart
,输入create vdisk file=V:\windows.vhd parent=V:\fresh_install.vhd
- 把
fresh_install.vhd
设为只读 - 创建完成。
0x07 (可选)禁止 VHD 拓展空间 #
具体是否必要、是否需要第一次启动前设定我也不清楚。反正能避免 VHD_BOOT_HOST_VOLUME_NOT_ENOUGH_SPACE
导致蓝屏。为此我们需要修改 WTG 中的注册表。
挂载 windows.vhd
(文件名根据自己情况修改),比如挂载到 D:
。这时 D:\Windows\System32\Config\SYSTEM
就是我们要修改的注册表 档案。打开 regedit
,随便选一个 Root Key,比如笔者的 HKEY_LOCAL_MACHINE
。
然后左上角点 Load hive
,选择那个 SYSTEM
档案:
然后名字自选,比如 WTG
。
打开 HKEY_LOCAL_MACHINE
(你的 Root key)下的 WTG
(你设定的名字)。找到 ControSet001\services\FsDepends\Parameters
里面的 VirtualDiskExpandOnMount
,把值改成 4
。
最终选择 WTG
(你设定的名字)子项,菜单选 Unload hive
,然后卸载 VHD。
如果刚才做了差分,这次的修改不会保留在 fresh_install.vhd
中,而是保留在了 windows.vhd
里面。如有需要可以再次差分。
至此 WTG 第一次启动已准备好,可以重启进入了。
优化 #
开机后可能会很卡,这里需要做一些优化才行。
禁用服务 #
打开 计算机管理(Computer management),服务里面可以禁用并停止以下服务:
-
Windows Search
-
Windows Error Reporting Service
-
Background Intelligent Transfer Service
-
Windows Event Log(会导致无法更新,建议更新前临时启动)
UWF #
UWF 是 Microsoft 提供的一项功能,可以禁止对磁盘的写入,类似磁盘保护。不过这项功能仅在 Enterprise 或 Education 版本提供,如果可用可以自行查阅文档:
Unified Write Filter (UWF) feature
Ramdisk #
把临时文件存到内存盘是个好操作,大幅减少对 U 盘寿命的影响。个人推荐用 ImDisk
。
卸载功能 #
卸载不必要的功能比较适合强迫症,我个人卸载了所有可选功能。 Windows + R 输入 OptionalFeatures
自行勾选。
卸载自带软体 #
Win10 自带很多 UWP App 都可以删,Powershell 自行摸索就好,不再赘述。
减少视觉效果 #
减少动画可以看起来更快,打开控制面板(Win + R,输入 control
) -> System and Security
-> System
-> 左侧 Advanced System Settings
-> 性能 设定 -> Adjust for best performance
。同时,可以去设置里面关闭尽可能多的美化。
关闭虚拟内存 #
Win + R 输入 systempropertiesadvanced
并打开,性能 -> 设定 里面选 高级
选项卡,虚拟内存点修改,取消勾选自动,每个分区扫一遍,有的话就选 No paging file
然后点 Set:
禁止休眠 #
WTG 休眠会发生一些问题。
- CMD
powercfg -h off
- 打开
控制面板
->控制面板\所有控制面板项\电源选项\编辑计划设置
进入休眠状态设为永不
关闭 Defender #
警告:关闭 Defender 会降低系统安全等级。
首先进 Defender 设定把能关的选项都关了。
然后打开组策略管理器( gpedit.msc
),计算机设定 -> 管理模板 -> Windows 组件 -> Windows Defender -> Turn off Windows Defender -> Enabled
至此,WTG 已经基本可以使用了,可以进主系统去做个差分,保留一下还原点和记录。
References #
-
https://www.thomasmaurer.ch/2012/03/windows-8-how-to-create-a-windows-to-go-usb-drive/
-
http://mistyprojects.co.uk/documents/WindowsToGo/index.html#vhd
-
https://www.maketecheasier.com/uninstall-pre-installed-apps-windows-10/
-
https://www.wikihow.com/Turn-Off-Windows-Defender-in-Windows-10
-
https://www.prajwaldesai.com/how-to-turn-off-windows-defender-using-group-policy/
-
https://docs.microsoft.com/en-us/windows-hardware/customize/enterprise/unified-write-filter
-
Others
The thunbnail: