我最近尝试在 AHCI 模式下安装 Windows Vista。我怀疑这次冒险不知何故导致内置 Intel SATA 控制器在 AHCI 模式下无法运行。我从一个干净的(零填充)SATA 硬盘开始,并在系统 BIOS 设置中启用 Intel 控制器的 AHCI。我在 Windows Vista 设置中使用 Diskpart 对硬盘进行了分区。
我尝试将其安装到逻辑分区(即逻辑驱动器、逻辑卷),如下所示。
- 500 MB 主、活动
- 40000 MB 扩展
- 40000 MB 逻辑
但 Windows 拒绝接受此分区。它会启动,然后停止并返回错误消息。
Windows 无法确定此计算机是否包含有效的系统卷。
它足够好,让我点击下一个开始安装。但显然这还不够好。在网上搜索后,我了解到这与 BIOS 启动设备顺序以及 Windows Vista 安装程序无法正确处理从 USB 闪存驱动器进行的安装有关。我使用 USB 闪存驱动器进行安装,它是用 Windows 7 USB/DVD 下载工具创建的。
因此我更改了 BIOS 中的启动顺序,如下所示。
Device boot order from...
Floppy
Hard disk
CD-ROM
To...
Hard disk
Disabled
USB-HDD
And hard disk boot priority from...
Seagate disk
Seagate disk
Kingston USB
WD disk
WD disk
Bootable add-in card
To...
Seagate disk
Seagate disk
WD disk
WD disk
Bootable add-in card
Kingston USB
回到 Windows Vista 设置,我使用 Diskpart 清理硬盘。然后我决定为主分区留出更多空间,以防万一。所以我有以下分区。
- 1000 MB 主、活动
- 40000 MB 扩展
- 40000 MB 逻辑
安装开始于逻辑分区。于是我离开了电脑,以为现在一切都好了。但当我回来时,它却因为另一个错误而停止了。
Windows 无法复制安装所需的文件。请确保安装所需的所有文件都可用,然后重新启动安装。错误代码:0x80070070
我又试了一次。我再次使用 Diskpart 清理磁盘。然后我按如下方式增加了主分区的大小。
- 4000 MB 主、活动
- 40000 MB 扩展
- 40000 MB 逻辑
然后我再次开始安装。这次我没有遇到任何错误。它完成了所有步骤:复制文件、扩展文件、安装功能、安装更新、完成安装。然后计算机重新启动,然后在以下行之后停止。
Serial ATA AHCI BIOS, Version iSrc 1.20E
Copyright (c) 2003-2008 Intel Corporation
** This version supports only Hard Disk and CDROM drives **
Please wait. This will take few seconds.
Controller Bus#00, Device#1F, Function#02: 06 Ports, 04 Devices
_
我怀疑 Windows Vista 安装程序在安装过程中遇到了第一个错误,因为它无法使用 AHCI 模式安装到 HDD,因此它以某种方式重置了 AHCI 设置,然后我能够在第二次安装时没有出现错误,因为我的 BIOS 已恢复为 IDE 模式。
按下电脑上的重置按钮,电脑立即关机!然后我再次开机,经过 POST 屏幕,然后电脑再次在同一行停止。按 Ctrl+Alt+Del 重新启动,然后按 DEL 键进入 BIOS 设置,但无法进入设置屏幕。电脑卡在同一行,我无法通过。
现在,我已经完成了清除 CMOS 的所有常规步骤。绕过该屏幕的唯一方法是使用主板上的跳线针清除 CMOS。这是因为我无法进入 BIOS 设置来加载默认设置。此外,一旦将 SATA 模式设置为已禁用 (IDE),我就可以绕过 AHCI BIOS 屏幕并返回 Windows Vista 安装。安装甚至已完成。但如果我返回 BIOS 设置并再次启用 AHCI,它会再次在同一行停止。
另一种绕过 AHCI BIOS 屏幕并跳过卡住的行的方法是从 SATA 端口断开 HDD。但当然,我无法启动任何东西。我的意思是,如果我将 SATA 模式设置为禁用 (IDE),我至少可以启动 Windows Vista。
我尝试将 HDD 连接到不同的端口,并且断开了所有其他 HDD 驱动器的连接。我逐个测试了每个端口,从 0 到 5。实际上出现了一个有趣的模式,其中每个先前扫描的 SATA 端口(从当前连接的端口开始)都显示“未找到设备”行。
将 HDD 安装在 SATA 端口 0 上...
Controller Bus#00, Device#1F, Function#02: 06 Ports, 04 Devices
_
在 SATA 端口 1 上安装 HDD...
Controller Bus#00, Device#1F, Function#02: 06 Ports, 04 Devices
Port-00: No device detected
在 SATA 端口 2 上安装 HDD...
Controller Bus#00, Device#1F, Function#02: 06 Ports, 04 Devices
Port-00: No device detected
Port-01: No device detected
在 SATA 端口 3 上安装 HDD......
Controller Bus#00, Device#1F, Function#02: 06 Ports, 04 Devices
Port-00: No device detected
Port-01: No device detected
Port-02: No device detected
在 SATA 端口 4 上安装 HDD......
Controller Bus#00, Device#1F, Function#02: 06 Ports, 04 Devices
Port-00: No device detected
Port-01: No device detected
Port-02: No device detected
Port-03: No device detected
在 SATA 端口 5 上安装 HDD......
Controller Bus#00, Device#1F, Function#02: 06 Ports, 04 Devices
Port-00: No device detected
Port-01: No device detected
Port-02: No device detected
Port-03: No device detected
Port-04: No device detected
正如您所看到的,它会在当前正在扫描的端口上停止。然后,如果我断开硬盘驱动器的连接,就会出现这个有趣的错误。
Controller Bus#00, Device#1F, Function#02: 06 Ports
No device found
AHCI BIOS not installed
AHCI BIOS 未安装
我之所以说有趣,是因为它在第一行就明确指出我使用的是“串行 ATA AHCI BIOS,版本 iSrc 1.20E”。但出于某种原因,设备扫描失败。也许这就是我看到“未安装 AHCI BIOS”错误的原因?我读过十几个关于这种错误类型的网页,但没有找到任何结论。有人说这是正常的。但首先,我知道在我的另一块主板上显示“已安装 AHCI BIOS”,这块主板来自同一制造商和同一代,也使用 Award BIOS。
我确信打印出“AHCI BIOS 未安装”是有原因的。这可能不是 BIOS 程序员认为的有趣的恶作剧,让用户认为系统有问题,而系统运行正常(即消息为“正常”)。它可能比我们大多数人想知道的要多,因为它需要大量的时间进行调查,并且需要普通用户不具备的知识水平。另一方面,BIOS 供应商和主板设计师并不关心维护旧 BIOS 固件超过 2 或 3 年(有时这比最昂贵主板的保修期还短)。相反,他们转向“下一件大事”,并希望您每年都继续购买新硬件。
如果我将 HDD 连接到 Gigabyte SATA 控制器,则会出现相同的消息(未安装 AHCI BIOS)。虽然我跳过了该屏幕。但那只是因为 Gigabyte SATA 控制器设置为 IDE 模式,并且 Windows Vista 加载。
有没有办法单独重置或重新刷新 SATA 控制器 ROM?除了主系统 BIOS 之外?“AHCI BIOS”到底是什么?它像 BIOS 扩展吗?它是主系统 BIOS 代码的一部分吗?它存储在同一个闪存芯片中吗?
此外,您对此有何看法?您对此类问题有何经验?
截图
更新 1
我检查了驱动程序,发现 pciide.sys 已启用,msahci.sys 也是如此。但 iastorv.sys 未启用。我已测试启用它并在 BIOS 设置中启用 Intel AHCI。这没有帮助。它仍然卡在 AHCI BIOS 设备检测处。
更新 2
启用相同的驱动程序(pciide.sys、msahci.sys、iastorv.sys),我测试了在 BIOS 设置中启用 AHCI 的情况下连接到 Gigabyte SATA 控制器。Windows Vista 开始加载,进度条也出现了,但不久后就遇到了 BSOD 并重新启动。它就这样一直循环。
我测试了禁用 iastorv.sys 并仅启用 msahci.sys(和 pciide.sys)。它确实有效!
一些网络论坛会告诉您在 Windows 中启用所有 AHCI 相关驱动程序(iastor.sys、iastorv.sys、msahci.sys) 以便于在 AHCI 和 IDE 之间轻松切换(我猜是为了兼容性,大多数安装中通常默认启用 pciide.sys)。但正如您所见,有时禁用其中一个或所有您不使用且不打算使用的驱动程序是更明智的做法。
虽然这是一个不同的 SATA 控制器(不是英特尔),但我开始认为这可能与驱动程序有关。
更新 3
技嘉控制器...
我现在已经安装了 Gigabyte SATA 控制器的官方驱动程序。版本为 1.17.50.2。设备管理器现在显示以下两个设备描述。
- JMB36X 标准双通道 PCIE IDE 控制器
- 技嘉 GBB36X 控制器
它似乎是基于 JMicron 芯片。
Intel SATA 控制器列为标准 AHCI 1.0 串行 ATA 控制器。忽略旁边的感叹号。那只是因为我禁用了它正在使用的 msahci.sys 驱动程序,所以它抱怨。但我在 IDE 模式下从 Gigabyte 控制器运行 Windows Vista,所以没关系。我在重新启动之前再次启用了它。
于是我重新启动并启用了 Gigabyte 控制器的 AHCI 模式,Windows Vista 正常加载。没有任何问题。我可以自信地说,Gigabyte 控制器可以在 IDE 和 AHCI(未测试 RAID,但当然可以工作)模式下工作,可以使用 Microsoft 通用 AHCI 驱动程序(msahci.sys)或 Gigabyte 控制器特定驱动程序(jraid.sys),后者实际上是 JMicron 驱动程序。
请注意,我测试过同时启用 iastorv.sys 驱动程序和 msahci.sys 驱动程序,并在 AHCI 中使用 Gigabyte 控制器启动 Windows 时,iastorv.sys 驱动程序与 msahci.sys 驱动程序发生冲突,结果出现了 BSOD。我还没有测试过,也不想用新驱动程序测试这个问题。也许现在已经解决了,也许还没有。关键是,如果在 AHCI(甚至 RAID)中使用 Gigabyte 控制器,最好禁用 iastorv.sys。
英特尔控制器...
那么该死的英特尔控制器怎么办?它会异或吗?这是个问题!
成功测试 Gigabyte 控制器后,就该测试 Intel 控制器了。我首先启用了 pciide.sys、msahci.sys,然后启用了 iastorv.sys已禁用。我使用f6flpy6489.zip
软件包手动安装了驱动程序。驱动程序版本为 8.9.0.1023。新驱动程序名为 iastor.sys,名称中没有 V。
设备管理器中的“标准 AHCI 1.0 串行 ATA 控制器”描述更改为“英特尔 (R) ICH9R/DO/DH SATA AHCI 控制器”。
我真的希望这能奏效。但事实并非如此。我关闭了 PC,将硬盘连接到英特尔控制器上的 SATA 端口 1,打开电源,再次在 BIOS 中将 SATA 模式更改为 AHCI。但我又回到了同一个该死的“未检测到设备”屏幕,无法通过它。
所以我的问题仍然存在。这是否表明英特尔控制器上负责 AHCI 功能的 ROM 已损坏或以其他方式损坏?虽然看起来只有 AHCI 功能无法运行,但控制器仍在工作。虽然处于 IDE 模式,但它仍在工作,这比完全烧毁要好。
有哪位有经验的人能发布一个答案,其中包含有关英特尔控制器的实际 ROM 位于何处的信息吗?英特尔矩阵存储有自己的可选 ROM,不是吗?此外,是否可以使用某些低级系统实用程序从此问题中恢复,而不必移除一个或多个芯片并重新编程它们,甚至用新芯片替换它们?
值得深思...
我对所发生事情的最佳猜测是,备份 BIOS 已启动并将其自身部分复制到主 BIOS 上,并且在此过程中以某种方式脱离甚至损坏了 Intel AHCI/RAID 选项 ROM。
我想象这可能发生在系统开启时,并且在 Windows Vista 向我抛出第一个或第二个错误之后,在我更改了设备启动顺序以诱骗 Vista 从 USB 闪存驱动器安装到 SATA HDD 上之后(参见 0x80070070)。
它要么发生在那时,要么发生在我第一次遇到“控制器总线...”设备扫描屏幕问题时按下重置按钮后系统立即关闭的那一刻。通常情况下,从那时起(据我观察)它通常只是重新启动,即使我按下重置按钮或向它致敬(Ctrl+Alt+Del),它也不会在那个阶段关闭。
无论如何!现在我想起来了,在这种情况下,首先启用 IDE 模式并在该模式下安装 Windows Vista 可能会更好。甚至可以使用 DVD 介质进行安装,而不是 USB 闪存驱动器。然后,当安装完成后,登录 Windows 并启用 AHCI 驱动程序,重新启动并在 BIOS 中启用 AHCI 模式。这可能刚刚起作用。在这种情况下,这可能是更好的方法,人们希望这样做。这与大多数人建议您首先在 BIOS 中启用 AHCI 的常用方法相反,如果您尚未安装 Windows。我不应该那样做。
我希望这能给其他人一个教训。我会做更多的调查,但我不想在这上面花太多时间。除非我能以某种方式将一切恢复正常,否则我认为可以肯定地说,英特尔控制器上的 AHCI 模式现在无法运行。
答案1
我遇到了描述的确切症状。我会遇到 SATA AHCI iSrc 挂起,如果我移除驱动器,它就不会挂起。
修复方法是从驱动器上擦除签名。我通过以下步骤完成此操作。
注意:擦除签名将删除所有分区,并实际上删除磁盘上的所有数据。执行此操作后,您的数据将消失。请谨慎操作。
- 拔下驱动器
- 插入带有可启动 Linux“实时” ISO 的 USB 驱动器
- 启动到 Linux ISO
- 在启动过程开始时,插入驱动器
- 运行以下命令查看要擦除的驱动器:
lsblk
- 运行以下命令擦除驱动器(将 X 替换为上面找到的驱动器号):
wipefs -a /dev/sdX
- 对所有需要擦除的驱动器重复步骤 6。
- 重启
重启后,我不再遇到挂起问题,并且能够成功安装和启动这些驱动器。因此,似乎是驱动器上的某些签名导致了挂起。