2.6. 准备使用 PXE 从网络安装

这部分论述了如何在 PXE 服务器中配置 TFTP 和 DHCP 来启用 PXE 引导和网络安装。

2.6.1. 网络安装概述

网络安装允许您将 Red Hat Enterprise Linux 安装到可访问安装服务器的系统。网络安装至少需要两个系统:

Server
运行 DHCP 服务器的系统、HTTP、HTTPS、FTP 或 NFS 服务器以及 PXE 引导情况下的 TFTP 服务器。虽然每个服务器可以运行在不同的物理系统上,但本节中的流程假设一个系统运行所有服务器。
客户端
要安装 Red Hat Enterprise Linux 的系统。安装启动后,客户端会查询 DHCP 服务器,从 HTTP 或 TFTP 服务器接收引导文件,并从 HTTP、HTTPS、FTP 或者 NFS 服务器下载安装镜像。与其它安装方法不同,客户端不需要任何物理引导介质来启动安装。
注意

要从网络引导客户端,请在固件或客户端上的快速引导菜单中启用网络引导。在某些硬件上,从网络引导的选项可能被禁用了,或者不可用。

准备使用 HTTP 或 PXE 从网络安装 Red Hat Enterprise Linux 的工作流步骤如下:

步骤

  1. 将安装 ISO 镜像或者安装树导出到 NFS、HTTPS、HTTP 或者 FTP 服务器中。
  2. 配置 HTTP 或 TFTP 服务器和 DHCP 服务器,并在服务器上启动 HTTP 或 TFTP 服务。
  3. 引导客户端并开始安装。

您可以在以下网络引导协议之间进行选择:

HTTP
如果您的客户端 UEFI 支持,红帽建议使用 HTTP 引导。HTTP 引导通常更可靠。
PXE (TFTP)
客户端系统更广泛地支持 PXE 引导,但通过此协议发送引导文件可能会很慢,并导致超时失败。

2.6.2. 为 HTTP 和 PXE 引导配置 DHCPv4 服务器

在您的服务器上启用 DHCP 版本 4 (DHCPv4)服务,以便它可以提供网络引导功能。

先决条件

  • 您通过 IPv4 协议准备网络安装。

    对于 IPv6 ,请参阅 为 HTTP 和 PXE 引导配置 DHCPv6 服务器

  • 查找服务器的网络地址。

    在以下示例中,服务器有具有此配置的网卡:

    IPv4 地址
    192.168.124.2/24
    IPv4 网关
    192.168.124.1

流程

  1. 安装 DHCP 服务器:

    dnf install dhcp-server
  2. 设置 DHCPv4 服务器。在 /etc/dhcp/dhcpd.conf 文件中输入以下配置。替换地址以匹配您的网卡。

    option architecture-type code 93 = unsigned integer 16;
    
    subnet 192.168.124.0 netmask 255.255.255.0 {
      option routers 192.168.124.1;
      option domain-name-servers 192.168.124.1;
      range 192.168.124.100 192.168.124.200;
      class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
        next-server 192.168.124.2;
              if option architecture-type = 00:07 {
                filename "redhat/EFI/BOOT/BOOTX64.EFI";
              }
              else {
                filename "pxelinux/pxelinux.0";
              }
      }
      class "httpclients" {
        match if substring (option vendor-class-identifier, 0, 10) = "HTTPClient";
        option vendor-class-identifier "HTTPClient";
        filename "http://192.168.124.2/redhat/EFI/BOOT/BOOTX64.EFI";
      }
    }
  3. 启动 DHCPv4 服务:

    # systemctl enable --now dhcpd

2.6.3. 为 HTTP 和 PXE 引导配置 DHCPv6 服务器

在您的服务器上启用 DHCP 版本 6 (DHCPv4)服务,以便它可以提供网络引导功能。

先决条件

  • 您通过 IPv6 协议准备网络安装。

    对于 IPv4,请参阅为 HTTP 和 PXE 引导配置 DHCPv4 服务器

  • 查找服务器的网络地址。

    在以下示例中,服务器有具有此配置的网卡:

    IPv6 地址
    fd33:eb1b:9b36::2/64
    IPv6 网关
    fd33:eb1b:9b36::1

