设为首页
你的,我的,大家的Sjdn!在线投稿
注册 | 社区 | 军事
登录 | 搜索 | 投稿

bxp无盘系统网卡的pnp

字号:T|T

为变更网卡设置客户端注册表 

修改注册表以支持网卡PCI头的小变更。 

问题: 
用户报告同样的硬件平台在BXP下不能正确引导,某些客户端系统在启动进程中不确定性挂起 

原因: 
在完成对问题的检测之后,发现系统不相同,一些网络控制器的细微差异导致了此问题,这些小差异引起XP无法识别网络控制器并开始“新硬件”安装进程。 
即使芯片使用相同的软件驱动,子系统和/或修订版本的差异都可能导致XP/BXP的正确识别,下表从两个不同的系统显示出了网络控制器的PCI头信息: 
PCI信息 系统A(正常引导) 系统B(在启动时挂起) 
Vendor Id 8086 8086 
Device Id 1229 1229 
Subsystem 00000000 30008086 
Revision 08 08 

在这种情况下,子系统(Subsystem)的差异导致了这个问题,此外,如果修订版本(Revision)或其它地方的不同都将导致同样的问题再现。 

解决方法: 

解决方法需要调整注册表以“哄骗”XP以使之认为该网络控制器还是以前的网络控制器 
该解决方案假设安装了同时支持两种网卡芯片的同样软件驱动 
要执行这个解决方案,我将谈及两个单元:A和B 
A单元将有一个硬盘以用来安装XP和BXP客户端 
B单元将成为我们的问题单元(无硬盘) 
你将需要一个安装并设置好的BXP服务器 

