续Provisioning Services 7.8 入门系列教程之十三 使用 Boot Device Management(BDM)

UEFI,全称Unified Extensible Firmware Interface,即“统一的可扩展固件接口”,是一种详细描述全新类型接口的标准,是适用于电脑的标准固件接口,旨在代替BIOS(基本输入/输出系统)。此标准由UEFI联盟中的140多个技术公司共同创建,其中包括微软公司。UEFI旨在提高软件互操作性和解决BIOS的局限性。

相比传统的BIOS启动,UEFI启动如下特点:

1、通过保护预启动或预引导进程,抵御bootkit***,从而提高安全性。    
2、缩短了启动时间和从休眠状态恢复的时间。    
3、支持容量超过2.2 TB的驱动器。

要使用UEFI启动计算机,需要硬件和操作系统都支持。目前的电脑硬件(主要是主板)基本上都同时支持两种启动方式,Windows 2003,XP等一些操作系统不支持UEFI安装,Windows 2012,Windows 10等操作系统支持。

一、PVS对UEFI的支持

应该说,在实际生产环境中可能会出现两种启动方式并存的现象,而这两种启动方式需要下载的引导程序是不一样的。传统的启动方式需要ardbp32.bin文件,面UEFI启动需要的是pvsnbpx64.efi

在以前的版本的PVS中,两种引导文件的同时出现,给网络拓扑带来了一定的复杂性。因为在同一个作用域下,DHCP服务器只能设置一个引导文件名(067选项)。因此,为了满足实际的需要,用户

只能从以两种方式进行解决:

1、如果选择了 DHCP 选项 67,则存在两个拓扑选项:

在单个段上,使用 DHCP 预留为每个目标设备指定引导程序文件名(选项 67)。 这适用于较小的环境,但可以快速扩展以适用于企业环境。

将环境分为多个段,将旧版设备与 UEFI 设备隔离开来。 对于每个段,在DHCP服务器中建立一个作用域,通过设置的相应选项 67 。

2、用户也可以建立BootPTAB数据库的方式,来区分每台设备的启动方式。关于这一点,见后面的BootPTAB文件介绍。

 

针对这两种启动方式并在的现象,PVS 7.8提供了很好技术支持。用户只需要在DHCP作用域选项中建立相应选项:

建立DHCP 选项 11 – RLP 服务器

选项 11 允许您指定多个 IPv4 地址。使用此选项可在 Provisioning Services 服务器上指定流 NIC 的地址。 可以指定四个以上的地址。 UEFI 引导程序将读取所有地址,然后使用轮循机制选择一个要连接到的地址。

注意:选项 17 的优先级高于选项 11。

建立DHCP 选项 17 – 引导路径

“引导路径”选项通常与 iSCSI 结合使用以指定要启动的服务器和虚拟磁盘。 Provisioning Services 使用以下格式指定服务器地址:

pvs:[:17:]

pvs – 所需的标识符

IPv4 – Provisioning Services 服务器上的流 NIC 的地址

17 – UDP 的协议标识符(如果指定了登录端口,则需要此参数)

port – 登录端口(如果使用默认端口 6910,则不需要此端口)

示例:

pvs:192.168.0.213

pvs:192.168.0.213:17:7800

 

为了熟悉操作过程,笔者在Hyper-v新增一台虚拟机作为目标设备,安装了Windows 2012 R2,并生产映像,虚拟磁盘为Win12U.

注意,为了实现UEFI启动,应选择的虚拟机的代数为“第二代”。

DSS061

其他过程略。

结果与问题:

笔者新建了一台虚拟机,作为测试设备,并在增加到PVS中。通过网络启动后,如下图

DSS060

 

从上图中可以看出,设备下载了引导文件pvsnbpx64.efi。

但未能正常启动设备,总出现如下错误:

BNIStack failed, network stack could not be initialized

通过在网络上查询,得到的解决方法:删除设备管理器的隐藏网络适配器。

然而笔者通过多次增多不能成功。

有趣的是,尽管其他新增设备不能启动,但将原来目标设备(产生UEFI映像的设备)直接改成从虚拟磁盘启动,可以成功。

所以笔者最终认为,这有可能是在Hyper-V虚拟环境下,硬件的问题。

以上故障希望广大网友帮助解决。

二、关于BOOTPTAB 编辑器

用户可以使用 BOOTPTAB 文件可将目标设备与特定的引导程序相关联。BOOTPTAB 编辑器是用于在 BOOTPTAB 数据库文件中创建、编辑和维护条目的实用程序。

 

BOOTPTAB 文件的格式如下:

:ha=:ar=:bf=

 

示例:

host001:ha=001122334455:ar=0:bf=ardbp32.bin

host002:ha=554433221100:ar=7:bf=pvsnbpx64.efi

如果缺少体系结构标志,则默认值为 0。

 

“ar”标记指定目标设备的引导环境的体系结构。

当ar=0,体系结构为x86 BIOS,引导程序名为ardbp32.bin;

当ar=6,体系结构为x86 UEFI,引导程序名为pvsnbpia32.efi;

当ar=7,体系结构为x64 UEFI,引导程序名为pvsnbpx64.efi;

 

ha=MAC地址,在 PXE 环境中,有时使用通配符来表示多组客户端 PC 的 MAC 地址,这样无需获取单个 12 位地址。

bf=引导程序名。

 

至此,整个系列教程终于完成。正如笔者在前面所写到的那样,整个教程没有、也不想有太多理论,其实笔者也不懂太多理论。只想突出实际操作,记录部署过程。

只希望对那些和“过去的我”一样,心怀IT梦想的“那些人”,有所帮助,如此足矣!