配置kickstart服务器| PXE引导服务器| RHEL/CentOS 8

时间:2020-01-09 10:37:44  来源:igfitidea点击:

在本文中,我们将使用RHEL/CentOS 8 ISO镜像设置PXE引导服务器。
为了执行基于网络的安装,我们还将配置kickstart服务器。
以下是设置PXE引导服务器所涉及的步骤的简要列表

  • 使用Red Hat 8.1 ISO设置安装存储库

  • 设置PXE引导服务器环境

  • 配置kickstart服务器以自动执行安装

  • 配置DHCP服务器分配IP地址

  • 配置TFTP服务器以传输PXE文件

  • 配置NFS服务器以共享安装库和kickstart文件

步骤1:安装程序安装库

我们将设置PXE引导服务器以使用基于网络的安装来安装RHEL 8. 创建一个新目录,我们将其中放置所有RHEL图像文件

[root@centos-8 pxelinux]# mkdir /images

我已经在虚拟机上虚拟安装了RHEL 8 ISO,要访问该ISO,我会将镜像安装到/mnt

提示:

RHEL和CentOS 8具有相同的目录结构和配置kickstart服务器的要求,因此我们可以使用其中任何一个。

我们知道如何识别和访问U盘,连接到Linux服务器的ISO镜像吗?

