在当今的网络时代,服务器的部署和维护是每个组织面临的重大挑战。随着数据中心规模的不断扩大和服务需求的不断增加,传统的手动安装操作系统和应用软件的方法变得越来越不适应现代的需求。批量部署和自动化管理成为了亟待解决的问题。在这样的背景下,PXE(Preboot Execution Environment,预启动执行环境)技术应运而生,提供了一个高效的网络启动和安装操作系统的解决方案。
PXE(预启动执行环境)的基础知识是理解和实施PXE网络装机的关键。
PXE工作原理
PXE的工作原理基于客户端/服务器模型。当支持PXE的客户机开机启动时,它将通过网络接口发送一个DHCP请求。这个请求不仅包含了获取IP地址的标准查询,还包含了寻找PXE服务的特殊需求。网络中的DHCP服务器接收到此请求后,除了提供IP地址外,还会提供引导服务器(通常是TFTP服务器)的位置和需要加载的启动文件名。客户机随后与提供的TFTP服务器建立连接,下载引导文件和操作系统镜像,完成操作系统的加载和启动过程。这一系列过程实现了在没有硬盘操作系统的情况下,通过网络启动和安装操作系统的目的。
PXE的组成要素
二、PEX环境部署,安装
在一台PXE服务器的建立与部署中需要考虑包括环境准备、服务器软件的安装与配置,以及引导文件的准备。具体来说,我们需要考虑到以下各个方面:
环境需求分析
首先,对于部署PXE服务器的环境进行需求分析。这通常涉及以下几个方面:
准备CentOS7安装源
CentOS 7 的网络安装源一般通过 HTTP、FTP 协议发布,另外也支持 NFS(Network File System,网络文件系统)协议。
若采用 FTP 协议发布安装源,可以在服务器上部署一个 YUM 软件仓库。
[root@localhost ftp]# yum -y install vsftpd //安装ftp
[root@localhost ftp]# cd /var/ftp/ //进入ftp文件夹
[root@localhost ftp]# mkdir CentOS7 //创建CentOS7文件夹
[root@localhost ftp]# cp -rf /media/cdrom/* ./ //将挂载到本地的yum仓库文件复制到ftp
[root@localhost ftp]# systemctl start vsftpd //启动
安装并启用TFTP
TFTP 服务由 tftp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只要将“disable = yes”改为“disable = no”,然后启动 TFTP 服务即可。
[root@localhost ~]# yum -y install tftp-server //安装tftp服务
[root@localhost ~]# vim /etc/xinetd.d/tftp //修改tftp配置文件启用tftp
socket_type = dgram
protocol = udp //tftp采用 UDP 传输协议
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定tftp根目录
disable = no //将本项目改为no启动tftp
准备 Linux 内核、初始化镜像文件
用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS 7 系统光盘获得,分别为 vmlinuz 和 initrd.img,位于文件夹 images/pxeboot 下。找到这两个文件并将其复制到 tftp 服务的根目录下。
[root@localhost ~]# cd /media/cdrom/images/pxeboot/
[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
准备 PXE 引导程序
用于 PXE 网络安装的引导程序为 pxelinux.0,由软件包 syslinux 提供。安装好软件包syslinux,然后将文件 pxelinux.0 也复制到 tftp 服务的根目录下。
[root@localhost ~]# cp /usr/share/syslinux/ //安装syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
安装并启用 DHCP 服务
由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。
[root@localhost ~]# yum -y install dhcp //安装dhcp服务
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf //配置dhcp配置文件
subnet 192.168.10.0 netmask 255.255.255.0 { //配置子网网段与掩码
range 192.168.10.150 192.168.10.200; //指定分配的ip范围
next-server 192.168.10.101; //指定tftp服务器地址
filename "pxelinux.0"; //指定pex文件名
}
[root@localhost ~]# systemctl start dhcpd //启动dhcp服务
从上述过程可以看到,与一般 DHCP 服务不同的是,配置文件中增加了 netx-server 和 filename 这两行记录,分别用来指定 TFTP 服务器的地址和 PXE 引导程序的文件名。
配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作手动建立。
[root@localhost pxelinux.cfg]# cd /var/lib/tftpboot/
[root@localhost pxelinux.cfg]# mkdir pxelinux.cfg
[root@localhost pxelinux.cfg]# vim default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.10.101/CentOS7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.10.101/CentOS7
label rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.10.101/CentOS7
默认自动安装(auto):
default auto:这意味着如果用户不进行任何选择,系统将默认选择auto这个label。
prompt 1:这行配置使得在引导时会出现一次提示,要求用户做出选择。如果不输入任何内容,将会按照default指定的选项自动进行。
自动安装(auto):
label auto定义了一个启动项auto。
kernel vmlinuz和append initrd=initrd.img method=ftp://192.168.10.101/CentOS7:表示在启动时加载指定的内核镜像vmlinuz和初始RAM盘镜像initrd.img,并指定安装方法和路径为通过FTP从192.168.10.101上的CentOS7目录获取。
文本模式安装(linux text):
label linux text定义了一个启动项,它在启动时将进入文本模式。
这里的append行也指定了安装路径,但多了一个text参数,表示安装过程将不会使用图形界面,而是文本模式。
救援模式(rescue):
label rescue定义了一个启动项用于系统救援。
类似的,append行指定了启动内核和初始化RAM盘镜像,并通过添加rescue参数来告诉系统在启动后进入救援模式。
该配置提供了一个灵活的启动菜单,允许用户选择不同的操作模式——包括自动安装、文本模式安装和救援模式。根据method=ftp://指定的路径,系统将会通过FTP从远程位置获取必要的安装文件和镜像。确保你的FTP服务器正确配置且CentOS7目录中含有所需的安装源文件。
在配置这些PXE启动项时,关键在于确保所有引用的文件(如vmlinuz和initrd.img)都已经被正确放置在TFTP服务器的相应目录下,并且FTP服务器上的CentOS7目录可访问且包含所有必要的安装文件。
上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。其中,prompt 用来设置是否等待用户选择;label 用来定义并分隔启动项;kernel 和 append用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人值守安装时只需要一个入口就够了。
四、PXE网络装机的高级技巧
自定义PXE启动菜单
自定义PXE启动菜单能够为用户提供选择不同操作系统或特定配置的机会。这可以通过配置TFTP服务器中的pxelinux.cfg文件来实现。例如,可以创建自定义菜单项来启动特定版本的Linux发行版,或者进行故障恢复。
UI vesamenu.c32
MENU TITLE My Custom PXE Menu
DEFAULT linux
LABEL linux
MENU LABEL ^Install Linux
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=ftp://192.168.10.101/CentOS7
LABEL advanced
MENU LABEL ^Advanced Options
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=ftp://192.168.10.101/CentOS7 advancedoption=true
此配置为用户提供了一个清晰、用户友好的菜单界面,用户可以通过按键选择标记的安装选项.
多操作系统支持
LABEL linux
MENU LABEL Install Linux
KERNEL linux_distro/vmlinuz
APPEND initrd=linux_distro/initrd.img inst.repo=ftp://192.168.10.101/CentOS7
LABEL winpe
MENU LABEL Install Windows PE
KERNEL windows_pe/pxeboot.0
无人值守安装配置
#System language
lang en_US
#Keyboard layouts
keyboard us
#Root password
rootpw --plaintext password
#System timezone
timezone Europe/London
#Reboot after installation
reboot
使用此Kickstart文件,安装过程会自动化进行,包括语言、键盘布局、密码设置及时区等。
PXE装机环境的安全考虑
在PXE网络装机中,安全性不容忽视。以下是几个关键点:
访问控制:确保只有授权的设备可以进行PXE启动。这可能需要在网络上实施IP/MAC地址绑定策略。
加密传输:使用安全的方法(如HTTPS而非HTTP, sFTP而非FTP)来传输安装文件和镜像,以防止中间人袭击。
通过实施上述高级技巧和安全措施,PXE网络装机不仅可以变得更高效、自动化,而且能够保证部署过程的安全性。掌握这些技巧有助于在大规模部署场景中提高效率,尤其是当部署复杂多样化的操作系统和应用配置时。