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

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.confdhcpd.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 唯一标识符 (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 软件包。

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

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

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

17.2.2 安装引导所需的文件

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

  • AMD64/Intel 64

  • AArch64

  • POWER

  • IBM Z

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

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

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

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

提示
提示:针对不同的体系结构进行处理

客户端和服务器硬件体系结构可能不同。例如,您可以通过安装 tftpboot-installation-SLE-15-SP3-aarch64 软件包运行 AMD64/Intel 64 TFTP 服务器,并为 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 安装,需要在 /srv/tftpboot/SLE-OS_VERSION-ARCHITECTURE/EFI/BOOT/grub.cfg 文件的 linuxefi 指令中指定 install 参数。有关 install 参数的更多信息,请参见第 7.3.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) 是一种以太网标准,用于通过网络向计算机发送唤醒信号来远程唤醒计算机。此信号称为幻数据包。请在要启用远程唤醒的客户端计算机上,以及要用于发送唤醒信号的每台计算机上安装 WOL。幻数据包通过 UDP 端口 9 广播到客户端计算机上的网络接口的 MAC 地址。

当计算机关机时,它们通常不会彻底关闭,而是保持在低电量模式。如果网络接口支持 WOL,则会在计算机处于关闭状态时侦听幻数据包唤醒信号。您可以手动发送幻数据包,或者在发送方计算机上的 cron 作业中安排唤醒。

17.5.1 先决条件

WOL 与支持 WOL 的有线和无线以太网卡均可配合使用。

您可能需要在系统 BIOS/UEFI 中启用 WOL。

检查用于 PXE 引导的 BIOS/UEFI 设置,并确保已禁用该设置,以防止意外重新安装。

调整防火墙,以允许在 UDP 端口 9 上传输流量。

17.5.2 校验有线以太网支持

运行以下命令确定有线以太网接口是否支持 WOL:

> sudo ethtool eth0 | grep -i wake-on
Supports Wake-on: pumbg
Wake-on: g

示例输出显示 eth0 支持 WOL,这可根据 Supports Wake-on 行中的 g 标志确定。Wake-on: g 表示 WOL 已启用,因此此接口已准备好接收唤醒信号。如果 WOL 未启用,请使用以下命令将其启用:

> sudo ethtool -s eth0 wol g

17.5.3 校验无线接口支持

通过 WiFi 远程唤醒(或 WoWLAN)需要使用支持 WoWLAN 的无线网络接口。使用 iw 命令可测试该功能,该命令由 iw 软件包提供:

> sudo zypper in iw

确定您的设备名称:

> sudo iw dev
phy#0
        Interface wlan2
                ifindex 3
                wdev 0x1
                addr 9c:ef:d5:fe:01:7c
                ssid accesspoint
                type managed
                channel 11 (2462 MHz), width: 20 MHz, center1: 2462 MHz
                txpower 20.00 dBm

在此示例中,用于查询 WoWLAN 支持的设备名称是 phy#0。此示例显示此设备不支持该功能:

> sudo iw phy#0 wowlan show
command failed: Operation not supported (-95)

此示例显示一个接口支持 WoWLAN,但未启用:

> sudo iw phy#0 wowlan show
WoWLAN is disabled

将其启用:

> sudo iw phy#0 wowlan enable magic-packet
WoWLAN is enabled:
* wake up on magic packet

17.5.4 安装和测试 WOL

要使用 WOL,请在客户端和发送方计算机上安装 wol 软件包:

> sudo zypper in wol

在客户端计算机上安装 wol-udev-rules。此软件包会安装一条 udev 规则,该规则会在系统启动时自动启用 WOL。

获取客户端计算机上的网络接口的 MAC 地址:

> sudo ip addr show eth0|grep ether
link/ether 7c:ef:a5:fe:06:7c brd ff:ff:ff:ff:ff:ff

在示例输出中,7c:ef:a5:fe:06:7c 是 MAC 地址。

将您的客户端计算机关机,并从同一子网中的另一台计算机向其发送唤醒信号:

> wol 7c:ef:a5:fe:06:7c

如果您的目标计算机和第二台设备位于同一网络,但在不同的子网中,请指定目标计算机的广播地址:

> wol -i 192.168.0.63 7c:ef:a5:fe:06:7c

由于 WOL 依赖于广播域,因此尽管发送方计算机可以在不同的网段中,但两台计算机必须位于同一网络。

可以从不同的网络发送幻数据包。一种方法是使用端口转发(如果您的路由器支持向广播地址进行端口转发)。更安全的方法是通过 SSH 连接到您的网络内的某台主机,然后从该主机发送幻数据包。