[root@centos-8 ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.

将所有文件从RHEL 8 ISO镜像复制到/images目录

[root@centos-8 ~]# cp -apr /mnt/* /images/

请注意,这里将忽略隐藏文件的复制,而有效安装源必需的.treeinfo文件将被忽略,因此请手动复制这些隐藏文件。

提示:

我们将需要~8GB的可用空间来复制完整的RHEL 8 ISO镜像

[root@centos-8 ~]# cp -apr /mnt/.discinfo /mnt/.treeinfo /images/

验证存储库内容

[root@centos-8 ~]# ls -al /images/
total 92
drwxr-xr-x   7 root root  4096 Apr 19 20:33 .
dr-xr-xr-x. 33 root root  4096 Apr 19 19:57 ..
dr-xr-xr-x   4 root root  4096 Oct 15  2019 AppStream
dr-xr-xr-x   4 root root  4096 Oct 15  2019 BaseOS
-r--r--r--   1 root root    60 Apr 19 20:33 .discinfo
dr-xr-xr-x   3 root root  4096 Oct 15  2019 EFI
-r--r--r--   1 root root  8266 Oct 15  2019 EULA
-r--r--r--   1 root root  1455 Oct 15  2019 extra_files.json
-r--r--r--   1 root root 18092 Oct 15  2019 GPL
dr-xr-xr-x   3 root root  4096 Oct 15  2019 images
dr-xr-xr-x   2 root root  4096 Oct 15  2019 isolinux
-r--r--r--   1 root root   103 Oct 15  2019 media.repo
-r--r--r--   1 root root  1669 Oct 15  2019 RPM-GPG-KEY-redhat-beta
-r--r--r--   1 root root  5134 Oct 15  2019 RPM-GPG-KEY-redhat-release
-r--r--r--   1 root root  1796 Oct 15  2019 TRANS.TBL
-r--r--r--   1 root root  1566 Apr 19 20:33 .treeinfo

步骤2:安装和配置TFTP服务器

接下来,我们将配置TFTP服务器将PXE镜像文件传输到客户端,以进行基于网络的安装。

使用dnf安装tftp-serverxinetd

说明:

在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum软件包管理器可以安装提供的rpm及其依赖项。

[root@centos-8 ~]# dnf install tftp-server xinetd -y

在早期的RHEL/CentOS 7中,tftp服务由xinetd管理。
尽管即使使用RHEL/CentOS 7,我们也可以选择禁用xinetd并使用systemd分叉TFTP进程。

说明:

我们可以通过" xinetd"或者" systemd"来分叉TFTP进程,但不能同时使用两者。
有关更多详细信息,请检查:TFTP服务在RHEL7中自动变为非活动状态

在这个例子中,我们将使用systemd来分叉TFTP进程。
tftp-serverrpm安装将创建/usr/lib/systemd/system/tftp.service`单位文件

以下是此服务单元文件的内容

[root@centos-8 pxelinux.cfg]# cat /usr/lib/systemd/system/tftp.service
[Unit]
Description=Tftp Server
Requires=tftp.socket
Documentation=man:in.tftpd
[Service]
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
StandardInput=socket
[Install]
Also=tftp.socket
  • ExecStart我们可以看到TFTP服务器的默认位置是/var/lib/tftpboot

  • 因此,我们必须将所有PXE引导服务器文件放在此位置下

  • 我们也可以使用任何其他目录,但是随后我们将不得不修改此服务单元文件以使用tftp服务的自定义路径

接下来启动tftp服务,并使其在重启后自动启动

[root@centos-8 pxelinux.cfg]# systemctl enable tftp.service --now
Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.
  • TFTP服务用于tftp.socket服务TFTP请求

  • 因此,如果没有传入的TFTP请求,则tftp服务本身将变为不活动状态

  • 但是,一旦TFTP请求发送到tftp.socket,套接字将启动tftp.service并处理该请求

检查tftp.socket的状态

[root@centos-8 ~]# systemctl status tftp.socket
● tftp.socket - Tftp Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/tftp.socket; enabled; vendor preset: disabled)
   Active: active (listening) since Sun 2017-04-19 19:32:40 IST; 7h ago
   Listen: [::]:69 (Datagram)
   CGroup: /system.slice/tftp.socket
Apr 19 19:32:40 centos-8.example.com systemd[1]: Listening on Tftp Server Activation Socket.

步骤3:设置PXE引导服务器

  • 接下来要执行基于PXE网络的安装,我们必须配置PXE引导服务器。

  • 我们将需要Linux引导镜像以最少的配置引导RHEL 8 OS

  • 这是通过initrdvmlinuz执行的。
    我希望我们熟悉涵盖这部分的Linux引导过程。

  • 在实际内核加载之前,initrdvmlinuz将从内存中加载必要的驱动程序以启动服务器。

我们将在/var/lib/tftpboot下创建另一个目录pxelinux来存储PXE镜像

[root@centos-8 ~]# mkdir -p /var/lib/tftpboot/pxelinux

步骤3.1:解压syslinux-tftpboot

对于RHEL/CentOS 8,pxelinux文件是syslinux-tftpboot` rpm的一部分,因此我们将从RHEL 8 ISO复制该文件到一个临时位置。

[root@centos-8 ~]# cp /mnt/BaseOS/Packages/syslinux-tftpboot-6.04-4.el8.noarch.rpm /tmp/

接下来解压缩syslinux-tftpboot rpm。
我们不会使用此rpm的所有内容,而只会使用必需的文件

[root@centos-8 ~]# cd /tmp/
[root@centos-8 tmp]# rpm2cpio syslinux-tftpboot-6.04-4.el8.noarch.rpm | cpio -idm

上面的命令将在/tmp下提取syslinux-tftpboot

接下来,我们将pxelinux.0和ldlinux.c32复制到设置PXE引导服务器所需的/var/lib/tftpboot/pxelinux /中。

提示:

如果我们希望在引导菜单中使用图形用户界面,那么我建议我们将此rpm的所有内容复制到/var/lib/tftpboot/pxelinux /中。

[root@centos-8 tmp]# cp /tmp/tftpboot/ldlinux.c32 /var/lib/tftpboot/pxelinux/
[root@centos-8 tmp]# cp /tmp/tftpboot/pxelinux.0 /var/lib/tftpboot/pxelinux/

步骤3.2:复制initrd和vmlinuz

我们还需要其他PXE引导镜像,这些镜像将位于RHEL/CentOS 8镜像的" isolinux"文件夹下。
由于我们已将ISO内容复制到/images中,因此我们会将所需的PXE引导镜像从/images/isolinux复制到/var/lib/tftpboot/pxelinux /中。

[root@centos-8 tmp]# cp /images/isolinux/initrd.img /var/lib/tftpboot/pxelinux/
[root@centos-8 tmp]# cp /images/isolinux/vmlinuz /var/lib/tftpboot/pxelinux/

列出所有PXE引导镜像文件:

[root@centos-8 tmp]# ls -l /var/lib/tftpboot/pxelinux/
total 58880
-r--r--r-- 1 root root 62248424 Apr 19 19:14 initrd.img
-rw-r--r-- 1 root root   116096 Apr 19 19:47 ldlinux.c32
-rw-r--r-- 1 root root    42821 Apr 19 19:01 pxelinux.0
-r-xr-xr-x 1 root root  8106848 Apr 19 19:14 vmlinuz

接下来导航到" pxelinux"文件夹

[root@centos-8 tmp]# cd /var/lib/tftpboot/pxelinux

步骤3.3:创建启动菜单

  • 我们将创建可用于安装多个镜像的PXE启动服务器,因此我们将创建启动菜单。

  • 将显示此引导菜单,以启动安装以供用户输入。

  • /var/lib/tftpboot/pxelinux下创建一个新文件boot.msg

  • 我们可以根据需要为此文件使用任何名称。

由于我仅打算为单个镜像配置Kickstart服务器,因此我仅创建了两个菜单项。

[root@centos-8 pxelinux]# cat boot.msg
Welcome to the installation of "My Linux Server" !
Red Hat Enterprise linux 8.1 (x86_64)
Version: 1.0
Architecture: x86_64
To start the installation enter :
    '1', '2' and press .
Available boot options:
  1 - Install Red Hat Enterprise Linux 8.1
  2 - Boot from Harddisk (this is default)
Have a lot of fun...

步骤3.4:创建PXE配置文件

  • 客户端检索并执行" pxelinux.0"后,将对其进行硬编码以从" pxelinux.cfg /"子目录中查找与找到" pxelinux.0"相对的文件。

  • 在大型部署中,我们为每个节点创建单独的PXE配置文件。

  • 这些PXE配置文件的命名语法非常重要。

  • 首先,它将查找以" MAC地址"命名的文件,格式为" 01-xx-xx-xx-xx-xx-xx"。

  • 例如,在此示例中,我的客户端的NIC MAC地址为" 08:00:27:83:1e:2a",因此我的PXE配置文件将为" 01-08-00-27-83-1e-2a"

  • 接下来,它将查找由DHCP服务器提供的名为" IP地址"的文件。

  • IP地址以十六进制格式查找。

  • 我们可以使用printf获取IP地址的十六进制格式,例如,获取10.10.10.12的十六进制值。

# printf "%02x%02x%02x%02xn" 10 10 10 12
0a0a0a0cn
  • 由于我没有分配任何静态IP地址,因此无法使用十六进制格式的文件。
    虽然我可以使用基于MAC地址的文件。

  • 如果在" pxelinux.cfg"下未找到MAC地址和十六进制格式的文件,则"安装程序将查找默认文件"。

  • 在此示例中,我将使用"默认"文件,但也已使用基于MAC的文件" 01-08-00-27-83-1e-2a"验证了PXE网络安装。

我们将创建一个新目录" pxelinux.cfg"

[root@centos-8 ~]# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

创建PXE配置文件/var/lib/tftpboot/pxelinux/pxelinux.cfg/default

[root@centos-8 ~]# cat /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
timeout 600
display boot.msg
default 1
prompt  1
label 1
  menu label ^Install Red Hat Enterprise Linux 8
  kernel vmlinuz
  append initrd=initrd.img showopts ks=nfs:10.10.10.12://ks/kickstart.conf ip=dhcp net.ifnames=0 biosdevname=0
label 2
  menu label Boot from ^local drive
  localboot 0x80
menu end
  • 我已经根据我们的"启动菜单"创建了两个标签

  • 标签1:将用于安装Red Hat Linux 8

  • 标签2:继续从硬盘启动

  • 我提供了标签2作为"默认"选项。

  • 因此,如果直到"超时"值即600才提供用户输入,安装程序将选择标签2并继续从硬盘引导

  • 我将使用NFS服务器配置kickstart服务器以执行基于网络的安装。

  • 我的kickstart文件将在/ks目录下提供,我们将在后续步骤中创建

  • ip = dhcp是可选的,因为客户端无论如何都会从DHCP服务器获取IP地址。

  • net.ifnames和biosdevname也是可选的,因为我不希望对客户端节点使用一致的网络设备命名方案。

确保PXE配置文件对其他用户具有读取权限

[root@centos-8 ~]# ls -l /var/lib/tftpboot/pxelinux/
total 68880
-rw-r--r-- 1 root root      325 Apr 19 19:10 boot.msg
-r--r--r-- 1 root root 62248424 Apr 19 19:14 initrd.img
-rw-r--r-- 1 root root   116096 Apr 19 19:47 ldlinux.c32
-rw-r--r-- 1 root root    42821 Apr 19 19:01 pxelinux.0
drwxr-xr-x 2 root root     4096 Apr 20 01:47 pxelinux.cfg
-r-xr-xr-x 1 root root  8106848 Apr 19 19:14 vmlinuz
[root@centos-8 ~]# ls -l /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
-rw-r--r-- 1 root root 307 Apr 20 01:47 /var/lib/tftpboot/pxelinux/pxelinux.cfg/default

步骤4:安装和配置DHCP服务器

我们也可以使用DNSMASQ服务器分配IP地址,但是在此示例中,我们将使用DHCP服务器在Linux中执行基于网络的安装。

[root@centos-8 pxelinux.cfg]# dnf install dhcp-server -y

以下是DHCP服务器配置的非常基本的示例

  • PXE文件名由filename定义。
    由于将" tftp"配置为使用"/var/lib/tftp"作为默认位置,我们提供了" pxelinux/pxelinux.0"。

  • "下一个服务器"定义TFTP服务器的IP地址

  • range用于为DHCP请求分配IP地址

提示:

我们也可以在dhcpd.conf中将MAC地址映射到静态IP地址。

[root@centos-8 pxelinux.cfg]# cat /etc/dhcp/dhcpd.conf
allow bootp;
allow booting;
max-lease-time 1200;
default-lease-time 900;
log-facility local7;
option ip-forwarding    false;
option mask-supplier    false;
   subnet 10.10.10.0 netmask 255.255.255.0 {
       option  routers   10.10.10.1;
       option  domain-name-servers  127.0.0.1;
       range 10.10.10.100 10.10.10.140;
       next-server 10.10.10.12;
       filename "pxelinux/pxelinux.0";
   }

启用并启动dhcpd服务

[root@centos-8 pxelinux.cfg]# systemctl enable dhcpd --now
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service.

确保dhcpd服务状态为活动且正在运行

[root@centos-8 ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2017-04-19 19:45:45 IST; 6h ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 30897 (dhcpd)
   Status: "Dispatching packets..."
    Tasks: 1 (limit: 26213)
   Memory: 5.1M
   CGroup: /system.slice/dhcpd.service
           └─30897 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

步骤5:配置kickstart服务器

  • 要配置kickstart服务器,我们需要一个kickstart文件来自动化安装。

  • 在每次安装Red Hat和CentOS时,都会在root用户的主文件夹下创建一个默认的kickstart文件,即/root/anaconda-ks.cfg。

  • 此anaconda kickstart文件包含用于安装服务器的值

  • 我们可以使用此anaconda文件来创建我们的kickstart配置文件并配置kickstart服务器

  • 我们还可以使用Red Hat提供的在线kickstart生成器工具。

尽管我不太喜欢这个工具的选项非常有限,但kickstart支持更多功能

  • 在此示例中,我将使用默认的anaconda.cfg模板来配置kickstart服务器

创建/ks目录,我们将其中存储我们的kickstart文件

[root@centos-8 pxelinux.cfg]# mkdir /ks

复制" anaconda-ks.cfg"的内容,然后重命名为" /ks/kickstart.conf"

[root@centos-8 pxelinux.cfg]# cp /root/anaconda-ks.cfg /ks/kickstart.conf

确保ks目录已经读取并执行了others的许可,而其他用户可以读取kickstart文件。

[root@centos-8 ~]# ls -l /ks/kickstart.conf
-rw-r--r-- 1 root root 1688 Apr 19 20:55 /ks/kickstart.conf

步骤5.1:示例kickstart配置文件

以下是我的kickstart配置文件示例。
我更喜欢执行"基于文本的网络安装"(自从我开始使用Linux的那天起,我有点沉迷于CLI而不是图形)

由于篇幅太长,我将无法在本文中解释kickstart文件的全部内容,我计划写另一篇文章,详细介绍kickstart文件中的所有值。

[root@centos-8 pxelinux]# cat /ks/kickstart.conf
#version=RHEL8
ignoredisk --only-use=sda
# Partition clearing information
clearpart --all
# Use text install
text
# Create APPStream Repo
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream
# Use NFS Repo
nfs --server=10.10.10.12 --dir=/images/
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network  --bootproto=dhcp --device=eth0 --ipv6=ignore --activate
network  --bootproto=dhcp --device=eth1 --onboot=off --ipv6=ignore --activate
network  --hostname=centos8-4.example.com
# Root password
rootpw --iscrypted $w7El/FYx9mbTG6x9$Te.Yg6dq0TsQwGpdSjeDGSw4J9ZBAkLXzT9ODMV7I7lHvX3n5.9PCS4jIkS2GbVLZOpVRLvrua3wwbwA.cfWX.
# Run the Setup Agent on first boot
firstboot --enable
# Do not configure the X Window System
skipx
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Kolkata --isUtc
# Reboot after installation completes
reboot
# Disk partitioning information
autopart --type=plain --fstype=ext4
# Packages to be installed
%packages
@^virtualization-host-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

步骤6:安装和配置NFS

提示:

我们还可以使用其他服务(例如HTTPS,FTP等)共享kickstart和Repo内容,以执行基于网络的安装。

在上一篇文章中,我在RHEL/CentOS 7中使用了HTTP tp设置PXE启动服务器,因此其中我决定使用NFS。

我已经写了另一篇文章,其中包含详细的说明以及安装和配置NFSv4和NFSv3服务器的步骤。

因此,我其中将非常简短:

安装配置NFS所需的nfs-utilsrpm

[root@centos-8 ~]# dnf -y install nfs-utils

以下是我计划为Linux kickstart服务器共享的目录。
这里的/ks包含kickstart配置文件,而/images包含用于安装的RHEL 8 ISO内容

[root@centos-8 ~]# cat /etc/exports
/ks     *(ro,sync,no_root_squash)
/images *(ro,sync,no_root_squash)

再出口股票

[root@centos-8 ~]# exportfs -r

打印可用的共享

[root@centos-8 ~]# exportfs -v
/ks             (sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,no_root_squash,no_all_squash)
/images         (sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,no_root_squash,no_all_squash)

启用并启动nfs-server.service
其中因为我们正在使用NFSV4,所以我们尚未启动或者安装rpcbind。
我们可以在以下位置阅读更多信息:在RHEL/CentOS 7/8中安装和配置NFSv4和NFSv3服务器和客户端的循序渐进指南

[root@centos-8 ~]# systemctl enable nfs-server --now

确保nfs-server服务已启动并正在运行

[root@centos-8 ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
  Drop-In: /run/systemd/generator/nfs-server.service.d
           └─order-with-mounts.conf
   Active: active (exited) since Sun 2017-04-19 19:49:17 IST; 6h ago
  Process: 31119 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
  Process: 31117 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
  Process: 31116 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
  Process: 31144 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  Process: 31132 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 31131 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 31144 (code=exited, status=0/SUCCESS)
Apr 19 19:49:17 centos-8.example.com systemd[1]: Starting NFS server and services...
Apr 19 19:49:17 centos-8.example.com systemd[1]: Started NFS server and services.

我们已经完成了设置PXE引导服务器以在Linux中执行基于网络的安装的步骤。
使用kickstart作为安装方式,我们还在同一节点上配置了kickstart服务器。

接下来,我们将在客户端虚拟机上执行VirtualBox PXE引导安装

步骤7:执行VirtualBox PXE引导安装

我将分享执行VirtualBox PXE引导安装的步骤,因为这里我没有使用物理硬件。
打开客户端虚拟机电源,然后按" F12"选择启动设备

提示:

根据硬件类型,执行基于网络的安装的组合键会有所不同。
在大多数情况下,F12用于PXE引导安装,但是如果此键不起作用,请查阅硬件指南以获取更多信息。

我们将获得要从中启动的启动设备选项列表,我将按" l"键从局域网启动

在下一个屏幕中,使用第一个NIC卡发送DHCP请求。
客户端将向网络中的所有服务器发送广播请求,以查找IP地址。
一旦广播请求到达我们的PXE引导服务器(也配置为DHCP服务器),它将释放IP地址。
我们可以在PXE引导服务器上看到以下消息集。
我正在使用journalctl查看系统消息

Apr 20 01:49:14 centos-8.example.com dhcpd[30897]: DHCPOFFER on 10.10.10.100 to 08:00:27:83:1e:2a via eth1
Apr 20 01:49:15 centos-8.example.com dhcpd[30897]: DHCPDISCOVER from 08:00:27:83:1e:2a via eth1
Apr 20 01:49:15 centos-8.example.com dhcpd[30897]: DHCPOFFER on 10.10.10.100 to 08:00:27:83:1e:2a via eth1
Apr 20 01:49:17 centos-8.example.com dhcpd[30897]: Wrote 2 leases to leases file.
Apr 20 01:49:17 centos-8.example.com dhcpd[30897]: DHCPREQUEST for 10.10.10.100 (10.10.10.12) from 08:00:27:83:1e:2a via eth1
Apr 20 01:49:17 centos-8.example.com dhcpd[30897]: DHCPACK on 10.10.10.100 to 08:00:27:83:1e:2a via eth1

客户端获得IP地址后,接下来它将使用TFTP搜索PXE引导文件。
在此阶段,我们应该在PXE引导服务器(也用作TFTP引导服务器)上的/var/log/messages中看到以下日志

Apr 20 01:49:17 centos-8.example.com systemd[1]: Started Tftp Server.
Apr 20 01:49:17 centos-8.example.com in.tftpd[19710]: Client ::ffff:10.10.10.100 finished pxelinux/pxelinux.0
Apr 20 01:49:17 centos-8.example.com in.tftpd[19711]: Client ::ffff:10.10.10.100 finished pxelinux/ldlinux.c32
Apr 20 01:49:17 centos-8.example.com in.tftpd[19722]: Client ::ffff:10.10.10.100 finished pxelinux/pxelinux.cfg/default
Apr 20 01:49:17 centos-8.example.com in.tftpd[19723]: Client ::ffff:10.10.10.100 finished pxelinux/boot.msg
Apr 20 01:49:30 centos-8.example.com in.tftpd[19732]: Client ::ffff:10.10.10.100 finished pxelinux/vmlinuz
Apr 20 01:49:36 centos-8.example.com in.tftpd[19734]: Client ::ffff:10.10.10.100 finished pxelinux/initrd.img

如果一切正确,则应该获得使用boot.msg文件创建的BOOT MENU。

按下1时,基于网络的安装将开始使用kickstart配置文件。
这是成功安装后我的客户端虚拟机的屏幕截图。