BIOS 和 UEFI 共存

From FOG Project

跳转到： 导航， 搜索

内容
[隐藏]

1个 一般的

2个 使用 Linux DHCP

2.1 示例 1

2.2 示例 2

2.3 ISC-DCHP 静态 IP 地址和其他东西

3个 使用代理 DHCP (dnsmasq)

4个 使用 Windows Server 2012（R1 及更高版本）DHCP 策略

4.1 步骤1

4.2 第2步

4.3 步骤 3

4.4 步骤4

4.5 步骤 5

4.6 步骤 6

4.7 步骤 7

4.8 步骤 8

4.9 步骤 9

4.10 步骤 10

5个 使用使用 DHCP 供应商预定义选项的 Windows Server 2008（及更早版本）

6个 使用 OS X DHCP

6.1 此处步骤

7 构建自定义 DHCP 类以与 FOG 共存

8个 相关资源

一般的

要使多个不同客户端平台的网络引导成为可能，您必须为这些客户端提供足够的引导映像。为了能够区分不同的平台，DHCP 服务器需要利用客户端发送的信息。根据RFC 4578 “已请求以下预启动架构类型”（由 RFC）：

类型架构名称
---- ------------------
0 英特尔 x86PC
1 个 NEC/PC98
2 电喷安腾
12 月 3 日阿尔法
4 弧 x86
5 英特尔精益客户端
6 电喷 IA32
7 EFI BC（EFI字节码）
8 EFI Xscale
9 电喷 x86-64

FOG 随附了不同的文件，这些文件经过预配置以适用于这些不同的架构类型。它们通常位于 /tftpboot 目录中。以下是关于它们的更多信息：文件名信息

使用 Linux DHCP

根据这篇文章，有（至少）三种不同的方式来配置 ISC DHCP 服务器：http://www.syslinux.org/archives/2014-October/022683.html

编辑 /etc/dhcp/dhcpd.conf 并将“权威”选项添加到您的子网定义和配置中任意位置的以下类：

子网 ... {
权威性;
...
}
...

类“pxeclient”{
如果子字符串（选项供应商类标识符，0、9）=“PXEClient”则匹配；

if substring (option vendor-class-identifier, 15, 5) = "00000" {
# BIOS客户端
文件名“undionly.kpxe”；
}
elsif substring (option vendor-class-identifier, 15, 5) = "00006" {
# EFI 客户端 32 位
文件名“ipxe32.efi”；
}
别的 {
# 默认为 EFI 64 位
文件名“ipxe.efi”；
}
}

示例 1

这是一个完整的配置示例，其中 TFTP 和 DNS 在同一台服务器上。此配置中未定义任何路由器，但可以通过更改 XXXX 并取消注释该行来轻松添加。

选项空间 PXE；
选项 PXE.mtftp-ip code 1 = ip-address;
选项 PXE.mtftp-cport 代码 2 = 无符号整数 16；
选项 PXE.mtftp-运动代码 3 = 无符号整数 16；
选项 PXE.mtftp-tmout 代码 4 = 无符号整数 8；
选项 PXE.mtftp-延迟代码 5 = 无符号整数 8；
选项 arch 代码 93 = 无符号整数 16；#RFC4578

使用主机声明名称；
ddns-update-style 临时；
忽略客户端更新；
下一个服务器 192.168.1.1；
权威性;

子网 192.168.1.0 网络掩码 255.255.255.0 {
选项子网掩码 255.255.255.0；
范围动态 bootp 192.168.1.10 192.168.1.254；
默认租用时间 21600；
最长租用时间 43200；
选项域名服务器 192.168.1.1；
#option 路由器 xxxx；

类“UEFI-32-1”{
匹配 if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006";
文件名“i386-efi/ipxe.efi”；
}

类“UEFI-32-2”{
match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00002";
文件名“i386-efi/ipxe.efi”；
}

类“UEFI-64-1”{
匹配 if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007";
文件名“ipxe.efi”；
}

类“UEFI-64-2”{
匹配 if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00008";
文件名“ipxe.efi”；
}

类“UEFI-64-3”{
匹配 if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009";
文件名“ipxe.efi”；
}

类“遗产”{
匹配 if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000";
文件名“undionly.kkpxe”；
}

}

示例 2

这是 10.0.0.0/24 网络的另一个完整示例设置，其中 10.0.0.3 是 TFTP 服务器，10.0.0.1 是路由器，10.0.0.1 是 DNS 服务器。此配置的范围设置为 10.0.0.20 到 10.0.0.254。

