HOWTO: 快速在 UEFI 启动的 Windows 10 中添加 Native VHD Boot
HOWTO: 快速在 UEFI 启动的 Windows 10 中添加 Native VHD Boot
今天又要与大家分享关于 Native VHD Boot 的小技巧了,搜索本站 gOxiA 已经写了不少关于 Native VHD Boot 的文章,虽然之前也有撰写“Windows 10 Native VHD Boot 案例分享”,但本文将向大家介绍如何在基于 UEFI 启动的 Windows 10 中添加一个 Native VHD Boot 实例,整个操作过程期间并不需要重启进入PE环境,完全就地解决。
准备一个准备添加 Native VHD Boot 的安装源,可以是 ISO 也可以是 WIM,前者需要先 Mount ISO 到当前系统,以便于访问其中的 WIM;之后在当前卷新建一个目录用于存放 Native VHD Boot 的 VHD 文件,例如“C:\VHDBoot\”;接下来使用磁盘管理器创建一个 VHD 文件WS2012R2.vhd,存储在前面的目录中,建议使用固定大小,注意请务必转换为GPT磁盘,根据需要进行分区,格式化为NTFS。固定大小的 VHD 虽然占用了不少空间容量,但可避免不必要的麻烦;然后再释放 WIM 映像到这个 VHD 中,方法相信大家已经轻车熟路,使用内置的 DISM 命令即可完成,命令行可参考“dism /apply-image /imagefile:G:\sources\install.wim /index:1 /applydir:V:\”,映像应用完毕即可unmount VHD,现在就差创建启动信息。
由于是系统在线环境,且引导卷处于隐藏状态,所以最为方便的添加 Native VHD Boot 启动信息的方案就是使用 BCDEdit 工具,基于默认启动项新建一个新的 Native VHD Boot 启动信息,修改 Device 和 OSDevice 选项指定到前面创建的 VHD 路径上,即可完成。为此参考如下命令行执行!
1. bcdedit /copy {default} /d "WS2012R2 Native VHD Boot"
2. bcdedit /set {GUID} device vhd=[c:]\VHDBoot\WS2012R2.vhd
3. bcdedit /set {GUID} osdevice vhd=[c:]\VHDBoot\WS2012R2.vhd
现在重新启动便可以出现多启动菜单,可选择 Native VHD Boot 来启动系统,UEFI 比较不人性化的是当选择另一个启动项后会再次重启计算机,这个没办法 UEFI 的设计使然。是不是非常简单,只要理解了相关的概念,命令能够做到得心应手,就能针对不同场景制定实现方案!
HOWTO: 为 MDT Media LiteTouch 启用 WIM Split
HOWTO: 为 MDT Media LiteTouch 启用 WIM Split
现在的系统映像容量是越来越庞大,像 Windows Server 2016 的 ISO 要想通过 UFD 以 UEFI 方式来安装,可真是要提前准备一番,2个 UFD 一个是 FAT32 格式的用来做 UEFI 引导,另一个 NTFS 格式的用来存储安装源,没办法WIM 超过了4GB,相信这个场景不少 ITPro 都曾遭遇过!尤其通过 MDT 的 Media LiteTouch 安装系统时,问题尤为突出!虽然前段时间 gOxiA 与大家分享了 Widnows 10 v1703 支持 UFD 创建多分区 的文章,在 MDT 实践中可以通过创建对应目录结构实现 Media LiteTouch 部署大容量自定义系统映像的需求,但之后的维护工作却非常繁琐。其实在 MDT 中已经提供了 WIM 的分卷功能,只是官方很少提及!截止到今日,官方与网上都没有一个明确的说明该如何为 MDT Media LiteTouch 启用 WIM Split。(PS:明显的坑,大坑!)
gOxiA 抽出时间做了一下功课,对 MDT WIM Split 做个总结。WIMSplit 确实受 MDT 支持,但是官方并没有提供图形化的设置界面,我们需要修改配置文件中对应的选项参数来启用它。这个选项为“ <SkipWimSplit>False</SkipWimSplit>”,位于“settings.xml”中。也就是说只要在 Settings.xml 中将 SkipWimSplit 配置为 False 那么在对 Media 执行刷新时就会自动将大于 4GB 的 WIM 映像进行分拆。而网上普遍存在修改 SkipWimSplit 后并未生效的主要原因是选错了 settings.xml,问题就是这么简单!还没理解?!搜搜 settings.xml 都位于哪几个目录下?去修改主 settings.xml 就会作用到 Media LiteTouch。
这个问题的起因完全是用户和开发者概念逻辑不统一所致!大家都认为应该修改 Media 下的 Settings,但实际上需要修改部署点的,在刷新 Media 时脚本会将系统映像分拆然后拷贝到 Media 下,完毕后会删除原始位置的 SWM文件。
HOWTO: 解决 Windows DISM error ID3 0x80070003 故障
HOWTO: 解决 Windows DISM error ID3 0x80070003 故障
DISM error ID3 的故障描述,自定义的 Windows 7 标准化系统映像测试正常,封装后在测试环境中部署时发现在 offline mode 下使用 DISM 对系统进行管理时操作失败,如下图所示 DISM 未能找到有效的 Windows 目录,但是当前系统路径确实是有效的,本以为是封装前的系统出现了异常,也反复进行了原始映像的测试,并对当前系统进行了检查并未发现有什么可疑的地方,无奈只能重点排查 DISM 日志!
在对 dism.log 文件进行了分析后,发现了详细的报错信息,DISM 在对脱机映像执行操作时发生了错误,“DISM OS Provider: PID=1420 Failed to mount the remote registry...(hr:0x80070003)”!复查系统映像创建中的配置修改以及后续部署时无人应答文件的设置,可算找到了线索在应答文件中对用户配置文件进行了重定向,该设置会将 Users 目录移动到其他分区,这就导致“All Users” 和“Default”目录也被移动,而 Default 目录包含默认的注册表数据文件(NTUSER.DAT),当 DISM 对脱机映像管理时会去 Mount 这个注册表数据文件,所以最终导致操作失败。
而要解决这个问题的办法还是相当简单的,就是在系统所在分区创建一个相同的目录结构(C:\Users\Default\), 并将 Windows 安装源(Install.wim)中的 NTUSER.DAT 文件拷贝过去即可。在微软官方的知识库(KB2293874)中确认了这是一个已知的问题。
随后 gOxiA 在 Windows 10 上也重现了这个故障问题,dism.log 中记录的错误提示稍有区别,但意思完全相同,所以解决方法一致。为什么时隔7年这个问题仍旧没有解决,恐怕也只有产品组的人员知道!不过也完全可以理解,在企业环境中要重定向用户配置文件目录通常会使用组策略进行设置,此法不会移动系统级的目录;而直接通过应答文件的做法恐怕也是极为罕见的场景需求。