在 RHEL/CentOS 8 上使用 PXE 网络引导安装多个 Linux 发行版
PXE 服务器 – 预启动执行环境是一种标准化的客户端-服务器架构,指示客户端系统使用支持 PXE 的网络接口启动、运行或安装多个 Linux 操作系统在您的网络基础设施上。
要求
- CentOS 8 最小服务器的安装
- RHEL 8 最小服务器的安装
- 在 RHEL/CentOS 8 中配置静态 IP 地址
在本文中,您将了解如何使用 CentOS 8 提供的镜像本地安装存储库在 CentOS/RHEL 8 上安装和配置 PXE 网络启动服务器 和 RHEL 8 ISO 映像。
对于此 PXE 网络引导设置,我们将在系统上安装以下软件包:
- DNSMASQ – 一种轻量级 DNS 转发器,提供 DNS 和 DHCP 服务,并支持 PXE 和 TFTP 服务器。
- Syslinux – 一个 Linux 引导加载程序,为网络引导提供引导加载程序。
- TFTP 服务器 – 一种简单的锁步文件传输协议,可创建可通过网络下载的可启动映像。
- VSFTPD 服务器 – 一种安全文件传输协议,将托管本地安装的镜像 DVD 映像 – 它将充当官方 RHEL/CentOS 8 镜像安装存储库,安装程序将从这里取出所需的软件包。
第 1 步:安装和配置 DNSMASQ 服务器
1. 需要提醒您的是,您的网络接口之一必须配置静态 IP 地址,且该地址必须与提供 PXE 服务的网络 IP 范围相同。
配置静态 IP 地址后,请更新系统软件包并安装 DNSMASQ 守护程序。
dnf install dnsmasq
2.DNSMASQ安装完成后,您将在/etc/dnsmasq.conf
目录下找到其默认配置文件,该文件不言自明,但更多信息由于其解释受到高度评价,因此很难配置。
首先,请确保备份该文件,以防您以后需要查看它,然后使用您最喜欢的编辑器创建一个新的配置文件,如图所示。
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
nano /etc/dnsmasq.conf
3. 现在,将以下配置复制并粘贴到 /etc/dnsmasq.conf
文件中,并根据您的网络设置更改配置参数。
interface=enp0s3,lo
#bind-interfaces
domain=tecmint
DHCP range-leases
dhcp-range= enp0s3,192.168.1.3,192.168.1.253,255.255.255.0,1h
PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.2
Gateway
dhcp-option=3,192.168.1.1
DNS
dhcp-option=6,92.168.1.1, 8.8.8.8
server=8.8.4.4
Broadcast Address
dhcp-option=28,10.0.0.255
NTP Server
dhcp-option=42,0.0.0.0
pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install CentOS 8 from network server 192.168.1.2", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
需要更改的配置语句如下:
- 接口 – 服务器的网络接口应该监听并提供服务。
- bind-interfaces – 取消注释以将接口绑定到给定网卡。
- 域名 – 将其替换为您的域名。
- dhcp-range – 将其更改为您的网络 IP 范围。
- dhcp-boot – 将其替换为您的网络接口 IP 地址。
- dhcp-option=3,192.168.1.1 – 将其替换为您的网络网关。
- dhcp-option=6,92.168.1.1 – 将其替换为您的 DNS 服务器 IP。
- server=8.8.4.4 – 添加您的 DNS 转发器 IP 地址。
- dhcp-option=28,10.0.0.255 – 将其替换为您的网络广播 IP 地址(可选)。
- dhcp-option=42,0.0.0.0 - 添加您的网络时间服务器(0.0.0.0 地址供自我参考)。
- pxe-prompt – 保留默认值。
- pxe=service – 对于 32 位/64 位架构使用 x86PC,并在字符串引号下添加菜单描述提示。
- enable-tftp – 启用内置 TFTP 服务器。
- tftp-root – 添加网络启动文件位置/var/lib/tftpboot。
有关配置文件的其他高级选项,请随意阅读 dnsmasq 手册。
第 2 步:安装 SYSLINUX 引导加载程序
4.完成 DNSMASQ 主要配置后,使用以下命令安装Syslinx PXE引导加载程序包。
dnf install syslinux
5. Syslinx PXE引导加载程序安装在/usr/share/syslinux
下,您可以通过运行ls命令来确认,如图所示。
ls /usr/share/syslinux
步骤 3:安装 TFTP 服务器并使用 SYSLINUX 引导加载程序复制它
6. 现在,安装 TFTP-Server 并将所有 Syslinux 引导加载程序从 /usr/share/syslinux/
复制到 /var/lib /tftpboot
如图所示。
dnf install tftp-server
cp -r /usr/share/syslinux/* /var/lib/tftpboot
步骤 4:设置 PXE 服务器配置文件
7. 默认情况下,PXE 服务器从 pxelinux.cfg
中找到的一组特定文件中读取其配置,该文件必须位于上面 DNSMASQ 配置文件中的 tftp-root 设置中描述的目录。
首先,创建一个 pxelinux.cfg
目录,并通过发出以下命令创建一个 default
文件。
mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
8. 现在使用正确的 Linux 发行版安装选项打开并编辑 PXE default
配置文件。另外,请务必记住此文件中设置的路径必须相对于 /var/lib/tftpboot
目录。
nano /var/lib/tftpboot/pxelinux.cfg/default
以下是您可以使用的示例配置文件,但请确保更改安装映像、协议和 IP 以相应地反映您的网络安装源存储库和位置。
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label 1
menu label ^1) Install CentOS 8 x64 with Local Repo
kernel centos8/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.2/pub devfs=nomount
label 2
menu label ^2) Install CentOS 8 x64 with http://mirror.centos.org Repo
kernel centos8/vmlinuz
append initrd=centos8/initrd.img method=http://mirror.centos.org/centos/8/BaseOS/x86_64/os/ devfs=nomount ip=dhcp
label 3
menu label ^3) Install CentOS 8 x64 with Local Repo using VNC
kernel centos8/vmlinuz
append initrd=centos8/initrd.img method=ftp://192.168.1.2/pub devfs=nomount inst.vnc inst.vncpassword=password
label 4
menu label ^4) Boot from local drive
在上面的配置中,您可以注意到 CentOS 8 启动映像(内核 和 initrd)驻留在 centos7 中> 相对于 /var/lib/tftpboot
的目录(即 /var/lib/tftpboot/centos7
),并且可以使用 上的 FTP 协议访问安装程序存储库>192.168.1.2/pub
(PXE服务器的IP地址)。
另外,菜单标签 2
描述了官方 CentOS 8 安装源镜像存储库(客户端系统必须有互联网连接),菜单标签 3
描述了应该完成客户端安装通过远程VNC(此处将VNC密码替换为强密码)。
重要:如您在上面的配置中看到的,我们使用 CentOS 8 映像进行演示,但您也可以使用 RHEL 8 镜像。
步骤 5:将 CentOS 8 启动映像添加到 PXE 服务器
9.要将CentOS 8镜像添加到PXE服务器,您需要使用wget命令在本地下载CentOS 8 DVD ISO镜像并挂载它。
wget http://centos.mirrors.estointernet.in/8.2.2004/isos/x86_64/CentOS-8.2.2004-x86_64-dvd1.iso
mount -o loop CentOS-8.2.2004-x86_64-dvd1.iso /mnt
10.下载CentOS 8后,您需要创建一个centos8
目录并复制可启动内核和initrd映像。
mkdir /var/lib/tftpboot/centos8
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos8
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos8
采用这种方法的原因是,以后您可以在 /var/lib/tftpboot
下为每个新的 Linux 发行版创建单独的目录,而不会弄乱整个目录结构。
第6步:创建CentOS 8本地镜像安装源
11. 有多种协议(HTTP、HTTPS 或 NFS)可用于设置CentOS 8本地安装源镜像,但我选择了FTP协议,因为使用vsftpd服务器很容易设置。
让我们安装Vsftpd服务器并将所有CentOS 8 DVD内容复制到FTP目录/var/ftp/pub
,如图所示。
dnf install vsftpd
cp -r /mnt/* /var/ftp/pub/
chmod -R 755 /var/ftp/pub
12. 现在所有 PXE 服务器配置已完成,您可以启动、启用和验证 DNSMASQ 和 VSFTPD 服务器的状态。
systemctl start dnsmasq
systemctl status dnsmasq
systemctl start vsftpd
systemctl status vsftpd
systemctl enable dnsmasq
systemctl enable vsftpd
13. 接下来,您需要在防火墙上打开端口,以便客户端系统能够访问 PXE 服务器并从该服务器启动。
firewall-cmd --add-service=ftp --permanent ## Port 21
firewall-cmd --add-service=dns --permanent ## Port 53
firewall-cmd --add-service=dhcp --permanent ## Port 67
firewall-cmd --add-port=69/udp --permanent ## Port for TFTP
firewall-cmd --add-port=4011/udp --permanent ## Port for ProxyDHCP
firewall-cmd --reload ## Apply rules
14. 要验证 FTP 安装源网络位置,请打开浏览器并使用 FTP 协议键入 PXE 服务器 IP 地址,后跟 /pub
网络位置。
ftp://192.168.1.2/pub
第 7 步:将客户端配置为从网络启动
15. 现在,通过从 BIOS 菜单将网络启动配置为主要启动设备,将客户端系统配置为启动并在其系统上安装 CentOS 8。
系统启动后,您将看到 PXE 提示,您需要按 F8
键进入演示,然后按 Enter 键进入 PXE 菜单。
这就是在 CentOS/RHEL 8 上设置最小 PXE 服务器的全部内容。