选项空间 PXE；
选项 PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16; # RFC4578

use-host-decl-names on;
ddns-update-style interim;
ignore client-updates;
next-server 10.0.0.3;
authoritative;

subnet 10.0.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.0.20 10.0.0.254;
default-lease-time 21600;
max-lease-time 43200;
option domain-name-servers 10.0.0.1;
option routers 10.0.0.1;

class "UEFI-32-1" {
match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006";
filename "i386-efi/ipxe.efi";
}

class "UEFI-32-2" {
match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00002";
filename "i386-efi/ipxe.efi";
}

class "UEFI-64-1" {
match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007";
filename "ipxe.efi";
}

class "UEFI-64-2" {
match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00008";
filename "ipxe.efi";
}

class "UEFI-64-3" {
match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009";
filename "ipxe.efi";
}

class "Legacy" {
match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000";
filename "undionly.kkpxe";
}

}

如果您也有 Mac OS 客户端，您可能想看看这个：FOG_on_a_MAC#architecture

重新启动 DHCP 服务，一切顺利！

ISC-DCHP 静态 IP 地址和其他东西

以下是一些基于 MAC 地址的专门定义选项的示例。这些将放在您的 dhcpd.conf 文件的最后。您可以使用 MAC 匹配来分发静态 IP 地址或特定的引导选项。

#只需根据MAC地址设置一个静态IP。“Optiplex380”是建议的主机名
# 据我所知，只有 Linux 尊重这一点并将其提供给用户进行确认。

主机 Optiplex380 {
硬件以太网 F0:4D:A2:22:6E:2C；
固定地址 10.0.0.6；
}

#为这台电脑定义一个静态IP和一个特定的启动文件。

主机雾{
硬件以太网 00:13:72:AB:FD:7C；
固定地址 10.0.0.3；
文件名“My_Custom_Boot_File.kkpxe”；
}

#Make 这个接入点使用谷歌的 DNS。

主机 TP-Link-接入点 {
硬件以太网 C4:E9:84:7D:F0:2E;
选项域名服务器 8.8.8.8；
}

使用代理 DHCP (dnsmasq)

相关文章：使用 dnsmasq 的 ProxyDHCP

dnsmasq 的配置语法中有强大的匹配规则。这是一个示例，说明如何使用它来区分 BIOS 和 UEFI。注意：这在代理模式下不起作用！！

dhcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,undionly.kpxe,xxxx,xxxx # xxxx = TFTP/FOG 服务器 IP

dhcp-match=set:efi32,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32,i386-efi/ipxe.efi,xxxx,xxxx # xxxx = TFTP/FOG 服务器 IP

dhcp-match=set:efibc,60,PXEClient:Arch:00007
dhcp-boot=tag:efibc,ipxe.efi,xxxx,xxxx # xxxx = TFTP/FOG 服务器 IP

dhcp-match=set:efi64,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64,ipxe.efi,xxxx,xxxx # xxxx = TFTP/FOG 服务器 IP

使用 Windows Server 2012（R1 及更高版本）DHCP 策略

下面的方法假定您的正常范围选项 066 和 067 已经设置为基于 BIOS 的网络引导（如果没有设置这些，下面的步骤将不会成功）。以下 DHCP 策略仅适用于基于 UEFI 的网络引导。常规的基于 BIOS 的网络引导仍将使用作用域中设置的默认作用域选项。

您可以在第 3 步的 ASCII 字段中替换您需要的任何供应商类标识符。

步骤1

右键单击 IPv4，然后选择“定义供应商类别”。

第2步

步骤 3

在这里，显示名称和描述并不重要，但应该描述它的作用。

重要的是“ASCII”字段。在此字段中，您将准确地键入以下内容，因为它区分大小写：

PXEClient:Arch:00007

当您输入此内容时，ID 和 Binary 字段将自动更新。完成后，单击确定，确定，确定以完成这部分过程。

注意：
除了“PXEClient:Arch:00007”之外，还有许多其他 UEFI 架构。

“PXEClient:Arch:00002”和“PXEClient:Arch:00006”都应将“i386-efi/ipxe.efi”作为其选项 067 引导文件。

“PXEClient:Arch:00008”、“PXEClient:Arch:00009”和“PXEClient:Arch:00007”应该将“ipxe.efi”作为其选项 067 引导文件。

“PXEClient:Arch:00007:UNDI:003016”应该得到“ipxe7156.efi”这个文件是特定于 Surface Pro 4 的。

为了支持这些其他架构，只需为每个架构重新运行 Server 2012 步骤，相应地为每个架构设置匹配（第 3 步）和引导文件，并更改名称以反映它们的内容。

