目录
一、PXE介绍
二、PXE涉及的相关知识点
三、搭建PXE网络体系的前提
四、服务端要安装一系列的依赖环境
五、搭建 PXE 远程安装服务器
5.1、安装并启动TFTP服务
5.2、安装并启用 DHCP 服务
5.3、准备 Linux 内核、初始化镜像文件、准备 PXE 引导程序
5.4、安装FTP服务,准备CentOS 7 安装源
5.5、配置启动菜单文件
验证
六、实现 Kickstart 无人值守安装
一、PXE介绍
PXE(Preboot eXecution Environment)是一种在计算机启动时使用网络接口从远程服务器获取操作系统安装和启动信息的技术。通过PXE,计算机可以从局域网中的PXE服务器上下载操作系统安装文件,并进行自动化的操作系统部署或故障排除。由Intel公司开发的PXE网络引导技术工作在Client/Server模式,可以同时装配多台机器,安装系统、配置各种服务,同时不需要光盘、U 盘等安装介质实现远程连接。
二、PXE涉及的相关知识点
PXE协议:PXE是一种预启动执行环境,提供了一种从网络上启动计算机并在网络环境中安装操作系统的方法。PXE协议包括了BOOTP(Bootstrap Protocol)和TFTP(Trivial File Transfer Protocol),同时也支持DHCP、HTTP等其他协议。
PXE引导文件:PXE引导文件包括了各种操作系统的引导文件,如Linux内核、Windows PE等,它们通常存储在PXE服务器上的TFTP目录中。当客户端通过PXE启动时,它会从PXE服务器上下载相应的引导文件。
DHCP服务:DHCP服务是为客户端分配IP地址、子网掩码、网关等网络参数的协议。在PXE自动装机过程中,DHCP服务器会向客户端提供PXE服务器的IP地址和PXE引导文件的位置信息。
TFTP服务:TFTP服务是一个简单的文件传输协议,用于将引导文件和操作系统映像从PXE服务器传输到客户端计算机上。
操作系统映像:操作系统映像是安装操作系统所需的文件,通常包括了操作系统核心文件、驱动程序、软件包等。在PXE自动装机中,这些映像文件存储在PXE服务器上,并通过TFTP服务传输到客户端计算机上进行安装。
三、搭建PXE网络体系的前提
1、合适的设备:需要拥有一台作为PXE服务器的计算机,该计算机需要具备足够的处理能力和存储空间来运行PXE服务和存储操作系统映像。此外,还需要一台或多台客户端计算机,这些计算机将通过PXE引导从服务器上下载并安装操作系统。
2、网络基础设施:你需要拥有一个稳定可靠的局域网环境,以便PXE服务器和客户端计算机之间进行通信。确保网络连接正常、IP地址分配正确,并且网络设备(如交换机、路由器)能够正常工作。客户机的网卡要支持PXE协议(集成BOOTROM芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在BIOS设置中允许从 Network 或 LAN 启动即可。
3、PXE服务器软件:你需要选择并安装适当的PXE服务器软件。常用的PXE服务器软件包括ISC DHCP、TFTPD32、tftp-server、Serva等,它们提供了DHCP、TFTP等服务,方便配置和管理PXE引导文件、操作系统映像等。
四、服务端要安装一系列的依赖环境
TFTP:简单文件传输协议。基于UDP实现,用于客户端和服务端之间进行小文件的传输
xinetd:网络守护进程服务器,管理TFTP
DHCP:分配IP地址,提供引导文件的文件
TFP:传输镜像等等大文件
kickstart:无人值守程序
五、搭建 PXE 远程安装服务器
服务器中包含 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
服务器IP地址:172.16.80.12
5.1、安装并启动TFTP服务
//关闭防火墙,临时禁用SELinux安全机制
[root@12 ~]# systemctl stop firewalld
[root@12 ~]# setenforce 0
//安装 TFTP 服务
[root@12 ~]# yum -y install tftp-server xinetd
//修改TFTP服务的配置文件
//将第十行 wait 的值改为 yes (表示可以连接多台主机)
//将第十四行的 disable 的值改为 no (表示开启TFTP服务)
[root@12 ~]# vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = no
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
//重启tftp和xinetd服务,并设置开机自启
[root@12 ~]# systemctl restart tftp
[root@12 ~]# systemctl enable tftp
[root@12 ~]# systemctl restart xinetd
[root@12 ~]# systemctl enable xinetd
5.2、安装并启用 DHCP 服务
//安装dhcp软件包
[root@12 ~]# yum -y install dhcp
//将dhcp配置模板复制到dhcp配置文件中
[root@12 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? yes
//修改DHCP服务的配置文件
[root@12 ~]# vim /etc/dhcp/dhcpd.conf
//在11行的max-lease-time 7200; 下添加
//ddns-update-style none;
//next-server 172.16.80.12;
//filename "pxelinux.0";
//如下所示
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
next-server 172.16.80.12;
filename "pxelinux.0";
//修改第35到38行的subnet模块
//如下所示
subnet 172.16.80.0 netmask 255.255.255.0 {
range 172.16.80.50 172.16.80.60;
option routers 172.16.80.12;
}
//:wq 保存退出
//重启dhcpd服务,并设置为开机自启
[root@12 ~]# systemctl restart dhcpd
[root@12 ~]# systemctl enable dhcpd
对配置文件里修改/添加的内容解释
ddns-update-style none; -> 禁用 DNS 动态更新
next-server 172.16.80.12; -> 指定 TFTP 服务器的地址
filename "pxelinux.0"; -> 指定要下载的 PXE 引导程序的文件
subnet 172.16.80.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 172.16.80.50 172.16.80.60; #设置地址池
option routers 172.16.80.12; #默认网关地址指向TFTP服务器的IP地址
}
5.3、准备 Linux 内核、初始化镜像文件、准备 PXE 引导程序
[root@12 ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@12 ~]# cd /mnt/images/pxeboot
//复制 Linux系统的内核文件 到TFTP根目录下
[root@12 pxeboot]# cp vmlinuz /var/lib/tftpboot/
//复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下
[root@12 pxeboot]# cp initrd.img /var/lib/tftpboot/
[root@12 pxeboot]# yum -y install syslinux
//复制 PXE引导程序 到TFTP根目录下
[root@12 pxeboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
如果报如下错误:
[root@12 ~]# mount /dev/sr0 /mnt
mount: no medium found on /dev/sr0则
5.4、安装FTP服务,准备CentOS 7 安装源
//安装vsftpd服务
[root@12 pxeboot]# yum -y install vsftpd
//在ftp根目录下创建目录centos7
[root@12 pxeboot]# mkdir /var/ftp/centos7
//将镜像文件强制复制到centos7目录中,可加&让它自己后台运行
[root@12 pxeboot]# cp -rf /mnt/* /var/ftp/centos7/
//重启vsftpd服务,设置开机自启
[root@12 pxeboot]# systemctl restart vsftpd
[root@12 pxeboot]# systemctl enable vsftpd
5.5、配置启动菜单文件
默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default。
[root@12 pxeboot]# mkdir /var/lib/tftpboot/pxelinux.cfg
//创建default文件
[root@12 pxeboot]# vim /var/lib/tftpboot/pxelinux.cfg/default
//添加内容如下
default auto
#指定启动菜单的默认入口
prompt 0
#不等待用户控制,自行向下选择
label auto
#图像化界面的引导入口,label 用来定义启动项
kernel vmlinuz
#加载内核文件,kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://172.16.80.12/centos7
label linux text
#文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://172.16.80.12/centos7
label linux rescue
#救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://172.16.80.12/centos7
//:wq保存退出
验证
自定义新建一个虚拟机,简单测试验证一下 :
开启刚才新建的虚拟机
会有如下提示,点否即可
服务器配置成功
六、实现 Kickstart 无人值守安装
在上述实验中,已经可以做到开机就能自动获取镜像,安装镜像,配置基础网路配置。但是后半部分依旧需要手动安装。所以要实现全自动化,就要引入Kickstart程序服务,实现真正完全全自动化安装。
//安装软件包
[root@12 pxeboot]# yum install -y system-config-kickstart
MobaXterm远程连接软件可以用命令调出 Kickstart 配置程序界面,命令为:system-config-kickstart
//打开 Kickstart 配置程序界面
[root@12 pxeboot]# system-config-kickstart
基本配置
安装方法
引导装载程序选项
分区信息
.
点击ADD添加布局
添加 /boot
添加 交换分区
添加 /
网络配置
防火墙配置
安装后脚本
保存文件
//保存后配置文件在~目录
[root@12 pxeboot]# cd ~
[root@12 ~]# ls
anaconda-ks.cfg Documents ks.cfg original-ks.cfg Public Videos
Desktop Downloads Music Pictures Templates
//编辑 ks.cfg ,加入要下载的包
[root@12 ~]# vim ks.cfg
#在原有的基础上添加以下内容
%packages
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@print-client
@x11
binutils
chrony
ftp
gcc
kernel-devel
kexec-tools
make
open-vm-tools
patch
python
%end
[root@12 ~]# cp ks.cfg /var/ftp/ks.cfg
[root@12 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
#改为以下内容
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://172.16.80.12/centos7 ks=ftp://172.16.80.12/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://172.16.80.12/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://172.16.80.12/centos7
重置刚刚建的虚拟机,虚拟机会自动安装
自动装机,实验成功