流程

  1. 安装 DHCP 服务器:

    dnf install dhcp-server
  2. 设置 DHCPv6 服务器。在 /etc/dhcp/dhcpd6.conf 文件中输入以下配置。替换地址以匹配您的网卡。

    option dhcp6.bootfile-url code 59 = string;
    option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};
    
    subnet6 fd33:eb1b:9b36::/64 {
            range6 fd33:eb1b:9b36::64 fd33:eb1b:9b36::c8;
    
            class "PXEClient" {
                    match substring (option dhcp6.vendor-class, 6, 9);
            }
    
            subclass "PXEClient" "PXEClient" {
                    option dhcp6.bootfile-url "tftp://[fd33:eb1b:9b36::2]/redhat/EFI/BOOT/BOOTX64.EFI";
            }
    
            class "HTTPClient" {
                    match substring (option dhcp6.vendor-class, 6, 10);
            }
    
            subclass "HTTPClient" "HTTPClient" {
                    option dhcp6.bootfile-url "http://[fd33:eb1b:9b36::2]/redhat/EFI/BOOT/BOOTX64.EFI";
                    option dhcp6.vendor-class 0 10 "HTTPClient";
            }
    }
  3. 启动 DHCPv6 服务:

    # systemctl enable --now dhcpd6
  4. 如果 DHCPv6 数据包被防火墙中的 RP 过滤器丢弃了,请检查其日志。如果日志包含 rpfilter_DROP 条目,请使用 /etc/firewalld/firewalld.conf 文件中的以下配置禁用过滤器:

    IPv6_rpfilter=no

2.6.4. 为基于 BIOS 的客户端配置 TFTP 服务器

使用这个步骤配置 TFTP 服务器和 DHCP 服务器,并为基于 BIOS 的 AMD 和 Intel 64 位系统在 PXE 服务器中启动 TFTP 服务。

重要

本节中的所有配置文件都是示例。配置详情会根据架构和具体要求的不同而有所不同。

流程

  1. 以 root 用户身份,安装以下软件包:

    # dnf install tftp-server
  2. 允许到防火墙中的 tftp 服务的传入连接:

    # firewall-cmd --add-service=tftp
    注意
    • 这个命令启用了临时访问,直到下次服务器重启为止。若要启用永久访问权限,可在 命令中添加 --permanent 选项。
    • 根据安装 ISO 文件的位置,您可能需要允许 HTTP 或者其他服务的进入连接。
  3. 从 DVD ISO 镜像文件中的 SYSLINUX 软件包访问 pxelinux.0 文件,其中 my_local_directory 是您创建的目录的名称:

    # mount -t iso9660 /path_to_image/name_of_image.iso /mount_point -o loop,ro
    # cp -pr /mount_point/AppStream/Packages/syslinux-tftpboot-version-architecture.rpm /my_local_directory
    # umount /mount_point
  4. 解压软件包:

    # rpm2cpio syslinux-tftpboot-version-architecture.rpm | cpio -dimv
  5. tftpboot/ 中创建 pxelinux/ 目录,并将该目录中的所有文件复制到 pxelinux/ 目录中:

    # mkdir /var/lib/tftpboot/pxelinux
    # cp /my_local_directory/tftpboot/* /var/lib/tftpboot/pxelinux
  6. pxelinux/ 目录中创建 pxelinux.cfg/ 目录:

    # mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
  7. 创建名为 default 的配置文件,并将其添加到 pxelinux.cfg/ 目录中,如下例所示:

    default vesamenu.c32
    prompt 1
    timeout 600
    
    display boot.msg
    
    label linux
      menu label ^Install system
      menu default
      kernel images/RHEL-9/vmlinuz
      append initrd=images/RHEL-9/initrd.img ip=dhcp inst.repo=http://192.168.124.2/RHEL-9/x86_64/iso-contents-root/
    label vesa
      menu label Install system with ^basic video driver
      kernel images/RHEL-9/vmlinuz
      append initrd=images/RHEL-9/initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://192.168.124.2/RHEL-9/x86_64/iso-contents-root/
    label rescue
      menu label ^Rescue installed system
      kernel images/RHEL-9/vmlinuz
      append initrd=images/RHEL-9/initrd.img inst.rescue
      inst.repo=http:///192.168.124.2/RHEL-8/x86_64/iso-contents-root/
    label local
      menu label Boot from ^local drive
      localboot 0xffff
    注意
    • 安装程序在没有运行时镜像的情况下无法引导。使用 inst.stage2 引导选项指定镜像的位置。另外,您可以使用 inst.repo= 选项指定镜像和安装源。
    • inst.repo 一起使用的安装源位置必须包含有效的 .treeinfo 文件。
    • 当您选择 RHEL9 安装 DVD 作为安装源时,.treeinfo 文件会指向 BaseOS 和 AppStream 存储库。您可以使用单个 inst.repo 选项来加载这两个软件仓库。
  8. 创建一个子目录,以将引导镜像文件存储在 /var/lib/tftpboot/ 目录中,并将引导镜像文件复制到 目录。在这个示例中,目录为 /var/lib/tftpboot/pxelinux/images/RHEL-9/

    # mkdir -p /var/lib/tftpboot/pxelinux/images/RHEL-9/
    # cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/images/RHEL-9/
  9. 启动并启用 tftp.socket 服务:

    # systemctl enable --now tftp.socket

    PXE 引导服务器现在可以提供 PXE 客户端。您可以启动客户端,即您要安装 Red Hat Enterprise Linux 的系统,在提示指定引导源时选择 PXE 引导,并启动网络安装。