步骤4

在 IPv4 -> Scope -> Policies 下，右键单击“Policies”并选择“New Policy...”

步骤 5

步骤 6

步骤 7

步骤 8

步骤 9

步骤 10

使用使用 DHCP 供应商预定义选项的 Windows Server 2008（及更早版本）

此尝试未成功。Server 2008 的设置与 Windows Server 2012 非常相似。您将创建一个供应商类别并使用与上述 Server 2012 和 ISC-DHCP 中使用的供应商标识符相同的供应商标识符，然后您将为该类别设置供应商预定义选项。理解是您将选项 066 和 067 硬编码到您的自定义供应商类中，然后可以在为该类创建它们之后对其进行配置，然后在您的服务器选项或范围选项上启用它们。

但是 -到目前为止，FOG 社区中还没有人成功做到这一点。如果你有它的工作，请在论坛中
告诉我们。

这里有一些不成功的步骤的图片，也许他们可以提供帮助。

右键单击以创建供应商类。使用目标供应商类标识符设置类。为新类设置预定义选项。在下拉列表中选择正确的类并单击添加。设置选项 66 和 67。为类创建选项后，您可以在预定义选项和值窗口中设置它们的值。在范围选项或服务器选项的高级选项卡下启用这两个选项。

使用 OS X DHCP

此处步骤

请在此处列出 OS X 步骤。

构建自定义 DHCP 类以与 FOG 共存

配置 ISC-DHCP 和 Windows Server 2012 以支持在同一网络上同时使用 FOG 和其他设备（如 IP 电话或 Apple 产品）配置进行网络引导是可能且容易的。您只需使用 Wireshark 来检查从设备广播的 DHCP 请求并检查它的选项 060。这将是一个字符串。然后，您将为该设备创建一个供应商类，并在 Windows 066 和 067 中的 ISC-DHCP 下一个服务器和文件名中为其提供正确的选项。

在 IPXEClient 体系结构的 ISC-DHCP 示例中，您看到0, 20，这意味着从字符零开始字符串比较并在起始位置后 20 个字符结束。您可以从 15 甚至 20 开始，但下一个数字定义了要比较的距离。

例如，旧版客户端在其 DHCP 请求选项 060 中发送：

PXEClient:Arch:00000

要将此字符串与类匹配，以下任何一个都可以：

匹配 if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000";

如果 substring(option vendor-class-identifier, 15, 5) = "00000" 则匹配；

如果 substring(option vendor-class-identifier, 19, 1) = "0" 则匹配；

显然，您用于比较的次数越少，由于不匹配，DHCP 向网络上的各种设备发出错误选项的机会就越大。

例如，此行会（错误地）匹配以下 IP 电话的选项 060：

如果 substring(option vendor-class-identifier, 19, 1) = " 0 ";
匹配

“思科 VOIP 电话 00 0 562”

它还会匹配这个字符串：

“PXEClient:Arch:0000 0 ”

因为第 20 个字符是零，所以使用上述配置的 IP 电话将被匹配并给出定义的选项而不是正确的选项。我编写这个示例只是为了说明如果匹配受限过多，则类不匹配的可能性。

在 Windows Server DHCP 中，您无法像在 ISC-DHCP 中那样进行匹配，但是您可以在设置供应商类时定义您喜欢的字符串值。

相关资源

与 ISC-DHCP 相关的文章

BIOS 和 UEFI 共存

使用 dnsmasq 的代理 DHCP

MAC 上的雾

Fedora 21 服务器#验证 Fedora DHCP 配置（if_using_DHCP）

启动/停止/启用/禁用

配置DHCP

Retrieved from "https://wiki.fogproject.org/wiki/index.php?title=BIOS_and_UEFI_Co-Existence&oldid=12610"

导航菜单

Personal tools

登录

Namespaces

页

讨论

Variants

Views

读

查看源代码

查看历史

More

搜索

Navigation

主页

雾主页

近期变动

学分

文档

雾用户指南

管理雾

工作硬件

有问题的设备

常见问题解答/故障排除

知识库

其他信息

支持迷雾

感言

以 FOG 为特色的文章

视频教程

专用工具

multiupload-toolbox（“上传多个文件”）。

工具

这里有什么链接

相关变化

上传文件

特殊页面

可打印的版本

永久链接

页面信息

此页面最后编辑于 2020 年 2 月 8 日 10:25。

隐私政策

关于 FOG 项目

免责声明

原文

提供更好的翻译建议