[Tips]解决因超大内存导致的Windows系统安装故障
解决因超大内存导致的Windows系统安装故障
一台 Dell 工作站,硬件配置有 128GB 内存和 512GB 固态硬盘,IT 人员为 512GB 固态硬盘平均划分了两个分区,在安装 Windows 操作系统时发生故障,具体表现为在 Specialize 阶段初始化系统时发生错误,如下图所示:
检查了相关日志文件,发现记录有 “CopyProfileDirectory from C:\Users\Administrator failed (0x80070070)” 错误事件,经分析 0x8007007 为磁盘容量已满导致的故障。
在当前案例场景下检查,512GB 仅划分了两个分区,且只格式化了用于安装系统的分区,而当前硬件设备配置了超大容量的内存(128GB),导致在 Specialize 阶段生成 Hiberfil.sys 文件后,没有可用空间再生成 Pagefile.sys,因为设备存储没有其他有效格式分区,系统无法利用其他分区存储 Pagefile.sys,最终导致 0x80070070 故障。
这个看似简单的问题实际上在解决过程中非常复杂,尤其是在企业 IT 环境中。如果单纯为了解决本次故障,可以将第二个分区格式化,这样在 Specialize 阶段初始化时,如果系统分区容量不够,则会自动在第二分区上创建 Pagefile.sys。但如果企业采用了定制的标准化系统映像,那么问题就会非常复杂。
起初 gOxiA 计划在 Specialize 阶段的 RunSynchronous 中添加一条命令“powercfg /h off”来实现关闭休眠文件(Hiberfil.sys),但测试发现此条命令并不会生效。翻阅了微软官方的文档提示应该在 RunAsyncronous 中执行该命令,于是又进行了尝试,结果发现并未生效,也检查了相关的日志文件,确实在 Specialize 阶段成功执行了命令,但也确实并未生效。而微软官方文档推荐在 AuditMode 阶段执行,也就是说 oobe 也是支持的,但是这些阶段执行“powercfg /h off”并不能解决本案例实质性问题。
为了解决这个问题只能从注册表下手,可以修改注册表,将系统 Power 下的 HibernateEnabled 键值设置为 0 ,即可禁用休眠功能。测试在 Specialize 阶段执行如下命令行。
测试结果是 Specialize 阶段修改了注册表也不会即刻生效,所以最终的结果是直接修改映像(WIM)的注册表键值。通常采取的做法是 Mount WIM,然后在注册表中加载映像中的注册表文件,位于“C:\Windows\System32\config”。
问题虽然是解决了,但是也引发了其他的问题,企业环境中的笔记本该怎么办呢?!这里给出几个方案供选择:
1. 按照不同机型,分配不同的映像。
2. 按照不同机型,应用不同的应答文件。
3. 不同机型使用同一个映像和应答,附加专为企业定制的配置工具,在配置过程中识别机型,并执行相关配置和维护脚本。
[Tips]HOWTO: 解决在 M2NVMe 固态硬盘上部署 Windows 7 的故障问题
HOWTO: 解决在 M2NVMe 固态硬盘上部署 Windows 7 的故障问题
故障描述:WDS 部署 Windows 7,安装结束后在 Start Logo 处自动重启,无法正常初始化操作系统,导致安装失败。
故障分析:WDS 部署 Windows 7 时 Boot.wim 使用的是 Windows 10 的 17134 版,在磁盘分区界面能够正常识别硬盘,说明驱动没有问题。而且 WDS 为此 Windows 7 映像绑定有对应设备机型的驱动库,所以在执行部署时会将相关驱动自动导入系统驱动存储区。基本可以排除设备驱动导致的故障。分析硬件设备,是一台图形工作站,磁盘配置为:1TB 固态 + 4TB 机械 * 2,其中 1TB 固态硬盘为 M.2 NVMe 接口的 Samsung MZVLW1T0。
解决方案:Windows 7 wSP1 RTM 不兼容 M.2 NVMe,为已知问题。需要向微软申请热修复补丁:KB2990941-v3、KB3087873-v2,下载到补丁后将其安装到脱机映像中即可。需要注意,如果你计划使用 Windows 7 的 Boot.wim,还需要将补丁安装到此 Boot 中,建议同时将磁盘驱动一并安装到 Boot,以在安装阶段识别硬盘驱动器,当然也可以在安装界面单独载入驱动。
HOWTO: 为 Windows 自动添加配置无线网络
HOWTO: 为 Windows 自动添加配置无线网络
由于 Windows 应答文件(Unattend.xml)中并未包含自动配置 WiFi 的选项,而在企业中确实存在为定制的标准化系统映像预先添加企业 WiFi 的需求,或者希望将一个脚本包发给用户,可以自动添加和配置无线网络。为此,微软在 Windows 10 上推出了新的配置工具 WICD,即:Windows 映像和配置设计器,可以轻松实现多种场景需求。
以自动添加和配置无线网络为例,新建一个“高级预配”,然后在左边配置列表中找到“运行时设置-ConnectivityProfiles-WLAN-WLANSetting”,根据需要添加并设置其下的参数。如果要配置的 WiFi 不允许自动连接,可将“AutoConnect”设置为“FALSE”;一些企业默认的办公用途公共 WiFi 通常会进行隐藏,所以为此需要为此类型的 WiFi 启用“HiddenNetwork”;“SecurityType”和“SecurityKey”这是 WiFi 网络的安全协议和密钥。
当配置工作完成后,便可以导出这个预配包,格式为 .PPKG,可以在 Windows 10 系统上执行运行。
因为配置包通常都非常小,IT人员可以通过邮件发送给用户自助执行,当然也可以使用 DISM 在向标准化映像添加,或在映像初始化中自动执行,具体的命令行参考如下:
企业 IT 人员对于早期的 Windows 系统版本,如 Windows 7,也有非常高的需求。那么该如何实现呢?!
使用 Netsh 可以在 Windows 7 上轻松实现以上的过程。首先找一台电脑连接到 WiFi,之后执行以下命令行,将无线配置导出为一个 xml 文件。
如果要在其他电脑上导入这个 WiFi 配置,则需要执行以下命令。
在应用无线配置文件时,需要注意,如果当前 WiFi 是一个隐藏网络,且不允许自动连接,那么需要检查无线配置文件,并对主要参数进行修改。对于隐藏网络,需要将“nonBroadcast”设置为“TRUE”;而连接模式“connectionMode”设置为“manual”。