跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 部署指南 / 设置安装服务器 / 准备网络引导环境
适用范围 SUSE Linux Enterprise Server 15 SP2

17 准备网络引导环境

本章介绍如何配置 DHCP 和 TFTP 服务器,以提供所需的基础结构来通过 PXE 进行引导。

可以通过预引导执行环境 (PXE) 安装 SUSE® Linux Enterprise Server。客户端硬件需支持通过 PXE 引导。网络需要提供 DHCP 服务器和 TFTP 服务器,以向客户端提供所需的数据。本章将引导您设置所需的服务器。

PXE 只会引导内核和 initrd。可以使用此方法引导进入安装环境或在线系统。要设置安装源,请参见第 16 章 “设置网络安装源

此部分讨论复杂引导场景中需要的配置任务。其中包含了 DHCP、PXE 引导、TFTP 和网络唤醒的“准备应用”配置示例。

这些示例假设 DHCP、TFTP 和 NFS 服务器驻留在 IP 为 192.168.1.1 的同一计算机上。所有服务都可以驻留在不同的计算机上,且不会产生任何问题。请务必根据需要更改 IP 地址。

17.1 设置 DHCP 服务

DHCP 服务器为网络客户端提供动态(第 17.1.1 节 “动态地址指派”)和静态 IP 地址指派(第 17.1.2 节 “指派静态 IP 地址”)。它会播发服务器、路由和域。对于 TFTP 服务器,DHCP 还提供内核和 initrd 文件。需要装载哪些文件取决于目标计算机的体系结构,以及使用的是传统 BIOS 还是 UEFI 引导方式。客户端会在其 DHCP 请求中传输其体系结构类型。DHCP 服务器根据此信息确定必须下载哪些文件用于引导。

警告
警告:PXE 和 AutoYaST 安装失败

从 SUSE Linux Enterprise 15.0 开始,某些特殊情况会导致 PXE 引导失败以及 AutoYaST 安装失败。有关详细信息和解决方法,请参见第 17.1.3 节 “PXE 和 AutoYaST 安装失败”

17.1.1 动态地址指派

以下示例演示如何设置一个向客户端动态指派 IP 地址,以及播发服务器、路由器、域和引导文件的 DHCP 服务器。

  1. root 登录到主管 DHCP 服务器的计算机。

  2. 通过执行 systemctl enable dhcpd 启用 DHCP 服务器。

  3. 向位于 /etc/dhcpd.conf 的 DHCP 服务器配置文件中的子网配置追加以下几行:

    # The following lines are optional
    option domain-name "my.lab";
    option domain-name-servers 192.168.1.1;
    option routers 192.168.1.1;
    option ntp-servers 192.168.1.1;
    ddns-update-style none;
    default-lease-time 3600;
    
    # The following lines are required
    option arch code 93 = unsigned integer 16; # RFC4578
    subnet 192.168.1.0 netmask 255.255.255.0 {
     next-server 192.168.1.1;
     range 192.168.1.100 192.168.1.199;
     default-lease-time 3600;
     max-lease-time 3600;
     if option arch = 00:07 or option arch = 00:09 {
       filename "/EFI/x86/grub.efi";
     }
     else if option arch = 00:0b {
       filename "/EFI/aarch64/bootaa64.efi";
     }
     else  {
       filename "/BIOS/x86/pxelinux.0";
     }
    }

    此配置示例在 IP 为 192.168.1.1 的服务器上,使用包含 DHCP、DNS 和网关的子网 192.168.1.0/24。确保根据网络布局更改所有 IP 地址。关于 dhcpd.conf 中可用选项的更多信息,请参见 dhcpd.conf 手册页。

  4. 执行 systemctl restart dhcpd 重启动 DHCP 服务器。

17.1.2 指派静态 IP 地址

DHCP 服务器还可以向网络客户端指派静态 IP 地址和主机名。一个用例是向服务器指派静态地址。另一个用例是仅限指派有静态 IP 地址且不提供动态地址池的客户端加入网络。

根据以下示例修改上述 DHCP 配置:

group {
 host test {
   hardware ethernet MAC_ADDRESS;
   fixed-address IP_ADDRESS;
   }
}

host 语句指派安装目标的主机名。要将主机名和 IP 地址绑定到特定主机,必须指定客户端的硬件 (MAC) 地址。请将此示例中使用的所有变量替换为与您的环境匹配的实际值,然后保存更改并重启动 DHCP 服务器。

17.1.3 PXE 和 AutoYaST 安装失败

