2.5. 准备使用 HTTP 从网络安装

作为本地网络上服务器的管理员,您可以将 HTTP 服务器配置为为网络上的其他系统启用 HTTP 引导和网络安装。

2.5.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.5.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.5.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.5.4. 为 HTTP 引导配置 HTTP 服务器

您必须在服务器上安装并启用 httpd 服务,以便服务器可以在网络上提供 HTTP 引导资源。

先决条件

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

    在以下示例中,服务器有一个具有 192.168.124.2 IPv4 地址的网卡。

流程

  1. 安装 HTTP 服务器:

    # dnf install httpd
  2. 创建 /var/www/html/redhat/ 目录:

    # mkdir -p /var/www/html/redhat/
  3. 下载 RHEL DVD ISO 文件。请参阅 所有 Red Hat Enterprise Linux 下载
  4. 为 ISO 文件创建一个挂载点:

    # mkdir -p /var/www/html/redhat/iso/
  5. 挂载 ISO 文件:

    # mount -o loop,ro -t iso9660 path-to-RHEL-DVD.iso /var/www/html/redhat/iso
  6. 将引导装载程序、kernel 和 initramfs 从挂载的 ISO 文件复制到 HTML 目录中:

    # cp -r /var/www/html/redhat/iso/images /var/www/html/redhat/
    # cp -r /var/www/html/redhat/iso/EFI /var/www/html/redhat/
  7. 使引导装载程序配置可编辑:

    # chmod 644 /var/www/html/redhat/EFI/BOOT/grub.cfg
  8. 编辑 /var/www/html/redhat/EFI/BOOT/grub.cfg 文件,并将其内容替换为以下内容:

    set default="1"
    
    function load_video {
      insmod efi_gop
      insmod efi_uga
      insmod video_bochs
      insmod video_cirrus
      insmod all_video
    }
    
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod ext2
    
    set timeout=60
    # END /etc/grub.d/00_header #
    
    search --no-floppy --set=root -l 'RHEL-9-3-0-BaseOS-x86_64'
    
    # BEGIN /etc/grub.d/10_linux #
    menuentry 'Install Red Hat Enterprise Linux 9.3' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi ../../images/pxeboot/vmlinuz inst.repo=http://192.168.124.2/redhat/iso quiet
        initrdefi ../../images/pxeboot/initrd.img
    }
    menuentry 'Test this media & install Red Hat Enterprise Linux 9.3' --class fedora --class gnu-linux --class gnu --class os {
        linuxefi ../../images/pxeboot/vmlinuz inst.repo=http://192.168.124.2/redhat/iso quiet
        initrdefi ../../images/pxeboot/initrd.img
    }
    submenu 'Troubleshooting -->' {
        menuentry 'Install Red Hat Enterprise Linux 9.3 in text mode' --class fedora --class gnu-linux --class gnu --class os {
       	 linuxefi ../../images/pxeboot/vmlinuz inst.repo=http://192.168.124.2/redhat/iso inst.text quiet
       	 initrdefi ../../images/pxeboot/initrd.img
        }
        menuentry 'Rescue a Red Hat Enterprise Linux system' --class fedora --class gnu-linux --class gnu --class os {
       	 linuxefi ../../images/pxeboot/vmlinuz inst.repo=http://192.168.124.2/redhat/iso inst.rescue quiet
       	 initrdefi ../../images/pxeboot/initrd.img
        }
    }

    在这个文件中,替换以下字符串:

    rhel-9-3-0-BaseOS-x86_64Red Hat Enterprise Linux 9.3
    编辑版本号,使其与您下载的 RHEL 版本匹配。
    192.168.124.2
    使用服务器的 IP 地址替换。
  9. 使 EFI 引导文件可执行:

    # chmod 755 /var/www/html/redhat/EFI/BOOT/BOOTX64.EFI
  10. 在防火墙中打开端口,以允许 HTTP (80)、DHCP (67, 68)和 DHCPv6 (546, 547)流量:

    # firewall-cmd --zone public \
                   --add-port={80/tcp,67/udp,68/udp,546/udp,547/udp}
    注意

    这个命令启用了临时访问,直到下次服务器重启为止。若要启用永久访问权限,可在 命令中添加 --permanent 选项。

  11. 重新载入防火墙规则:

    # firewall-cmd --reload
  12. 启动 HTTP 服务器:

    # systemctl enable --now httpd
  13. 使 html 目录及其内容可读和可执行:

    # chmod -cR u=rwX,g=rX,o=rX /var/www/html
  14. 恢复 html 目录的 SELinux 上下文:

    # restorecon -FvvR /var/www/html