2.6.5. 为基于 UEFI 的客户端配置 TFTP 服务器

使用这个流程配置 TFTP 服务器和 DHCP 服务器,并为基于 UEFI 的 AMD64、Intel 64 和 64 位 ARM 系统的 PXE 服务器启动 TFTP 服务。

重要
  • 本节中的所有配置文件都是示例。配置详情会根据架构和具体要求的不同而有所不同。
  • Red Hat Enterprise Linux 9 UEFI PXE 引导支持基于 MAC 的 grub 菜单文件的小写文件格式。例如,grub2 的 MAC 地址文件格式为 grub.cfg-01-aa-bb-cc-dd-ee-ff

流程

  1. 以 root 用户身份,安装以下软件包:

    # dnf install tftp-server
  2. 允许到防火墙中的 tftp 服务的传入连接:

    # firewall-cmd --add-service=tftp
    注意
    • 这个命令启用了临时访问,直到下次服务器重启为止。若要启用永久访问权限,可在 命令中添加 --permanent 选项。
    • 根据安装 ISO 文件的位置,您可能需要允许 HTTP 或者其他服务的进入连接。
  3. 访问 DVD ISO 镜像中的 EFI 引导镜像文件:

    # mount -t iso9660 /path_to_image/name_of_image.iso /mount_point -o loop,ro
  4. 复制 DVD ISO 镜像中的 EFI 引导镜像:

    # mkdir /var/lib/tftpboot/redhat
    # cp -r /mount_point/EFI /var/lib/tftpboot/redhat/
    # umount /mount_point
  5. 修复复制的文件的权限:

    # chmod -R 755 /var/lib/tftpboot/redhat/
  6. 使用以下示例替换 /var/lib/tftpboot/redhat/EFI/BOOT/grub.cfg 的内容:

    set timeout=60
    menuentry 'RHEL 9' {
      linuxefi images/RHEL-9/vmlinuz ip=dhcp inst.repo=http://192.168.124.2/RHEL-9/x86_64/iso-contents-root/
      initrdefi images/RHEL-9/initrd.img
    }
    注意
    • 安装程序在没有运行时镜像的情况下无法引导。使用 inst.stage2 引导选项指定镜像的位置。另外,您可以使用 inst.repo= 选项指定镜像和安装源。
    • inst.repo 一起使用的安装源位置必须包含有效的 .treeinfo 文件。
    • 当您选择 RHEL9 安装 DVD 作为安装源时,.treeinfo 文件会指向 BaseOS 和 AppStream 存储库。您可以使用单个 inst.repo 选项来加载这两个软件仓库。
  7. 创建一个子目录,以将引导镜像文件存储在 /var/lib/tftpboot/ 目录中,并将引导镜像文件复制到 目录。在这个示例中,目录为 /var/lib/tftpboot/images/RHEL-9/

    # mkdir -p /var/lib/tftpboot/images/RHEL-9/
    # cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/images/RHEL-9/
  8. 启动并启用 tftp.socket 服务:

    # systemctl enable --now tftp.socket

    PXE 引导服务器现在可以提供 PXE 客户端。您可以启动客户端,即您要安装 Red Hat Enterprise Linux 的系统,在提示指定引导源时选择 PXE 引导,并启动网络安装。