放弃声明:该文档假设读者是一个熟悉注册表结构和组成单元(键值、键名、GUID…)并能对其进行操作的人,对注册表的不适当修改将导致系统无法启动。 
第一步:确认B单元(问题单元)的PCI设置信息 
PCI内部的设置头信息有四个部分是我们需要的:“Vendor Id、Device Id、Subsystem (Vendor and Id)和Revision Id。 
如果你不清楚这些信息,网络上可以找到相关的第三方工具,我在Canopus网站上找到了一个名为”PCIVIEW”的DOS版工具(\http://www.canopus.com/US/products/free_utilities/pm_free_utilities.asp
这是一个B单元网络控制器的PCI设置头局部截图 

(注意字节顺序是颠倒的,我将其按照随后将需要的格式重新写过了: 
Offset 0x00 & 0x01 = Vendor Id = 8086 
Offset 0x02 & 0x03 = Device Id = 1229 
Offset 0x08 = Revision Id = 08 
Offset 0x2c—0x2F = Subsystem Id = 30008086 
第二步:调整注册表 
按照通常的步骤安装和为BXP准备客户端 
1.在A单元安装XP 
2.在A单元安装BXP客户端 
3.在A单元的BIOS设置里确认从网络启动选项 
4.在BXP服务器上,设置单元A以本地硬盘优先模式启动 
5.引导A单元 
6.使用BXP映像生成器创建BXP客户端映像 
完成映像创建之后…… 
1.启动注册表编辑器(regedit) 
2.点击打开HKEY_LOCAL_MACHINE根键 
3.选择文件/加载Hive以从你刚才创建的映像文件中加载系统注册表Hive文件(Hive文件是一种包含注册表子树的文件),该Hive文件被保存在: 
(虚拟硬盘驱动器):\WINDOWS\SYSTEM32\CONFIG\SYSTEM 
4.你必须给新根键命名,举例而言,我使用的‘Client-SystemHive’ 
5. 接下来将使用的所有键都将源于此Hive文件,因此请确认你检查并调试了正确的子树。 
6.在客户端Hive文件下选择‘Select’子键: 
Client-SystemHive\Select 
检查此子键的键值,观察‘Default’值 
Client-SystemHive\Select\Default 
此值将指示当XP启动时将使用哪一个控制设置(ControlSet) 
举例而言,默认值为1,指出我们将使用“ControlSet001“ 
7.在正确的“ControlSetnnn“键下,观察“Services\BNNS\Parameters”子键 
在此例中,我们使用: 
Client-SystemHive\ControlSet001\Services\BNNS\Parameters 
8.在“Parameters”键下,抄下Interface0(0号界面)的键值,它是一个GUID(Globally Unique Identifier,全局唯一表示符). 
该GUID定义了BXP将要绑定的网卡 
在这个例子里,这里是{18F9C371-4f81-4a49-b59c-e977917a44ba} 
9.现在打开“ControlSetnnn\Control\Class\”键 
在此键下,你将看见许多名称是GUID的键 
寻找{4d36e972-e325-11ce-bfc1-08002be10318} 
检查Class键值,它将是‘Net’,如果不存在,你一定是在错误的键下查找 
打开此键并检查子键,该键的子键将是0000,0001,0002,… 
检查每一个子键知道你找到其键值为“NetCfgInstanceId”的子键,匹配第8步抄下的GUID 
记住该GUID和其索引链接,随后将用到 
在这个例子里,它是{4d36e972-e325-11ce-bfc1-08002be10318}\0001 
10.打开ControlSetnnn\Enum\PCI键 
该子键将具有如下格式: 
VEN_xxxx&DEV_xxxx&SUBSYS_xxxxxxxx&REV_xx 
从B单元里找到匹配你的Vendor ID和Device ID的键(参考第一步) 
在此例子中,它是: 
VEN_8086&DEV_1229&SUBSYS_xxxxxxxx&REV_xx 
其包含子键的每一个键值都是由许多由“&”字符间隔的一些数字组成 
在这个例子中,它是“3&61aaa01&0&30” 
查找VEN_8086&DEV_1229&SUBSYS_xxxxxxxx&REV_xx\x&xxxxxxx&x&xx键下的每一个子键 
检查这些键中的每一个键知道你找到其‘Driver’值匹配GUID和索引链接(参看第9步) 
Driver = {4d36e972-e325-11ce-bfc1-08002be10318}\0001 
11.一旦你发现匹配的‘Driver’值,选择包含匹配“Driver”条目的VENxxxx&DEV_xxxx&SUBSYS_xxxxxxxx&REV_xx键 
在我的情况下,它是 
VEN_8086&DEV_1229&SUBSYS_00000000&REV_08 
12.通过选择文件菜单的“导出”或右击并从弹出的菜单里选择“导出”输出该键 
在此例子中,它被命名为BxpPci.reg 
(不要关闭注册表编辑器,一会儿我们将回到它) 
13.用记事本打开导出文件并非常小心地作如下修改 
13.1(可选)你可以改变‘DeviceDesc’领域以使用不同文本字符显示 
"DeviceDesc"="Intel(R) 82559 Fast Ethernet LAN on Motherboard" 
I在最后增加了(Bxp) 
"DeviceDesc"="Intel(R) 82559 Fast Ethernet LAN on Motherboard (Bxp)" 
13.2从文件里删除下列键和它们的键值(如果它们存在) 
LogConf 
Control 

在此例中,它们被如下显示…… 
[HKEY_LOCAL_MACHINE\Client-SystemHive\ControlSet001\Enum\PCI\VEN_8086&DEV_1229&SUBSYS_00000000&REV_08\3&61aaa01&0&30\LogConf] 
[HKEY_LOCAL_MACHINE\Client-SystemHive\ControlSet001\Enum\PCI\VEN_8086&DEV_1229&SUBSYS_00000000&REV_08\3&61aaa01&0&30\Control] 
13.3删除下列键值 
LocationInformation 
UINumber 
在此例中,它们存在于如下键里 
[HKEY_LOCAL_MACHINE\Client-SystemHive\ControlSet001\Enum\PCI\VEN_8086&DEV_1229&SUBSYS_00000000&REV_08\3&61aaa01&0&30] 
13.4在键名中嵌入需要更改的Subsystem Id和Revision Id,它将出现在几个不同的地方,因此你必须将所有使用到Subsystem ID和Rev ID的地方全部更换为B单元的相关内容(参考你从第一步获取的信息) 
根据B单元的键值重置SUBSYS和/或REV条目 
在此例中,该键具有如下名称: 
VEN_8086&DEV_1229&SUBSYS_00000000&REV_08 
我小心地将其更改为(有三处地方更改): 
VEN_8086&DEV_1229&SUBSYS_30008086&REV_08 
14.退出记事本,保存更改。 
15.回到注册表并通过“文件”菜单里的“Import……”命令导入调试好的文件 
(如果你遇到错误,你也许需要在Enum\PCI键下设置许可,选择Enum\PCI键,然后在菜单里选择编辑\许可,同意自己为‘完全控制’然后点击OK) 
导入完成后,你将看见在Enum\PCI键下有新的键产生(你需要按“F5”以刷新注册表编辑器显示) 
17.选择[HKEY_LOCAL_MACHINE\Client-SystemHive]并从菜单里选择“文件\卸下”从而注册表里卸下(Unload)它 
18.关闭A单元 
19.在B单元的BIOS中启用‘Boot from Lan’选项 
20.将B单元设置为和A单元使用相同的虚拟硬盘映像后启动B单元 

友情提示:转载请注明出处
http://www.sjdn.net

[错误报告] [推荐] [收藏] [打印] [关闭] [返回顶部]

新闻48小时评论排行

  1. 1 怎么用displayx测电脑屏幕 评论0
  2. 2 红米9A导航建 评论0

图片新闻