从 SUSE Linux Enterprise 15.0 和 ISC DHCP 4.3.x 开始,某些特殊情况会导致 PXE 引导失败以及 AutoYaST 安装失败。如果您的 DHCP 服务器没有可用的动态 IP 地址池,只允许在每个客户端上使用预定义的静态地址,并且客户端发送 RFC 4361 客户端标识符,那么,PXE/AutoYaST 安装将无法正常进行。(仅允许指派给特定网络客户端的地址且不提供动态地址池,会阻止随机计算机加入网络。)

当某个新系统在 PXE 中启动时,它会使用基于硬件类型以及网络接口 MAC 地址构建的客户端标识符,将一个请求发送到 DHCP 服务器和标识符本身。这是一个 RFC 2132 客户端 ID。然后,DHCP 服务器提供指派的 IP 地址。接下来装载安装内核,并发送另一个 DHCP 请求,但此客户端 ID 不同,它是以 RFC 4361 格式发送的。DHCP 服务器不会将此 ID 识别为相同的客户端,而是查找一个可用的动态 IP 地址,但此地址不可用,因此安装将会停止。

解决方法是将客户端配置为发送 RFC 2132 客户端 ID。要在安装期间发送 RFC 2132 客户端 ID,请使用 linuxrc 传递以下 ifcfg 命令:

ifcfg=eth0=dhcp,DHCLIENT_CLIENT_ID=01:03:52:54:00:02:c2:67,
DHCLIENT6_CLIENT_ID=00:03:52:54:00:02:c2:67

传统上在以太网中使用的 RFC 2132 DHCPv4 客户端 ID 是基于硬件类型(01 表示以太网)后接硬件地址(MAC 地址)构建的,例如:

01:52:54:00:02:c2:67

在识别到某台计算机包含多个网络接口时,RFC 4361 DHCPv4 客户端 ID 会尝试纠正问题。新 DHCPv4 客户端 ID 的格式与 DHCPv6 客户端 ID 相同。此 ID 以 0xff 前缀(而不是硬件类型)开头,后接 DHCPv6 IAID(描述计算机上的接口的接口地址关联 ID),再后接用于唯一标识计算机的 DHCPv6 DHCP 唯一标识符 (DUID)。

如果使用上述基于硬件类型和基于硬件地址的 DUID,新的 RFC 4361 DHCPv4 客户端 ID 将是:

  • 将 MAC 地址的最后几个字节用作 IAID:ff:00:02:c2:67:00:01:xx:xx:xx:xx:52:54:00:02:c2:67

  • 当 IAID 是简单的递增编号时:ff:00:00:00:01:00:01:xx:xx:xx:xx:52:54:00:02:c2:67

DUID 链接层时间戳 (DUID-LLT) 中的 xx:xx:xx:xx 是创建时间戳。DUID 链接层 (DUID-LL) (00:03:00:01:$MAC) 没有时间戳。

有关使用 linuxrc 的详细信息,请参见《AutoYaST Guide》(AutoYaST 指南)。另请参见 man 4 initrd,以及 man 5 wicked-configwicked duid --helpwicked iaid --help 中有关选项 dhcp4 "create-cid"dhcp6 "default-duid" 的文档。

17.2 设置 TFTP 服务器

以下过程说明如何准备服务器,以便能够使用通过 TFTP 导出的文件远程引导采用 UEFI 和 BIOS 的客户端计算机。

17.2.1 安装 TFTP 服务器

要安装 TFTP 服务器,请执行以下过程:

  1. 安装 tftp 包。

    tux > sudo zypper in tftp
  2. 检查 /etc/sysconfig/tftp 中的 tftpd 配置,并根据需要添加或更改选项。有关更多细节,请参见 man 8 tftpd。不更改该配置,TFTP 守护程序也可正常工作。文件的默认根目录为 /srv/tftpboot

  3. 确保 tftpd 在引导时已启动,并重启动它以读取新配置。

    tux > sudo systemctl enable tftp.socket
    tux > sudo systemctl restart tftp.socket

17.2.2 安装引导文件

SUSE Linux Enterprise Server 提供在 BIOS 或 UEFI 计算机上通过 PXE 引导所需的文件。支持以下硬件体系结构:

  • AMD64/Intel 64

  • AArch64

  • POWER

  • IBM Z

从特定硬件体系结构引导所需的文件已包含在某个 RPM 包中。请在运行 TFTP 服务器的计算机上安装此包:

tux > sudo zypper in tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE

请将 OS_VERSION 替换为 SUSE Linux Enterprise Server 安装版本号(例如 SLE-15-SP2-x86_64),将 ARCHITECTURE 替换为系统的体系结构(例如 x86_64)。因此,生成的文本如下所示: tftpboot-installation-SLE-15-SP2-x86_64 运行 zypper se tftpboot 来搜索所有可用版本和体系结构。

文件将安装在 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE 中。您也可以将 SUSE Linux Enterprise Server 的其他版本和体系结构的相应文件复制到 /srv/tftpboot 目录。

提示
提示:为不同的体系结构提供服务

客户端和服务器硬件体系结构可能不同。例如,您可以通过安装以下包,运行 AMD64/Intel 64 TFTP 服务器并为 AArch64 客户端计算机提供可引导环境: tftpboot-installation-SLE-15-SP2-aarch64 包。

注意
注意:现有的 /srv/tftpboot/ 目录

如果您的计算机上已存在目录 /srv/tftpboot/,则所有文件将安装到 /usr/share/tftpboot-installation/。如果您正在从旧版 SLES 升级 PXE 服务器,就会采用这种安装方式。

要修复此问题,请将 /usr/share/tftpboot-installation/ 中的文件手动复制到 /srv/tftpboot/。或者,去除 /srv/tftpboot/ 并重新安装 tftpboot-installation-SLE-OS_VERSION-ARCHITECTURE 包。

17.2.3 配置 PXELINUX

在编辑器中打开 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/default 文件。根据第 16 章 “设置网络安装源中所述的设置替换 install 参数的路径。另外,请将 TFTP_SERVER 替换为 TFTP 服务器的 IP 地址。有关 PXELINUX 配置选项的概述,请参见第 17.3 节 “PXELINUX 配置选项”

default linux

# install
label linux
  ipappend 2
  kernel boot/ARCHITECTURE/loader/linux
  append initrd=boot/ARCHITECTURE/loader/initrd instsys=tftp://TFTP_SERVER/SLE-OS_VERSION-ARCHITECTURE/boot/ARCHITECTURE/root install=PROTOCOL://SERVER_IP:/PATH

display  message
implicit 1
prompt  1
timeout  50

有关 append 行中使用的引导参数的细节,请参见第 7.3 节 “重要引导参数列表”

如果需要,请编辑 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/message,以在引导菜单中显示讯息。

17.2.4 使用 GRUB2 为 EFI 准备 PXE 引导

您无需更改 GRUB2 配置文件。但是,默认设置中未提供安装系统的网络源。如果您要完全通过网络来安装 SUSE Linux Enterprise Server,请将 install 参数添加到 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/EFI/BOOT/grub.cfg 文件中的 linuxefi 行内。根据第 16 章 “设置网络安装源中所述设置 install 参数。有关 efilinux 行中使用的其他引导参数的细节,请参见第 7.3 节 “重要引导参数列表”

17.3 PXELINUX 配置选项

此处列出的选项是 PXELINUX 配置文件中所有可用选项中的一部分。

APPEND OPTIONS

将一个或多个选项添加到内核命令行。添加的这些选项对自动引导和手动引导都适用。这些选项添加在内核命令行的最前面,通常允许用显式输入的内核选项覆盖它们。

APPEND -

不追加任何选项。在 LABEL 段中用一个连字符作为参数的 APPEND 可用于覆盖全局 APPEND

DEFAULT KERNEL_OPTIONS...

用于设置默认内核命令行。如果 PXELINUX 自动引导,则该选项的作用相当于已在引导提示符处输入了在 DEFAULT 后输入的所有内容(表示自动引导的 auto 选项除外,它是自动添加的)。

如果配置文件不存在或其中未定义 DEFAULT 项,则默认使用内核名称linux且不带任何选项。

IFAPPEND 标志

根据标志值将特定项添加到内核命令行。只有 PXELINUX 提供 IFAPPEND 项。标志需赋一个值,具体如表 17.1 “从 IFAPPEND 中生成并添加内核命令行选项。”所述:

表 17.1︰ IFAPPEND 中生成并添加内核命令行选项。

自变量

生成内核命令行/说明

1

ip=CLIENT_IP:BOOT_SERVER_IP:GW_IP:NETMASK

根据从 DHCP//BOOTP 或 PXE 引导服务器输入的内容替换占位符。

注,此选项不可替换为在引导系统中运行 DHCP 客户端。若不定期更新,PXE BIOS 所获得的租用将失效,致使 DHCP 服务器可重新使用该 IP 地址。

2

BOOTIF=MAC_ADDRESS_OF_BOOT_INTERFACE

