网站搜索

在 RHEL/CentOS 7 中为多个 Linux 发行版安装设置“PXE 网络引导服务器”


PXE 服务器 – 预启动执行环境 – 指示客户端计算机直接通过网络接口启动、运行或安装操作系统,无需刻录 CD/DVD 或使用物理介质,或者,可以简化在多台计算机的网络基础设施上同时安装 Linux 发行版的工作。

要求

  1. CentOS 7 最小安装过程
  2. RHEL 7 最小安装过程
  3. 在 RHEL/CentOS 7 中配置静态 IP 地址
  4. 删除 RHEL/CentOS 7 中不需要的服务
  5. 在 RHEL/CentOS 7 中安装 NTP 服务器以设置正确的系统时间

本文将介绍如何使用镜像本地安装存储库(提供的源)在 RHEL/CentOS 7 x64 位上安装和配置 PXE 服务器通过 CentOS 7 DVD ISO 映像,在 DNSMASQ 服务器的帮助下。

它提供DNSDHCP服务,Syslinux软件包提供网络启动的引导加载程序,TFTP-Server,它使可使用简单文件传输协议(TFTP)和VSFTPD服务器通过网络下载可启动映像,该服务器将托管本地安装的镜像DVD映像 - 它将充当官方RHEL /CentOS 7 镜像安装存储库,安装程序将从其中提取所需的软件包。

第 1 步:安装和配置 DNSMASQ 服务器

1.无需提醒您,绝对要求您的一个网卡接口,如果您的服务器具有多个网卡,则必须配置一个静态IP地址,该地址与所属的IP范围相同提供PXE服务的网段。

因此,在配置静态 IP 地址、更新系统并执行其他初始设置后,请使用以下命令安装 DNSMASQ 守护程序。

yum install dnsmasq

2. 位于 /etc 目录中的 DNSMASQ 主要默认配置文件是不言自明的,但很难编辑,请按照其高度评论的解释进行操作。

首先,请确保备份此文件,以便以后需要查看它,然后,通过发出以下命令,使用您最喜欢的文本编辑器创建一个新的空白配置文件。

mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.backup
nano /etc/dnsmasq.conf

3. 现在,将以下配置复制并粘贴到 dnsmasq.conf 文件中,并确保更改以下解释的语句以相应地匹配您的网络设置。

interface=eno16777736,lo
#bind-interfaces
domain=centos7.lan
DHCP range-leases
dhcp-range= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
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 7 from network server 192.168.1.20", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot

您需要更改的语句如下:

  1. 接口 – 服务器应侦听并提供服务的接口。
  2. bind-interfaces – 取消注释以仅在此接口上绑定。
  3. domain – 将其替换为您的域名。
  4. dhcp-range – 将其替换为您在此网段上的网络掩码定义的 IP 范围。
  5. dhcp-boot – 将 IP 语句替换为您的接口 IP 地址。
  6. dhcp-option=3,192.168.1.1 – 将 IP 地址替换为您的网段网关。
  7. dhcp-option=6,92.168.1.1 – 将 IP 地址替换为您的 DNS 服务器 IP – 可以定义多个 DNS IP。
  8. server=8.8.4.4 – 输入您的 DNS 转发器 IP 地址。
  9. dhcp-option=28,10.0.0.255 – 将 IP 地址替换为网络广播地址 – 可选。
  10. dhcp-option=42,0.0.0.0 – 放置您的网络时间服务器 – 可选(0.0.0.0 地址供自我参考)。
  11. pxe-prompt – 保留默认值 – 表示按 F8 键进入菜单 60,等待时间为秒。
  12. pxe=service – 对于 32 位/64 位架构使用 x86PC,并在字符串引号下输入菜单描述提示。其他值类型可以是:PC98、IA64_EFI、Alpha、Arc_x86、Intel_Lean_Client、IA32_EFI、BC_EFI、Xscale_EFI 和 X86-64_EFI。
  13. enable-tftp – 启用内置 TFTP 服务器。
  14. tftp-root – 使用 /var/lib/tftpboot – 所有网络启动文件的位置。

