1.服务器准备

利用安装光盘 安装如下软件包:

dhcp-common.noarch
dhcp-server.aarch64
tftp-server.aarch64
tftp.aarch64
nginx

准备好安装系统的ISO,我们需要从ISO从取出如下文件:

images/pxeboot/initrd.img
images/pxeboot/vmlinuz

EFI/BOOT/BOOTAA64.EFI
EFI/BOOT/grubaa64.efi
EFI/BOOT/grub.cfg
EFI/BOOT/mmaa64.efi

2.配置DHCP服务器。

由于默认的dhcp配置文件是空的,所以我们需要将原先的配置文件替换为样板文件,在样板文件中修改配置

cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf

使用编辑器打开/etc/dhcp/dhcpd.conf在下方添加如下内容:

subnet 192.168.3.0 netmask 255.255.255.0 {     #dhcp服务器分配的网段需要与本机的固定IP地址位于同一网段
    range 192.168.3.100 192.168.3.253;    #指定自动分配的IP地址范围
    option routers 192.168.3.1;          #指定网关地址
    option domain-name-servers 192.168.3.1;  #指定DNS服务器地址
    option domain-name "test.org";   #DNS搜索域名
    next-server 192.168.3.137;      #指定TFTP服务器IP(关键设定项,这里设置为本机)
    filename "uefi/BOOTAA64.EFI";         #指定网卡pxe启动引导文件名(关键设定项,更具实际情况填写文件)
}

重启DHCP服务。

3.配置TFTP服务

我们可以直接把pxe启动文件放到/var/lib/tftpboot/中,重启tftp服务即可。
我这里的文件目录如下:

[root@localhost uefi]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
└── uefi
    ├── BOOTAA64.EFI
    ├── fonts
    │   └── unicode.pf2
    ├── grubaa64.efi
    ├── grub.cfg
    ├── grub.cfg.bak
    ├── initrd.img
    ├── mmaa64.efi
    └── vmlinuz

2 directories, 8 files
[root@localhost uefi]#

如上文件都是从安装光盘中取出。
随后重启tftp服务。
systemctl restart tftp.service systemctl restart tftp.socket

4.配置nginx网络镜像源。

在nginx默认网站目录下创建一个名为rocky9.2的文件夹,将光盘直接挂载到该文件夹中。使用浏览器访问可以看到文件即可。

[root@localhost uefi]# ll /var/www/html/rocky9.2/
总用量 26
drwxr-xr-x. 1 root root 2048  5月 15  2023 AppStream
drwxrwxr-x. 1 root root 2048  5月 15  2023 BaseOS
-r--r--r--. 1 root root 2048  5月 12  2023 boot.catalog
-rw-r--r--. 1 root root 5504  5月 12  2023 COMMUNITY-CHARTER
-rw-r--r--. 1 root root 1394  5月 12  2023 Contributors
drwxrwxr-x. 1 root root 2048  5月 12  2023 EFI
-rw-r--r--. 1 root root  372  5月 12  2023 EULA
drwxrwxr-x. 1 root root 2048  5月 12  2023 images
-rw-r--r--. 1 root root 2204  4月 27  2023 LICENSE
-rw-r--r--. 1 root root  102  5月 13  2023 media.repo
-rw-r--r--. 1 root root 1750  5月 12  2023 RPM-GPG-KEY-Rocky-9
-rw-r--r--. 1 root root 3159  5月 12  2023 RPM-GPG-KEY-Rocky-9-Testing
[root@localhost uefi]#

47.png

4.配置自动安装文件kickstart

一般情况下,安装完rocky9.2后会在root用户家目录下会有一个anaconda-ks.cfg的文件,该文件为安装本机rocky时的配置。利用该文件可以实现全自动安装rockylinux而不用在安装过程中设置其他内容。
在nginx默认站点目录下创建ksdir文件夹,将anaconda-ks.cfg文件直接放到该文件夹下,浏览器可以直接访问即可。

# Generated by Anaconda 34.25.2.10
# Generated by pykickstart v3.32
#version=RHEL9
# Use graphical install
graphical
#repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream
url --url="http://192.168.3.137/rocky9.2/" #此处填写先前配置的网络安装源。

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

# Keyboard layouts
keyboard --xlayouts='cn'
# System language
lang zh_CN.UTF-8

# Network information
network  --bootproto=dhcp --device=ens160 --ipv6=auto --activate


%packages
@^minimal-environment #最小化安装

%end

# Run the Setup Agent on first boot
firstboot --enable

# Generated using Blivet version 3.6.0
ignoredisk --only-use=sda
autopart #自动分区
# Partition clearing information
clearpart --all #清除磁盘全部分区

# System timezone
timezone Asia/Shanghai --utc

# Root password 设置root密码 格式加密。
rootpw --iscrypted --allow-ssh $6$Atk4m/gb7cM.vgC2$33G7WoPY/jgO3Q2G/ivAE6Lq.S5pFWvu5qtautsUoGR5OK3XYjP4.dDsAhJvd.Kg5u2L0K7dScdkPjVHF42JT0

5.配置启动项,设置自动安装文件ks。

编辑先前放在tftpboot/uefi/grub.cfg文件,内容如下:

set timeout=30
menuentry 'Install CentOS 8' {
    linux /uefi/vmlinuz ip=dhcp inst.repo=http://192.168.3.137/rocky9.2/ inst.ks=http://192.168.3.137/ksdir/anaconda-ks.cfg
    initrd /uefi/initrd.img
}

准备完成后即可将电脑设置为PXE启动,引导方式选UEFI即可。如果不需要自动安装的话可以在grub.cfg中将inst.ks删除。