在组装NAS+HTPC一体机(见前文)提到,安装Windows Home Server时,发生蓝屏,进到BIOS将硬盘模式更改为SATA MODE才顺利安装。那么,如何才能支持AHCI吗?这个问题在互联网上有好多人在问?不过基本上没有指导性的链接。如果是新装或重装系统的话,可以在安装系统时选择驱动,这样就省去了后面好多的麻烦,前提是要先准备好驱动。有一些网友自己制作的系统安装盘已经集成了SATA驱动,这样就不需要什么额外的操作,直接安装就可以了。这种方式我没有试过,因为我是调整到SATA MODE安装的系统,这就是第二种情况,如果是已经安装了系统,那么怎么支持AHCI呢?网上众说纷纭,不仅仅针对MCP79,其他的芯片组也有类似的问题。归根结底,就是安装驱动,然后修改注册表。不过这里面有技巧。
在安装前打开注册表编辑器,记录下HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\下的所有Key,以便安装驱动之后进行对比。
在设备管理找到标准 ATA/ATAPI控制器->标准IDE控制器,右击在属性里找到更新驱动程序,点击最下面的不要搜索自己选择,选择从磁盘安装,找到驱动的路径IDE\WinXP\sata_ide,选择NVIDIA nForce Serial ATA Controller进行安装。提示重启,选择取消不要重启。
打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\下比安装驱动前多出的Key,格式类似pci#ven_10de&dev_0266&CC_0101,但不一定是dev_0266,有可能是dev_0AB5之类的。这些是硬件ID,我们就是通过更改硬件ID的方式来支持AHCI。为保险起见,看一下这个Key下面有没有nvgts的value,如果有就是这个Key,如果没有,就不是这个Key。将这个Key更改为pci#ven_10de&dev_0AB9&CC_0106。
重启电脑,不要进入系统,即使想进去,现在也进不去,会出现蓝屏。进入BIOS,将硬盘模式更改为AHCI,保存退出。如果没问题的话,系统就顺利进入,不再会出现蓝屏。进入系统后,会提示找到新硬件,选择自动安装就可以。至此,MCP79就支持AHCI了。复制了几个1G多的大文件,感觉上速度没快多少。
如果更改错误,进不了系统,怎么办呢?在启动Windows时,按F8,选择最后一次正确的启动就可以了。因此,无需担心。
本文参考了http://user.qzone.qq.com/405509912#!app=2&via=QZ.HashRefresh&pos=1313334719“芯片组 Nvidia MCP79 XP系统IDE切换AHCI蓝屏解决方案”一文,该文的整体思路完全正确,只是我按照步骤进行安装的时候,没有找到dev_0266的Key。读者可以参考上面的描述进行查找和修改。
追根究底: 安装AHCI驱动,其实是通过更改硬件ID达成目的的。通过驱动的配置文件nvgts.inf可以看到:
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_0036&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_003E&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_0054&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_0055&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_0266&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_0267&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_037E&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_037F&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_036F&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_03F6&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_03F7&CC_0101
%NVSTOR_DESC%=NVStor_Inst,PCI\VEN_10DE&DEV_03E7&CC_0101
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_044D&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_044E&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_044F&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0554&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0555&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0556&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_07F4&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_07F5&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_07F6&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_07F7&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0768&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0AD5&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0AD4&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0AB9&CC_0106
%NVSTOR_DESC%=NVStorAHCI_Inst,PCI\VEN_10DE&DEV_0AB8&CC_0106
CC_0101结尾的是SATA MODE,在安装完驱动后,未修改注册表之前,可以在设备管理器看到硬件ID是在下面CC_0101结尾的列表里的;CC_0106结尾的是AHCI MODE,我们更改注册表的目的就是让设备ID与AHCI对应起来。理论上改为CC_0106结尾列表里的其他ID应该也是可以的,我没有进行尝试。