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

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.0/24 的服务器上,使用包含 DHCP、DNS 和网关的子网 192.168.1.1。确保根据网络布局更改所有 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 client-id。然后,DHCP 服务器提供指派的 IP 地址。接下来装载安装内核,并发送另一个 DHCP 请求,但此 client-id 不同,它是以 RFC 4361 格式发送的。DHCP 服务器不会将此 ID 识别为相同的客户端,而是查找一个可用的动态 IP 地址,但此地址不可用,因此安装将会停止。

解决方法是将客户端配置为发送 RFC 2132 客户端 ID。要在安装期间发送 RFC 2132 client-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 client-id 是基于硬件类型(01 表示以太网)后接硬件地址(MAC 地址)构建的,例如:

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

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

如果使用上述基于硬件类型和基于硬件地址的 DUID,新的 RFC 4361 DHCPv4 client-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。另请参见 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. 检查 /etc/sysconfig/tftp 中的 tftpd 配置,并根据需要添加或更改选项。有关更多细节,请参见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。根据install中所述的设置替换 第 16 章 “设置网络安装源 参数的路径。另外,请将 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 参数。有关 第 7.3.3 节 “指定安装源” 参数的更多信息,请参见install

17.3 PXELINUX 配置选项

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

APPEND OPTIONS

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

APPEND -

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

DEFAULT KERNEL_OPTIONS...

用于设置默认内核命令行。当 PXELINUX 自动引导时,它会执行指定的项,并追加 auto 选项。

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

IFAPPEND FLAG

根据 FLAG 值将特定项添加到内核命令行。只有 PXELINUX 提供 IFAPPEND 项。需要按照表 17.1 “通过 IFAPPEND 生成和添加的内核命令行选项”中所述为 FLAG 指定一个值:

表 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

以小写的十六进制值添加 UUID,具体请参见 /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

当在引导提示符下按下功能键时,将显示指定的文件。这可以用于执行预引导联机帮助(大致是关于内核命令行选项)。为了向后兼容先前的发行版,10 也可以输入为 F0F。请注意目前尚无法将文件名与 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,这可根据 g 行中的 Supports Wake-on 标志确定。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 连接到您的网络内的某台主机,然后从该主机发送幻数据包。