答案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
和/或,请确保对它们进行相同的更改。CurrentControlSet
ControlSet001
离线编辑注册表
但是,我们如何在不启动的情况下编辑注册表?有多种方法。您可以从现有的、正在运行的 Windows 计算机或从 USB 或甚至从 PXE 启动的 Windows 预安装环境 (WinPE) 临时安装 iSCSI 卷。有许多指南描述了这些选项。
为了离线编辑注册表(即编辑运行 regedit 的系统注册表以外的注册表):
- 正常运行
regedit
(“注册表编辑器”)。 - 点击
HKEY_LOCAL_MACHINE
。 - 转到“文件 > 加载配置单元...”。
- 浏览到离线 Windows 安装,然后选择文件
Windows\System32\config\SYSTEM
。 - 出现提示时,输入任意名称,例如“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 启动的机器上拥有一个可以工作的页面文件的唯一解决方法是拥有一个本地物理磁盘,专门用于页面文件。