微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从iSCSI启动Windows Server 2012

我正在研究如何在无盘服务器上安装各种操作系统,以便通过iSCSI运行.服务器没有特殊的硬件(没有iSCSI HBA等)

我简单地使用了Windows部署服务,但它似乎与我想要的完全相反:我可能错了,但它似乎是为了在一个系统上进行基于网络的Windows安装,然后从本地磁盘启动,而我想安装Windows,它将从iSCSI磁盘运行,我不在乎是否必须在本地插入安装媒体.因此,我目前的方法不使用WDS.

此测试是Windows Server 2012的测试,但也可能适用于以前的版本.

简而言之,我正在设置一个空白的iSCSI目标(我已经尝试了几个s / w供应商,虽然目前我正在使用StarWind,但似乎没有太大的区别),并使用PXE链接到gPXE或iPXE来做一个iSCSI启动(我已经尝试了两个,虽然我发现gPXE更容易使用,但结果相似.)

当然,如果没有操作系统,启动会失败,但它会通过BIOS磁盘接口挂起LU,这样当启动本地DVD-ROM时,安装程​​序会看到要安装的卷.

我通过下载到gPXE提示符并键入以下命令来完成启动(在iPXE中除了接口#之外相同):

dhcp net1
set keep-san 1
sanboot iscsi:#.#.#.#::::iqn.xxxxxxxxxxxxxxxxxxx
exit

Windows Server 2012似乎安装并在某些时候重新启动. iPXE开始从iSCSI启动,并出现“Metro”徽标 – 所以至少有一些东西安装到LU.然而,屏幕然后变成浅蓝色,一条消息短暂闪烁大字,有关“PC”(它实际上是一个机架服务器,但无论如何)遇到问题,但在它消失之前我无法读取它并且计算机是重新启动.

最终我得到一个标题为Windows Boot Manager的文本屏幕,其中显示

Windows Failed to start. A recent hardware or software change might be the
cause. To fix the problem:

  1. Insert your Windows installation disc and restart your computer.
  2. Choose your language settings,and then click "Next."
  3. Click "Repair your computer."

If you do not have this disc,contact your system administrator or computer
manufacturer for assistance.

    File: \Windows\system32\ntoskrnl.exe

    Status: 0xc00000e9

    Info: The operating system Couldn't be loaded because the kernel is
          missing or contains errors

那些密切关注的人会意识到这些指令很难有效地遵循,特别是在物理硬件上. (顺便说一句,我尝试过安装到物理机和虚拟机,结果相似.)

我猜这里发生的事情是Windows 2012得到了尽可能远,因为iPXE已经连接了中断13h(BIOS磁盘服务),但是一旦系统启动到足以切换到保护模式驱动程序,引导就会被粗暴地中断,因为没有硬盘可供读取和/或Windows的iSCSI启动器失败.

我正在尝试的iPXE是1.0.0(3fcb),我尝试的gPXE是1.0.1.

是否可以让Server 2012在没有硬件HBA的情况下运行iSCSI,如果是这样,我可能做错了什么?

(我的初步回答是不成熟的.正如所承诺的那样,我在完成所有工作后重写了它.)

首先,我发现一般来说,iSCSI启动软件是半生不熟的,而且涉及的不同系统的互操作性非常差.出于这个原因,我建议尽可能使用基于硬件的解决方案,例如iSCSI HBA.有了这个说我会在这里讲述我的经历,以防它帮助任何人.

总结一下我发现的内容(我假设您已经为PXE和iSCSI目标设置了DHCP和TFTP,并且已经链接到gPXE或iPXE):

> gPXE和iPXE从不将多个NIC写入iBFT(iSCSI Boot Firmware Table),这可能会影响Windows Server.我在一个单独的问题here中详细讨论了这个问题.
>除了上述设计限制外,gPXE还存在一个实际错误,同样会影响具有多个网络端口的系统.我将在下面解释.为了避免这个错误,我使用了gPXE的“UNDI only”构建.这可以防止gPXE直接访问NIC,并使其使用NIC的PXE加载程序提供的API.这使得gPXE认为只有一个网络端口(它被加载的那个),这就避免了这个错误.我不确定这个bug是否存在于较新的iPXE版本中.
>我最初对gPXE / iPXE中的keep-san选项感到困惑. keep-san标志仅在引导失败时影响gPXE的行为.因此,只有在安装开始时的第一次启动时才需要此选项.
> Windows Server(至少2012年,可能还有其他)显然不能容忍将提供系统磁盘的iSCSI启动器从一个网络端口移动到另一个网络端口.如果Windows是从与安装它的网络端口不同的网络端口上的启动器启动的,则Windows将在启动期间,在切换到MS启动器时崩溃(BSOD和/或重新启动).
> Windows Server(2003及更高版本)中存在一个公认的功能/问题,即使目标位于本地子网上,它也将使用网关(如果已指定)访问目标.如果网关不可用或者没有路由回到同一端口,则在切换到MS启动器时启动将失败.如果不需要,请确保DHCP没有给出网关设置.

我上面提到的gPXE错误涉及iBFT(iSCSI Boot Firmware Table).这是一个由预启动系统放入内存的对象,该系统包含有关NIC,iSCSI启动器和用作系统磁盘的iSCSI目标的信息.一旦切换到保护模式,操作系统就会使用此信息继续启动.格式指定为here.

怀疑信息gPXE中的问题是放在iBFT中,我编写了一个引导扇区,它将iBFT的内容转储到屏幕上.使用这个我发现gPXE写的数据在某些情况下是错误的.

如上所述,gPXE只将一条NIC记录写入iBFT,但在某些情况下,写入该NIC记录的信息会混乱. MAC地址和PCI地址将对应一个NIC,但本地IP和网关地址将对应另一个.如果SAN不在第一个NIC上,则最有可能发生这种情况.

如果gPXE自动启动,则会写入错误的iBFT信息,但是当从gPXE的命令提示符启动时,根据输入的命令的确切顺序,可能会写入正确的信息.如果它的NIC已被更改(即使给出了正确的iBFT),Windows将会出现与此错误导致的症状相同的事实,并且您可以看到我为什么撕掉我的头发.

顺便说一下,在我最初的问题中,我曾认为它适用于Server 2008 R2但不适用于Server 2012.(我正在编辑它,因为它具有误导性.)我怀疑它们的基本行为实际上没有区别,并且不同结果归咎于上述问题的微妙之处以及我测试中的微小变化.

原文地址:https://www.jb51.cc/windows/369777.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