使用 Windows NT ExtendOEMPartition 时大于 4 GB 的驱动器上的 NTFS 被损坏

本文已归档。它按“原样”提供,并且不再更新。
症状
在大于 4 GB 的驱动器上从 MS-DOS FAT 分区使用 Winnt.exe 进行无人参与安装可能会导致 NTFS 损坏。在 Unattend.txt 文件中,无人参与安装参数将被指定为如下内容:
   [Unattended]   OemPreinstall = yes   FileSystem = ConvertNTFS   ExtendOemPartition = 1				

在 Windows NT 安装完成后第一次启动系统时,如果出现由于文件丢失或损坏而无法成功启动或出现以下 CHKDSK 信息,则说明 NTFS 已损坏:

CHKDSK 正在校验索引...修正文件 100 索引 %I30 中的错误修正文件 100 索引 %I30 中的错误索引校验完成。CHKDSK 在驱动器上检测到不太重要的非一致现象。发现错误。CHKDSK 无法以只读模式继续。				


如果损坏的程度非常严重,则计算机可能会在安装过程的 GUI 模式部分停止响应(挂起),也可能会出现其他一些不同的错误消息。这些错误消息因计算机的不同而不同,它们通常都指出文件损坏或丢失(但实际上系统中存在这些文件)。之所以会将文件报告为损坏或丢失,是因为没有正确安装 NTFS 的索引。
原因
问题就出在驱动器大于 4 GB 上。在转换到 NTFS 文件系统时,镜像引导扇区本应写入磁盘结尾处,但由于 32 位计算的缘故,字节偏移位置被遮蔽到了硬盘驱动器空间的 4 GB 以内。错误的计算导致 NTFS 索引缓冲区被覆盖。
解决方案
要解决此问题,请获取用于 Windows NT 4.0 或 Windows NT Server 4.0 终端服务器版的最新 Service Pack。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
152734 如何获取最新的 Windows NT 4.0 Service Pack

注意:Service Pack 4 中包含的 Fastfat.sys 文件是必需的。除了 Fastfat.sys 文件之外,还必须从最新的 Windows NT 4.0 Service Pack(SP4 或更高版本)中获取以下文件:Service Pack 的语言版本还应该与所安装的语言一致。

对于 I386 平台:
Atapi.sys
Basesrv.dll
Hal.dll
Hal486c.dll
Halapic.dll
Halast.dll
Halcbus.dll
Halcbusm.dll
Halmca.dll
Halmps.dll
Halmpsm.dll
Haloli.dll
Halsp.dll
Halwyse7.dll
Ntdll.dll
Ntoskrnl.exe
Ntkrnlmp.exe
Win32k.sys
User32.dll
Kernel32.dll
Gdi32.dll
Winsrv.dll


对于 Alpha 平台:
halgammp.dll
halpinna.dll
halrawmp.dll
halsabmp.dll
Ntdll.dll
Ntoskrnl.exe
Ntkrnlmp.exe
Win32k.sys
User32.dll
Kernel32.dll
Gdi32.dll
Winsrv.dll

