15 准备网络引导环境 #
本章介绍如何配置 DHCP 和 TFTP 服务器,以提供所需的基础结构来通过 PXE 进行引导。
可以通过预引导执行环境 (PXE) 安装 SUSE® Linux Enterprise Server。客户端硬件需支持通过 PXE 引导。网络需要提供 DHCP 服务器和 TFTP 服务器,以向客户端提供所需的数据。本章将引导您设置所需的服务器。
PXE 只会引导内核和 initrd。可以使用此方法引导进入安装环境或在线系统。要设置安装源,请参见第 14 章 “设置网络安装源”。
此部分讨论复杂引导场景中需要的配置任务。其中包含了 DHCP、PXE 引导、TFTP 和网络唤醒的“准备应用”配置示例。
这些示例假设 DHCP、TFTP 和 NFS 服务器驻留在 IP 为 192.168.1.1
的同一计算机上。所有服务都可以驻留在不同的计算机上,且不会产生任何问题。请务必根据需要更改 IP 地址。
15.1 设置 DHCP 服务 #
除了向网络客户端提供自动地址分配外,DHCP 服务器还会通告 TFTP 服务器的 IP 地址,以及内核和 Initrd 文件的路径。需要装载哪些文件取决于目标计算机的体系结构,以及使用的是传统的 BIOS 还是 UEFI 引导方式。客户端会在 DHCP 请求中传输其体系结构类型。DHCP 服务器可以根据此信息确定必须下载哪些文件用于引导。
以
root
登录到主管 DHCP 服务器的计算机。通过执行
systemctl enable dhcpd
启用 DHCP 服务器。向位于
/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"; } }
此配置示例使用的子网为
192.168.1.0/24
,DHCP、DNS 和网关配置在 IP 为192.168.1.1
的服务器上。请务必根据您的网络布局更改使用的所有 IP 地址。关于dhcpd.conf
中可用选项的更多信息,请参见dhcpd.conf
手册页。执行
systemctl restart dhcpd
重启动 DHCP 服务器。
如果打算使用 SSH 来远程控制 PXE 和网络唤醒安装,请指定 DHCP 应提供给安装目标的 IP 地址。要实现此设置,请根据以下示例修改上述的 DHCP 配置:
group { host test { hardware ethernet MAC_ADDRESS; fixed-address IP_ADDRESS; } }
host 语句引入了安装目标的主机名。要将主机名和 IP 地址与特定主机绑定,则必须了解系统的硬件 (NAC) 地址并指定它。请将本例中使用的所有变量替换为符合您环境的实际值。
在重启动 DHCP 服务器之后,它将向所指定的主机提供一个静态 IP,从而使您能够通过 SSH 连接到该系统。
15.2 设置 TFTP 服务器 #
以下过程介绍如何在 32 位和 64 位 x86 体系结构上为配有 UEFI 和 BIOS 的目标计算机准备服务器。已经为 AArch64 系统提供了准备好的结构。
15.2.1 安装 TFTP 服务器 #
要安装 TFTP 服务器,请执行以下过程:
安装
tftp
包。tux >
sudo
zypper in tftp
检查
/etc/sysconfig/tftp
中的tftpd
配置,并根据需要添加或更改选项。有关更多细节,请参见man 8 tftpd
。不更改该配置,TFTP 守护程序也可正常工作。文件的默认根目录为/srv/tftpboot
。确保
tftpd
在引导时已启动,并重启动它以读取新配置。tux >
sudo
systemctl enable tftp.socket
tux >
sudo
systemctl restart tftp.socket
15.2.2 安装引导文件 #
SUSE Linux Enterprise Server 在 RPM 中提供在 BIOS 或 UEFI 计算机上通过 PXE 引导所需的文件。请在运行 TFTP 服务器的计算机上安装这些文件:
tux >
sudo
zypper in tftpboot-installation-SLES-OS_VERSION-ARCHITECTURE
请将 OS_VERSION 替换为 SUSE Linux Enterprise Server 安装的版本(例如 15
),将 ARCHITECTURE 替换为系统的体系结构(例如 x86_64
)。可以使用 zypper se tftpboot
来搜索所有可用版本和体系结构。
文件将安装在 /srv/tftpboot/SLES-OS_VERSION-ARCHITECTURE
中。您也可以将 SUSE Linux Enterprise Server 的其他版本和体系结构的相应文件复制到 /srv/tftpboot
目录。
/srv/tftpboot/
目录
如果您的计算机上已存在目录 /srv/tftpboot/
,则所有文件将安装到 /usr/share/tftpboot-installation/
。如果您正在从旧版 SLES 升级 PXE 服务器,就会采用这种安装方式。
要修复此问题,请将 /usr/share/tftpboot-installation/
中的文件手动复制到 /srv/tftpboot/
。或者,去除 /srv/tftpboot/
并重新安装
tftpboot-installation-SLES-OS 版本-体系结构
包中提供。
15.2.3 配置 PXELINUX #
在编辑器中打开 /srv/tftpboot/SLES-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/default
文件。根据第 14 章 “设置网络安装源”中所述的设置替换 install
参数的路径。另外,请将 TFTP_SERVER 替换为 TFTP 服务器的 IP 地址。有关 PXELINUX 配置选项的概述,请参见第 15.3 节 “PXELINUX 配置选项”。
default linux # install label linux ipappend 2 kernel boot/ARCHITECTURE/loader/linux append initrd=boot/x86_64/ARCHITECTURE/initrd instsys=tftp://TFTP_SERVER/SLES-OS_VERSION-ARCHITECTURE/boot/ARCHITECTURE/root install=PROTOCOL://SERVER_IP:/PATH display message implicit 1 prompt 1 timeout 50
有关 append
行中使用的引导参数的细节,请参见第 7.3 节 “重要引导参数列表”。
如果需要,请编辑 /srv/tftpboot/SLES-OS_VERSION-ARCHITECTURE/net/pxelinux.cfg/message
,以在引导菜单中显示讯息。
15.2.4 使用 GRUB2 为 EFI 准备 PXE 引导 #
您无需更改 GRUB2 配置文件。但是,默认设置中未提供安装系统的网络源。如果您要完全通过网络来安装 SUSE Linux Enterprise Server,请将 install
参数添加到 /srv/tftpboot/SLES-OS_VERSION-ARCHITECTURE/EFI/BOOT/grub.cfg
文件中的 linuxefi
行内。根据第 14 章 “设置网络安装源”中所述设置 install
参数。有关 efilinux
行中使用的其他引导参数的细节,请参见第 7.3 节 “重要引导参数列表”。
15.3 PXELINUX 配置选项 #
此处列出的选项是 PXELINUX 配置文件中所有可用选项中的一部分。
APPEND OPTIONS
将一个或多个选项添加到内核命令行。添加的这些选项对自动引导和手动引导都适用。这些选项添加在内核命令行的最前面,通常允许用显式输入的内核选项覆盖它们。
APPEND -
不追加任何选项。在
LABEL
段中用一个连字符作为参数的APPEND
可用于覆盖全局APPEND
。DEFAULT KERNEL_OPTIONS...
用于设置默认内核命令行。如果 PXELINUX 自动引导,则该选项的作用相当于已在引导提示符处输入了在 DEFAULT 后输入的所有内容(表示自动引导的 auto 选项除外,它是自动添加的)。
如果配置文件不存在或其中未定义 DEFAULT 项,则默认使用内核名称“linux”且不带任何选项。
IFAPPEND 标志
根据标志值将特定项添加到内核命令行。只有 PXELINUX 提供
IFAPPEND
项。标志需赋一个值,具体如表 15.1 “从IFAPPEND
中生成并添加内核命令行选项。”所述:表 15.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.30”和“v2.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,则仅当按下 Shift 或 Alt 键,或者在 Caps Lock 或 Scroll Lock 状态下,才显示引导提示符(这是默认设置)。如果flag_val
为 1,则始终显示引导提示符。F2 FILENAME F1 FILENAME ..etc... F9 FILENAME F10 FILENAME
当在引导提示符下按下功能键时,将显示指定的文件。这可以用于执行预引导联机帮助(大致是关于内核命令行选项)。为了向后兼容先前的发行版,F10 也可以输入为
F0
。请注意目前尚无法将文件名与 F11 和 F12 绑定。
15.4 准备目标系统的 PXE 引导 #
请将 PXE 选项包含在 BIOS 引导序列中来为系统 BIOS 的 PXE 引导作准备。
在 BIOS 中,不要将 PXE 选项置于硬盘引导参数的前面。否则,每次引导系统时,系统都会尝试重新自我安装。
15.5 准备目标系统的网络唤醒 #
网络唤醒 (WOL) 要求在安装之前启用相应的 BIOS 选项。此外,请记下目标系统的 MAC 地址。该数据是启动网络唤醒所需要的。
15.6 局域网唤醒 #
“网络唤醒”允许通过一个发送时包含计算机 MAC 地址的特定网络包来打开该计算机的电源。由于全球的每台计算机都有一个唯一的 MAC 标识,所以无需担心会意外地错开计算机的电源。
如果控制计算机与 WOL 命令的目标不在同一网段,您可以采用两种做法。将 WOL 请求配置为以多路广播形式发送,或者远程控制该网段中的某台计算机,使其充当这些请求的发送方。
SUSE Linux Enterprise Server 的用户可以使用名为 WOL 的 YaST 模块来方便地配置网络唤醒。基于 SUSE Linux 操作系统的其他版本的用户可以使用命令行工具。
15.7 使用 YaST 的“网络唤醒” #
执行以下过程通过 YaST 配置网络唤醒。
以
root
身份登录。启动
› › 。单击
并输入目标系统的主机名和 MAC 地址。要打开此计算机,请选择适当的输入框并单击
。
15.8 从 CD 或 USB 驱动器而非 PXE 引导 #
您也可以使用包含小型系统映像的 CD、DVD 或 USB 驱动器来引导,而不通过 PXE 引导。装载完内核和 initrd 后,将会通过 NFS 提取必要文件。可使用 mksusecd
创建可引导映像。如果目标计算机不支持 PXE 引导,此选项可能很有用。
使用 sudo zypper in mksusecd
可安装该工具。使用以下命令创建可引导 ISO 映像:
tux >
mksusecd
--create image.iso \ --net=nfs://192.168.1.1:/srv/install/ARCH/OS_VERSION/SP_VERSION/cd1 \ /srv/tftpboot/EFI/ARCH/boot
将 ARCH 替换为目标系统体系结构对应的目录。另外,根据第 15.2 节 “设置 TFTP 服务器”中的路径替换 OS_version 和 SP_version。
对于 --net
选项,您可以不使用 NFS 服务器,而是使用 HTTP 储存库,例如 openSUSE 储存库:
tux >
mksusecd
--create image.iso \ --net=http://download.opensuse.org/tumbleweed/repo/oss/suse \ /srv/tftpboot/EFI/ARCH/boot
image.iso
可写入到 DVD 或 CD,或使用 dd
写入到 USB 记忆棒:
root #
dd
if=image.iso of=/dev/USB_DEVICE
将 USB_DEVICE 替换为 USB 记忆棒的设备名称。全面检查设备名称,以确保您未意外损坏其他驱动器上的数据。