PXE 高效批量网络装机

发布时间 2023-06-12 19:39:05作者: m_zhuang

一、PXE 批量部署

1. 概述

PXE:

预启动执行环境,在操作系统之前运行

服务端:

运行DHCP服务,用来分配地址、定位引导程序

运行TFTP服务,提供引导程序下载(tftp:小文本传输协议,提供配置文件下载)

客户端:

网卡支持PXE协议

主板支持网络引导

2. 优点

规模化:同时装配多台服务器

自动化:安装系统、配置各种服务

远程实现:不需要光盘、U盘等安装介质

3. 装机流程

(1)客户机的网卡查找dhcp服务,获取ip地址和时间

(2)dhcp服务给客户机分配ip地址和引导程序的地址,通过offer报文把tftp服务器的地址发给客户机

(3)tftp服务器把引导文件(pxelinux)传给客户机

(4)客户机把引导程序加载到内存中

(5)引导程序在tftp服务器中查找配置文件,服务器把配置文件传给客户机(配置文件用ftp获取)

(6)服务器通过vsftp服务和客户端互传文件,客户端获得系统的镜像文件

4. pxe装机需要四大文件

(1)首先需要几个服务:

dhcp:给客户机分配ip地址

xinetd:网络守护进程服务程序,又叫超级服务器,管理轻量级的网络服务,配合tftp

tftp:基于udp协议,简单文件传输,传一些小文件,端口 69

vsftp:用于传输大文件,例如镜像文件

syslinux: 引导加载程序,用来简化首次安装linux的时间,建立维护其他特殊或其他特殊用户的启动盘

(2)四大文件

在 /var/lib/tftpboot/ 目录下

vmlinuz

内核文件(从光盘来的,ioslinux目录下)

initrd.img

系统启动镜像镜像文件(光盘,isolinux)

pxelinux.0

引导文件(syslinux)

default

引导程序的配置文件(需要手写,在光盘ioslinux目录下的isolinux.cfg目录下)

二、部署PXE远程安装服务

此台服务器网卡配置:

ip:192.168.23.5

netmask:255.255.255.0

gateway:192.168.23.2

1. 关闭防火墙

# 关闭防火墙和selinux安全机制
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0

2. 安装配置 tftp xinetd服务

# 本地yum源安装
[root@localhost ~]# yum -y install tftp-server xinetd

# 配置tftp服务配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp

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@localhost ~]# systemctl restart tftp
[root@localhost ~]# systemctl enable tftp

[root@localhost ~]# systemctl restart xinetd
[root@localhost ~]# systemctl enable xinetd


3. 安装配置 dhcp服务

# 本地yum源安装dhcp服务
[root@localhost ~]# yum -y install dhcp

# 配置dhcpd服务配置文件
[root@localhost ~]# cp -af /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
	
	ddns-update-style none;
	next-server 192.168.23.5;
	filename "pxelinux.0"

	subnet 192.168.23.0 netmask 255.255.255.0 {
  	range 192.168.23.100 192.168.23.200;
  	option routers 192.168.23.5;
	}

# 重启并设置dhcpd服务开机自启
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl enable dhcpd


4. 安装配置 vsftpd服务

# 本地yum源安装vsftpd服务
[root@localhost ~]# yum -y install vsftpd

# 配置vsftpd服务
# 创建需要传给客户机的镜像文件
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# df -h
	# 镜像文件挂载位置
	/dev/sr0                 4.3G  4.3G     0  100% /mnt/cdrom

[root@localhost ~]# cp -rf /mnt/cdrom/* /var/ftp/centos7/

# 重启和设置开机自启vsftpd服务
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# systemctl enable vsftpd

5. 配置四大文件

四大文件:

vmlinuz initrd.img pxelinux.0 default

(1)配置 vmlinuz 和 initrd.img 文件

# 将已挂载的镜像文件中的vmlinuz和initerd.img文件复制进tftp的根目录
[root@localhost ~]# cd /mnt/cdrom/images/pxeboot/
[root@localhost pxeboot]# cp vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# cp initrd.img /var/lib/tftpboot/

(2)配置pxelinux.0 引导程序文件

# 本地yum源安装syslinux软件包
[root@localhost ~]# yum -y install syslinux

# 将pxe引导文件复制进tftp的根目录
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

(3)配置default 启动菜单文件

# 创建并配置default文件(默认的启动菜单文件在tftp根目录下的pxelinux.cfg子目录下)
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
	default auto
	prompt 0

	label auto
	kernel vmlinuz
	append initrd=initrd.img method=ftp://192.168.23.5/centos7

	label linux text
	kernel vmlinuz
	append text initrd=initrd.img method=ftp://192.168.23.5/centos7

	label linux rescue
	kernel vmlinuz
	append rescue initrd=initrd.img method=ftp://192.168.23.5/centos7

(4)查看四大文件

[root@localhost ~]# ls /var/lib/tftpboot/

6. 检验PXE是否部署成功

(1)创建裸机

![](https://gitee.com/m-zhuang69/m_blog_images/raw/master/images/2023.05.24/10. 创建test1虚拟机1.png) ![](https://gitee.com/m-zhuang69/m_blog_images/raw/master/images/2023.05.24/11. 创建test1虚拟机2.png)

(2)开启主机检验

三、实现Kickstart无人值守安装

通过PXE部署可以自动安装系统,但是到配置操作系统时却需要手动配置,为使完全真正的实现自动安装操作系统,可以使用Kickstart无人值守工具进行安装。

服务器配置:

网卡:

ip:192.168.23.5

netmask:255.255.255.0

gateway:192.168.23.2

以配置PXE部署

1. 安装Kickstart工具

# 本地yum源安装kickstart工具
[root@localhost ~]# yum -y install system-config-kickstart

2. 配置Kickstart工具

(1)先进入服务器的图形化界面进行配置

(2)进入命令界面配置

[root@localhost ~]# ls
anaconda-ks.cfg       ks.cfg 		initial-setup-ks.cfg

# 将ks.cfg文件复制到 /var/ftp/目录下
[root@localhost ~]# cp /root/ks.cfg /var/ftp/ks.cfg

# 将模板文件中从 %packages到 %end的内容复制到 /var/ftp/ks.cfg
[root@localhost ~]# cat /root/anaconda-ks.cfg
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony

%end

# 粘贴
[root@localhost ~]# vim /var/ftp/ks.cfg 
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony

%end

# 进入引导程序配置文件/var/lib/tftpboot/pxelinux.cfg/default 添加ks引导参数
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 

	label auto
	kernel vmlinuz
	append initrd=initrd.img method=ftp://192.168.23.5/centos7 ks=ftp://192.168.23.5/ks.cfg

(3)检验Kickstart无人值守是否安装成功

重启客户机test1