有关配置文件的其他高级选项,请随时阅读 dnsmasq 手册。

第 2 步:安装 SYSLINUX 引导加载程序

4.编辑并保存DNSMASQ主配置文件后,通过发出以下命令继续安装Syslinx PXE引导加载程序包。

yum install syslinux

5. PXE引导加载程序文件位于/usr/share/syslinux绝对系统路径中,因此您可以通过列出该路径内容来检查它。此步骤是可选的,但您可能需要了解此路径,因为在下一步中,我们会将其所有内容复制到 TFTP 服务器 路径。

ls /usr/share/syslinux

第 3 步:安装 TFTP 服务器并使用 SYSLINUX 引导加载程序填充它

6. 现在,让我们进入下一步并安装 TFTP-Server,然后将 Syslinux 软件包提供的所有 bootloders 文件从上面列出的位置复制到 /通过发出以下命令来更改 var/lib/tftpboot 路径。

yum install tftp-server
cp -r /usr/share/syslinux/* /var/lib/tftpboot

步骤 4:设置 PXE 服务器配置文件

7. 通常,PXE 服务器 从一组特定文件(GUID 文件 - 首先是 MAC)读取其配置文件 – 下一个,默认 文件 – 最后一个)托管在名为 pxelinux.cfg 的文件夹中,该文件夹必须位于 tftp-root 中指定的目录中> DNSMASQ 主配置文件中的语句。

创建所需的目录 pxelinux.cfg 并通过发出以下命令在其中填充 default 文件。

mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default

8. 现在是时候使用有效的 Linux 发行版安装选项编辑 PXE Server 配置文件了。另请注意,此文件中使用的所有路径都必须相对于 /var/lib/tftpboot 目录。

下面您可以看到一个示例配置文件,您可以使用它,但修改安装映像(内核和 initrd 文件)、协议(FTP、HTTP、HTTPS、NFS)和 IP 以相应地反映您的网络安装源存储库和路径。

nano /var/lib/tftpboot/pxelinux.cfg/default

将以下完整摘录添加到文件中。

default menu.c32
prompt 0
timeout 300
ONTIMEOUT local

menu title ########## PXE Boot Menu ##########

label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount

label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp

label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append  initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password

label 4
menu label ^4) Boot from local drive

如您所见,CentOS 7 启动映像(内核和 initrd)驻留在相对于 /var/lib/tftpboot 的名为 centos7 的目录中(在绝对系统路径上,这意味着/var/lib/tftpboot/centos7)和安装程序存储库可以通过使用192.168.1.20/pub网络位置上的FTP协议来访问 -在这种情况下,存储库托管在本地,因为 IP 地址与 PXE 服务器地址相同)。

另外,菜单 label 3 指定客户端安装应通过 VNC 从远程位置完成(此处将 VNC 密码替换为强密码),以防您在无头客户端上安装菜单标签 2 指定为
安装源是 CentOS 7 官方 Internet 镜像(这种情况需要客户端通过 DHCP 和 NAT 建立可用的 Internet 连接)。

重要:正如您在上面的配置中看到的,我们使用 CentOS 7 进行演示,但您也可以定义 RHEL 7 映像,并遵循完整的说明和配置仅基于 CentOS 7,因此选择发行版时要小心。

步骤 5:将 CentOS 7 启动映像添加到 PXE 服务器

9. 此步骤需要 CentOS 内核和 initrd 文件。要获取这些文件,您需要 CentOS 7 DVD ISO 映像。因此,继续下载 CentOS DVD 映像,将其放入 DVD 驱动器中,然后通过发出以下命令将映像装载到 /mnt 系统路径。

使用 DVD 而不是最小 CD 映像的原因是,稍后此 DVD 内容将用于创建
FTP 源的本地安装程序存储库。

mount -o loop /dev/cdrom  /mnt
ls /mnt

如果您的计算机没有 DVD 驱动器,您还可以使用 wgetcurl 实用程序从 CentOS 镜像本地下载 CentOS 7 DVD ISO 并安装它。

wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
mount -o loop /path/to/centos-dvd.iso  /mnt

10. DVD 内容可用后,创建 centos7 目录并将 CentOS 7 可启动内核和 initrd 映像从 DVD 安装位置复制到 centos7 文件夹结构。

mkdir /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/vmlinuz  /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/initrd.img  /var/lib/tftpboot/centos7

使用这种方法的原因是,稍后您可以在 /var/lib/tftpboot 路径中创建新的单独目录,并将其他 Linux 发行版添加到 PXE 菜单,而不会弄乱整个目录结构。

第六步:创建CentOS 7本地镜像安装源

11. 虽然您可以通过多种协议(例如 HTTP、HTTPS 或 NFS)设置安装源镜像,但在本指南中,我选择了FTP > 协议,因为在 vsftpd 服务器的帮助下非常可靠且易于设置。

进一步安装 vsftpd 守护进程,将所有 DVD 安装内容复制到 vsftpd 默认服务器路径 (/var/ftp/pub) – 这可能需要一段时间,具体取决于您的系统资源和附加通过发出以下命令对此路径的可读权限。

yum install vsftpd
cp -r /mnt/*  /var/ftp/pub/ 
chmod -R 755 /var/ftp/pub

第 7 步:在系统范围内启动并启用守护进程

12. 现在 PXE 服务器配置终于完成,启动 DNSMASQVSFTPD 服务器,验证其状态并在系统范围内启用它,以通过运行以下命令,在每次系统重新启动后自动启动。

systemctl start dnsmasq
systemctl status dnsmasq
systemctl start vsftpd
systemctl status vsftpd
systemctl enable dnsmasq
systemctl enable vsftpd

步骤8:打开防火墙并测试FTP安装源

13. 要获取需要在防火墙上打开的所有端口的列表,以便客户端计算机能够访问 PXE 服务器并从 PXE 服务器启动,请运行 netstat 命令并添加 CentOS 7 Firewalld 根据 dnsmasq 和 vsftpd 侦听端口进行规则。

netstat -tulpn
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 安装源网络路径,请在本地打开浏览器(lynx 应该执行此操作)或在另一台计算机上,然后键入 PXE 服务器的 IP 地址
FTP 协议后跟 URL 上的 /pub 网络位置,结果应如下面的屏幕截图所示。

ftp://192.168.1.20/pub

15. 要在实时模式下调试 PXE 服务器的最终错误配置或其他信息和诊断,请运行以下命令。

tailf /var/log/messages

16.最后,您需要执行的最后一步是卸载 CentOS 7 DVD 并移除物理介质。

umount /mnt

步骤 9:将客户端配置为从网络启动

17. 现在,您的客户可以通过从其系统 BIOS 将网络启动配置为主启动设备或在期间按指定键来在其计算机上启动并安装 CentOS 7 BIOS POST 操作如主板手册中指定。

以便选择网络启动。出现第一个 PXE 提示后,按 F8 键进入演示,然后按 Enter 键继续进入 PXE 菜单。

18.进入 PXE 菜单后,选择 CentOS 7 安装类型,按 Enter 键并继续安装过程,就像从本地安装一样媒体启动设备。

请注意,使用此菜单中的变体 2 需要目标客户端上有有效的互联网连接。另外,在下面
您可以在屏幕截图中看到通过 VNC 进行客户端远程安装的示例。

这就是在 CentOS 7 上设置最小 PXE 服务器的全部内容。在本系列的下一篇文章中,我将讨论与此 PXE 服务器配置相关的其他问题,例如如何使用 Kickstart 文件设置 CentOS 7 的自动安装以及添加其他 Linux 发行版到 PXE 菜单 – Ubuntu ServerDebian 7