其它资源

2.6.6. 为 IBM Power 系统配置网络服务器

使用 GRUB2 为 IBM Power 系统配置网络引导服务器。

重要

本节中的所有配置文件都是示例。配置详情会根据架构和具体要求的不同而有所不同。

流程

  1. 以 root 用户身份,安装以下软件包:

    # dnf install tftp-server dhcp-server
  2. 允许到防火墙中 tftp 服务的进入连接:

    # firewall-cmd --add-service=tftp
    注意
    • 这个命令启用了临时访问,直到下次服务器重启为止。若要启用永久访问权限,可在 命令中添加 --permanent 选项。
    • 根据安装 ISO 文件的位置,您可能需要允许 HTTP 或者其他服务的进入连接。
  3. 在 TFTP root 中创建一个 GRUB2 网络引导目录:

    # grub2-mknetdir --net-directory=/var/lib/tftpboot
    Netboot directory for powerpc-ieee1275 created. Configure your DHCP server to point to /boot/grub2/powerpc-ieee1275/core.elf
    注意

    命令输出会告诉您 DHCP 配置中需要配置的文件名,如下所述。

    1. 如果 PXE 服务器运行在 x86 机器上,则必须在 tftp root 中创建 GRUB2 网络引导目录前安装 grub2-ppc64-modules

      # dnf install grub2-ppc64-modules
  4. 创建一个 GRUB2 配置文件:/var/lib/tftpboot/boot/grub2/grub.cfg,如下例所示:

    set default=0
    set timeout=5
    
    echo -e "\nWelcome to the Red Hat Enterprise Linux 9 installer!\n\n"
    
    menuentry 'Red Hat Enterprise Linux 9' {
      linux grub2-ppc64/vmlinuz ro ip=dhcp inst.repo=http://192.168.124.2/RHEL-9/x86_64/iso-contents-root/
      initrd grub2-ppc64/initrd.img
    }
    注意
    • 安装程序在没有运行时镜像的情况下无法引导。使用 inst.stage2 引导选项指定镜像的位置。另外,您可以使用 inst.repo= 选项指定镜像和安装源。
    • inst.repo 一起使用的安装源位置必须包含有效的 .treeinfo 文件。
    • 当您选择 RHEL8 安装 DVD 作为安装源时,.treeinfo 文件会指向 BaseOS 和 AppStream 软件仓库。您可以使用单个 inst.repo 选项来加载这两个软件仓库。
  5. 使用以下命令挂载 DVD ISO 镜像:

    # mount -t iso9660 /path_to_image/name_of_iso/ /mount_point -o loop,ro
  6. 创建一个目录,并将 initrd.imgvmlinuz 文件从 DVD ISO 镜像复制到其中,例如:

    # cp /mount_point/ppc/ppc64/{initrd.img,vmlinuz} /var/lib/tftpboot/grub2-ppc64/
  7. 将您的 DHCP 服务器配置为使用与 GRUB2 打包的引导镜像,如下例所示。请注意,如果您已经配置了 DHCP 服务器,在 DHCP 服务器中执行这个步骤。

    subnet 192.168.0.1 netmask 255.255.255.0 {
      allow bootp;
      option routers 192.168.0.5;
      group { #BOOTP POWER clients
        filename "boot/grub2/powerpc-ieee1275/core.elf";
        host client1 {
        hardware ethernet 01:23:45:67:89:ab;
        fixed-address 192.168.0.112;
        }
      }
    }
  8. 调整示例参数 subnetnetmaskroutersfixed-addresshardware ethernet 以适合您的网络配置。记录 file name 参数 ; 这是 grub2-mknetdir 命令在此流程前面输出的文件名。
  9. 在 DHCP 服务器上,启动并启用 dhcpd 服务。如果您已在 localhost 上配置了 DHCP 服务器,请在 localhost 上启动并启用 dhcpd 服务。

    # systemctl enable --now dhcpd
  10. 启动并启用 tftp.socket 服务:

    # systemctl enable --now tftp.socket

    PXE 引导服务器现在可以提供 PXE 客户端。您可以启动客户端,即您要安装 Red Hat Enterprise Linux 的系统,在提示指定引导源时选择 PXE 引导,并启动网络安装。