启动 – 无盘服务器2012上的第二个NIC“无法正常工作”
通过MS软件iSCSI启动器运行的无盘服务器2012(通过从NIC的PXE链接的gPXE启动)后,我(经过相当大的争夺).
但是,既然它正在正常启动,我还有另外一个问题(iSCSI HBA在每次拔毛时变得越来越有吸引力).服务器有一个双网卡,Windows只接受连接到SAN的网卡,让我没有局域网连接! 设备管理器显示两个NIC,但LAN的一个有感叹号,属性指示“此设备无法正常工作,因为Windows无法加载此设备所需的驱动程序.(代码31)” Windows显然确实有正确的驱动程序,因为两个端口是相同的,另一个是工作的;此外,如果我将相同的操作系统安装到相同的硬件上但安装到本地硬盘驱动器上,则它对NIC没有任何问题.如果我告诉它寻找一个更好的驱动程序,它只是转过来说驱动程序是好的,这并不奇怪. 我非常肯定我知道这里发生了什么,这要归功于这次冒险中的前一章. 预引导程序(在这种情况下为gPXE)必须将iBFT(iSCSI引导固件表)写入内存,然后由操作系统(在本例中为Windows)选取.此表提供了NIC的列表.对于每个,它指定PCI总线和设备#,MAC地址和IP信息. 我知道从检查它的源代码(以及我开发的用于转储iBFT的一个小工具)gPXE by design / laziness只会将一个NIC写入iBFT,即使该标准允许其中大约240个.即使它确实编写了多个NIC,我仍然会在同一条船上,因为其他gPXE / iPXE问题迫使我使用仅限UNDI的版本,这意味着它甚至不知道其他的NIC. 我想这里发生的事情是,Windows正在查看iBFT,并且 – 即使它知道其他设备管理系统中存在的NIC – 正在决定它不能被使用,因为它不在iBFT中.我不知道为什么会这样做. 是否有某种方法可以诱使Windows使用其他NIC,即使它不在iBFT中?或者,是否有一些iSCSI预引导程序实际上正常工作?还是有完全不同的解释?
我终于到底了,并设法让它运作起来.但是,在此过程中,我得出结论,Windows,gPXE和iPXE中的iSCSI启动功能都是半生不熟的.我将分享对我有用的方法,以防它帮助其他人,但请注意一些警告:
>这是一个糟糕的解决方案.基于硬件的解决方案(例如iSCSI HBA)将提供更好的性能和稳健性,并且设置起来将更加容易. 在我继续之前,我想澄清一下,无论何时我说“NIC”,我指的是Windows认为单个“设备”,但实际上只能是实际NIC上的几个端口之一.该术语与iBFT标准本身和iPXE / gPXE一致. Windows在其iSCSI启动器上启动时,对iBFT有一些非常挑剔的要求(‘iSCSI启动解决方案’在调用Windows启动加载程序之前写入内存的表,它告诉它如何访问iSCSI LU).我已经能够拼凑出一些“陷阱”规则(在您的特定情况下可能会或可能不会): >如果iBFT中没有NIC,Windows将无法使用它.它将表现出问题中给出的症状. 第一条规则就是擦. gPXE 1.0.0和2013年1月31日的继承者iPXE都没有向iBFT写入多个网卡,即使他们知道有多个网卡也是如此.我通过检查他们的源代码验证了这一点. 我的hacky解决方案是获取iPXE源代码树,并修改程序,使其将第二个NIC部分写入iBFT,对应于我服务器中的另一个NIC(我没有启动的NIC.)我刚刚硬连接了MAC地址和PCI地址.我发现没有必要将IP内容放入NIC的部分 – 只需将其全部归零,Windows将在稍后的启动时分配它. (请注意,需要为SAN NIC编写IP内容,但iPXE已编码为执行此操作.) 通过使用#define,可以将实际地址输入到一些方便的位置,而不必在每次想要更改源代码时进行挖掘. 如果进行此更改,请注意NIC部分的标头中有一个索引字节. iPXE代码不接触这些(尽管它在结构中给出),因为它永远不会写入多个NIC,但是如果你编写第二个NIC,则需要将其索引字节设置为1,否则Windows将不开心 此解决方案的明显缺点是您必须为每个服务器重新编译iPXE,在TFTP服务器上保留这些单独版本的iPXE,并配置PXE服务器以向每个服务器发出不同的引导程序. 需要一些C编程知识来进行初始更改,以及Linux发行版和GNU开发工具. iBFT格式指定为here. 我希望我可以在这里发布我的更改,但实际上我最终改变了一个非常旧的版本,ipxe.org网站欺骗我下载. (显然,他们从不标记稳定的版本;我已经知道主分支上的所有版本都是稳定的.)我宁愿不鼓励任何人使用这样的旧版本. 最新版本仍然具有相同的限制.我将把它转发到他们的开发列表中,希望它能得到修复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- vbscript – 在Windows上使用VBS处理MS Word
- windows – SSDT挂钩x64系统中的替代品
- 在Windows 7 Home Basic上安装IIS
- Window下的Laravel环境配置
- Windows 10 IoT蓝牙LE
- 权限 – 具有管理员的新文件的文件所有权 – 为什么它为组管
- assembly – Windows汇编程序和汇编程序编译器的指南
- microsoft-graph – Microsoft Graph Webhook缺少ClientSta
- 他为’Microsoft.WindowsAzure.ServiceRuntime.RoleEnviron
- windows-server-2008 – 当Exchange信息存储服务停止时,会受