当安装服务器在收到 DHCP 服务器的答复前逐个探测 LAN 接口时,此选项可用于避免超时。使用此选项可让 initrd 程序确定系统是从哪个接口引导的。linuxrc 会读取此选项并使用该网络接口。

4

SYSUUID=SYSTEM_UUID

以小写十六进制添加 UUIDs,具体请参见 /usr/share/doc/packages/syslinux/pxelinux.txt

LABEL LABEL KERNEL IMAGE APPEND OPTIONS...

指示如果输入了 LABEL 作为要引导的内核,则 PXELINUX 应改为引导 IMAGE,并且应使用指定的 APPEND 选项。这些设置会替换文件的 global 部分第一条 LABEL 命令前面指定的设置。IMAGE 的默认值与 LABEL 的相同,如果未指定 APPEND,则默认情况下使用 global 项(如果有)。最多允许 128 个 LABEL 条目。

PXELINUX 使用以下语法:

label MYLABEL
  kernel MYKERNEL
  append MYOPTIONS

标签的数据报处理如同文件名一样,它们在数据报处理之后必须唯一。例如,v2.6.30v2.6.31这两个标签在 PXELINUX 下是无法区分的,因为它们在数据报处理之后的 DOS 文件名相同。

该内核不必是 Linux 内核。它也可以是引导扇区或 COMBOOT 文件。

LOCALBOOT TYPE

在 PXELINUX 上,指定 LOCALBOOT 0 取代 KERNEL 选项表示调用该特定标签,这样就会从本地磁盘引导而不是从内核引导。

自变量

描述

0

执行正常引导

4

在“通用网络驱动程序接口”(UNDI)驱动程序仍然驻留在内存中的情况下执行本地引导

5

在整个 PXE 堆栈(包括 UNDI 驱动程序)仍然驻留于内存中的情况下执行本地引导

不定义所有其他的值。如果对 UNDI 或 PXE 堆栈不甚了解,请指定 0

TIMEOUT TIME-OUT

表示在自动引导之前在引导提示符下等待的时间(以 1/10 秒为单位)。用户按了键盘上的任意键后,超时将会取消(假设从用户完成命令开始)。如果超时值为零,则将完全禁用超时(这也是默认值)。允许的最大超时值为 35996(即小于一小时)。

PROMPT flag_val

如果 flag_val 为 0,则仅当按下 ShiftAlt 键,或者在 Caps LockScroll Lock 状态下,才显示引导提示符(这是默认设置)。如果 flag_val 为 1,则始终显示引导提示符。

F2  FILENAME
F1  FILENAME
..etc...
F9  FILENAME
F10 FILENAME

当在引导提示符下按下功能键时,将显示指定的文件。这可以用于执行预引导联机帮助(大致是关于内核命令行选项)。为了向后兼容先前的发行版,F10 也可以输入为 F0。请注意目前尚无法将文件名与 F11F12 绑定。

17.4 准备目标系统的 PXE 引导

请将 PXE 选项包含在 BIOS 引导序列中来为系统 BIOS 的 PXE 引导作准备。

警告
警告:BIOS 引导顺序

在 BIOS 中,不要将 PXE 选项置于硬盘引导参数的前面。否则,每次引导系统时,系统都会尝试重新自我安装。

17.5 准备目标系统的网络唤醒

网络唤醒 (WOL) 要求在安装之前启用相应的 BIOS 选项。此外,请记下目标系统的 MAC 地址。该数据是启动网络唤醒所需要的。

17.6 局域网唤醒

“网络唤醒”允许通过一个发送时包含计算机 MAC 地址的特定网络包来打开该计算机的电源。由于全球的每台计算机都有一个唯一的 MAC 标识,所以无需担心会意外地错开计算机的电源。

重要
重要:不同网段的“网络唤醒”

如果控制计算机与 WOL 命令的目标不在同一网段,您可以采用两种做法。将 WOL 请求配置为以多路广播形式发送,或者远程控制该网段中的某台计算机,使其充当这些请求的发送方。

SUSE Linux Enterprise Server 的用户可以使用名为 WOL 的 YaST 模块来方便地配置网络唤醒。基于 SUSE Linux 操作系统的其他版本的用户可以使用命令行工具。

17.7 使用 YaST 的“网络唤醒”

执行以下过程通过 YaST 配置网络唤醒。

  1. root 身份登录。

  2. 启动 YaST ›  网络服务 ›  WOL

  3. 单击添加并输入目标系统的主机名和 MAC 地址。

  4. 要打开此计算机,请选择适当的输入框并单击唤醒