我正在试验 Sil3112 和 Sil3114 PCI-to-SATA 控制器。这些卡可以被 DOS 和 Windows 9x 识别并引导,但不能被 Windows XP 安装程序识别并引导。
如果我在安装过程中按 F8 键安装驱动程序,Windows XP 就可以识别连接到此卡的 SATA 驱动器。但是,既然 DOS 无需任何驱动程序就能看到它们,为什么还需要这样做呢?
我在这两块卡上都安装了最新的非 RAID BIOS,所以这不是 RAID 配置问题。连接已安装 XP 的驱动器将允许系统进入引导加载程序,但计算机在尝试启动时会出现蓝屏,大概是因为这些驱动程序实际上缺失了。
XP 为什么需要这些驱动程序?
答案1
PC BIOS 提供软件中断,以 16 位实模式访问硬盘。驱动器控制器卡通常可以提供所谓的“选项 ROM”,该选项 ROM 可挂接中断以添加对连接到控制器卡的驱动器的支持。
DOS 总是使用这些 BIOS 提供的例程来访问驱动器(除非您手动加载覆盖它们的驱动程序)。
Windows 9x 为当时常见的硬盘类型提供了 32 位驱动程序,但如果没有 32 位驱动程序可用于给定的驱动器,它将返回到实模式来访问驱动器。这对性能来说不是很好,但至少可以访问驱动器。
另一方面,Windows NT 系列不支持切换回实模式并使用 BIOS 驱动程序。如果没有控制器的 32 位驱动程序,则无法使用该驱动器。
一些 SATA 控制器具有 IDE 模拟模式,它们可以模拟标准 EIDE 控制器(几乎每个版本的 Windows 都包含驱动程序)。当 SATA 控制器集成为芯片组的一部分时,这种情况尤其常见,但一些独立控制器也可能支持它。
不过,我并不完全确定技术细节,如果我没记错的话,传统的 IDE 控制器使用的是固定基址。我不确定系统中是否有可能存在多个这样的控制器,而第二个控制器的基址却不是标准基址。在 IDE 仿真模式下,大多数芯片组控制器至少似乎会将驱动器数量限制为四个(一个标准 EIDE 控制器支持的数量)。
答案2
DOS 和 Windows 98 都使用附加到 BIOS 功能并由卡上 ROM 提供的驱动程序。
这些是实模式驱动程序,不能被以保护模式运行的操作系统使用,因此 XP 需要保护模式驱动程序。
XP 使用实模式驱动程序在启动期间加载保护模式驱动程序,然后切换模式。DOS 从不切换模式,因此不需要单独的驱动程序。