如何安装

  1. 在 MS-DOS 模式下启动计算机,并照常准备用于 Windows NT 无人参与安装的驱动器。这包括将 .\I386 或 .\Alpha 目录从 Windows NT 光盘上复制到 C: 驱动器上的安装目录。
  2. 将修复程序文件复制到一个临时目录中。
  3. 对 C: 驱动器上的安装目录应用修复程序文件和所需的 Service Pack 3+ 相关文件。Service Pack CD 的语言版本应与所安装的语言一致。由于 Service Pack CD 的格式为 Windows NT unicode,因此不能直接从 MS-DOS 读取它们。Service Pack 文件可能需要从能够读取 Service Pack CD 的 Windows NT 系统中转移出来,或者,可以通过使用 MS-DOS 直接读取 Enterprise Server CD 的“\SP3\i386”或“\SP3\Alpha”目录中的 SP 文件。Service Pack 相关文件已在上面列出。如果您有 DOS 可读取格式的相关文件,可以使用 OEMSETUP.BAT 批处理文件自动执行这一步。否则,您需要手动执行这一步。

    Intel 平台:步骤 3 说明

    批处理文件选项

    从临时目录中运行 OEMSETUP.BAT,并指定源 Service Pack 目录和目标安装目录。例如:(假定 D: 为 Service Pack 目录,C:\I386 为安装目录)

    OEMSETUP D:\SP3\I386 C:\I386

    这会将所需文件复制到安装目录所在的 C: 驱动器上的 I386 目录和 C:\I386\SYSTEM32 目录中。

    手动选项

    您也可以手动执行此步骤。首先,从修复程序中将 FASTFAT.SYS 复制到 C:\I386 安装目录,然后从最新的 NT 4.0 Service Pack 中将下列文件复制到 C:\I386 目录和 C:\I386\SYSTEM32 目录中,如下所示:
    Atapi.sys       -> ..\I386Basesrv.dll     -> ..\I386Fastfat.sys     -> ..\I386Hal.dll         -> ..\I386Hal486c.dll     -> ..\I386Halapic.dll     -> ..\I386Halast.dll      -> ..\I386Halcbus.dll     -> ..\I386Halcbusm.dll    -> ..\I386Halmca.dll      -> ..\I386Halmps.dll      -> ..\I386Halmpsm.dll     -> ..\I386Haloli.dll      -> ..\I386Halsp.dll       -> ..\I386Halwyse7.dll    -> ..\I386Ntdll.dll       -> ..\I386 和  -> ..\I386\SYSTEM32Ntoskrnl.exe    -> ..\I386Ntkrnlmp.exe    -> ..\I386Win32k.sys      -> ..\I386User32.dll      -> ..\I386Kernel32.dll    -> ..\I386Gdi32.dll       -> ..\I386Winsrv.dll      -> ..\I386						

    然后,从 C:\I386 目录和 C:\I386\SYSTEM32 目录中删除这些文件的压缩版本。压缩文件的文件类型的最后一个字符包含一个下划线(“_”)。例如,删除 FASTFAT.SY_、HAL.DL_、NTDLL.DL_ 和 NTOSKRNL.EX_ 等。

    Alpha 平台:步骤 3 说明

    批处理文件选项

    从临时目录中运行 OEMSETUP.BAT,并指定源 Service Pack 目录和目标安装目录。例如(假定 D: 为 Service Pack 目录,C:\Alpha 为安装目录):

    OEMSETUP D:\SP3\Alpha C:\Alpha

    这会将所需文件复制到安装目录所在的 C: 驱动器上的 Alpha 目录和 C:\Alpha\SYSTEM32 目录中。

    手动选项

    您也可以手动执行此步骤。为此,您需要首先从修复程序中将 FASTFAT.SYS 复制到 C:\Alpha 安装目录,然后从最新的 NT 4.0 Service Pack 中将以下文件复制到 C:\Alpha 目录和 C:\Alpha\SYSTEM32 目录中,如下所示:
    Fastfat.sys     -> ..\AlphaHalgammp.dll    -> ..\AlphaHalpinna.dll    -> ..\AlphaHalrawmp.dll    -> ..\AlphaHalsabmp.dll    -> ..\AlphaNtdll.dll       -> ..\Alpha 和 -> ..\Alpha\SYSTEM32Ntoskrnl.exe    -> ..\AlphaNtkrnlmp.exe    -> ..\AlphaWin32k.sys      -> ..\AlphaUser32.dll      -> ..\AlphaKernel32.dll    -> ..\AlphaGdi32.dll       -> ..\AlphaWinsrv.dll      -> ..\Alpha						
状态
Microsoft 已确认此问题存在于 Windows NT 4.0 和 Windows NT Server 4.0 终端服务器版中。 此问题已首先在 Windows NT 4.0 Service Pack 4.0 和 Windows NT Server 4.0 终端服务器版 Service Pack 4 中得到更正。
属性

文章 ID:185773 - 上次审阅时间:12/05/2015 08:40:41 - 修订版本: 2.3

Microsoft Windows NT Server 4.0 Terminal Server(终端服务器), Microsoft Windows NT Workstation 4.0 开发员版, Microsoft Windows NT Server 4.0 Standard Edition

  • kbnosurvey kbarchive kbbug kbfix kbqfe kbhotfixserver KB185773
反馈