从 iSCSI 网络驱动器启动 Windows 10 时出现 PAGE_FAULT_IN_NONPAGED_AREA

从 iSCSI 网络驱动器启动 Windows 10 时出现 PAGE_FAULT_IN_NONPAGED_AREA

我正在尝试通过 iSCSI 设置 Windows 10 进行无盘启动,如下所述,这里或者这里

我可以运行 Windows 10 安装程序在目标 iSCSI 驱动器上安装 Windows。但是,第一次从驱动器启动时,我收到蓝屏死机,错误代码为PAGE_FAULT_IN_NONPAGED_AREA。不幸的是,没有生成崩溃转储(可能是因为引导加载程序从未到达可以写入驱动器的地步?)。

我该如何诊断并修复这个问题?

答案1

当系统页面文件位于 iSCSI 设备上时,似乎会发生这种情况。虽然在 Windows 7 下在 iSCSI 上定位页面文件工作正常,但在 Windows 10 中似乎出现问题。不幸的是,Windows 默认在主磁盘上设置页面文件,因此当主磁盘是 iSCSI 时,它会立即出现问题。

(请注意,停止代码PAGE_FAULT_IN_NONPAGED_AREA不会一定尽管包含“page”一词,但与系统页面文件总体上无关。此停止代码更像是 NT 内核版本的“分段错误”,即一般无效内存访问。但在我的特定情况下,它恰好与页面文件有关。)

我能够通过完全禁用页面文件来解决问题。(如果存在页面文件,也可以在本地磁盘上找到它,但在没有页面文件的情况下启动并运行操作系统后,配置起来更容易。)

离线禁用页面文件

由于您的计算机无法启动,因此您无法通过 UI 禁用页面文件。幸运的是,通过注册表禁用页面文件很容易。为此,找到以下注册表项,并将其值设置为空:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Memory Management\PagingFiles

如果您的注册表除了包含之外还包含ControlSet002和/或,请确保对它们进行相同的更改。CurrentControlSetControlSet001

离线编辑注册表

但是,我们如何在不启动的情况下编辑注册表?有多种方法。您可以从现有的、正在运行的 Windows 计算机或从 USB 或甚至从 PXE 启动的 Windows 预安装环境 (WinPE) 临时安装 iSCSI 卷。有许多指南描述了这些选项。

为了离线编辑注册表(即编辑运行 regedit 的系统注册表以外的注册表):

  1. 正常运行regedit(“注册表编辑器”)。
  2. 点击HKEY_LOCAL_MACHINE
  3. 转到“文件 > 加载配置单元...”。
  4. 浏览到离线 Windows 安装,然后选择文件Windows\System32\config\SYSTEM
  5. 出现提示时,输入任意名称,例如“OFFLINE_SYSTEM”。

脱机注册表文件将以您选择的名称出现在树下HKEY_LOCAL_MACHINE。您对其中的键所做的编辑通常会自动保存,但建议您在关闭 regedit 之前明确卸载脱机配置单元以确保安全(请参阅下面的 Harry Johnston 的评论)。这是一个非常奇怪的用户界面,但这显然就是它完成的方式。

答案2

值得一提的是,页面文件在 Windows 10 编译版本 1703 之前都可以正常工作。但是,默认情况下,更新到较新版本或全新安装较新版本会失败 - 如上所述。

@KentonVarda 关闭页面文件的建议有效,但我采用了离线注册表编辑以外的其他方法。

我已设法解决了这个问题,方法是先将 Windows 安装到本地 SSD 驱动器。然后我启动它,禁用虚拟内存,并使用 SysInternals 的工具 Disk2VHD(可在 Microsoft 站点上找到https://docs.microsoft.com/en-us/sysinternals/downloads/disk2vhd)在实时系统中创建 VHDX 文件。然后在 iSCSI 目标上使用生成的 VHDX,然后,它就可以通过 iSCSI 顺利启动了。

我目前知道的在 iSCSI 启动的机器上拥有一个可以工作的页面文件的唯一解决方法是拥有一个本地物理磁盘,专门用于页面文件。

相关内容