PXE简介

PXE就是预启动执行环境,是一种引导启动的方式。这种协议一般由两部分构成,一部分是服务器端,一个是客户端。简单来说,我们通过这种方式可以自己创建一个“安装源”,在安装系统的时候只要能找到这个“源”便可以实现系统的安装。在实现无人值守的安装前,我们必须要搭建一些服务,来实现“安装源”的建立,例如ftp、http、tftp、dhcp等。

前提条件

1)客户机的网卡支持PXE协议,且主板支持网络引导,目前绝大多数服务器和PC都支持此项。
2)网络中有一台DHCP服务器,以便为客户机自动分配ip,指定引导文件位置
3)服务器通过TFTP(简单文件传输协议)提供引导镜像文件的下载。

原理解释

PXE客户端通过网卡向局域网内发送ip请求,然后DHCP服务器会提供给给它一个ip地址和系统安装所需要的文件,接下使用接收到的文件进行系统安装。而安装的过程又需要其他服务器提供的资源,例如:yum源,内核文件等,当主机拿到这些资源,便可以顺利的安装了。最终结果是:任意一台主机在选着网络启动时会获取DHCP服务器分发的ip,通过通过获取到的ip地址与局域网内的TFTP服务器通信并获取启动文件,与FTP或者HTTP通信并获取yum源文件及内核文件等。之后开始自动安装,而这个过程不需要人在做任何操作。

PXE工作图解

简单的网络拓扑
在这里插入图片描述
工作示意图
在这里插入图片描述

centos7 批量网络装机配置

所需准备

服务器端要求:
安装源(系统盘文件);
TFTP服务;
DHCP服务;
Linux内核;
能够向客户机裸机发送PXE引导程序;
启动菜单及无人应答文件等。
客户端要求:
客户端的网卡支持PXE协议,且主板支持网络引导(现在多数都支持);
设置BIOS允许从Network或LAN启动;

配置yum源,安装ftp服务器

这里挂载光盘配置yum源省略,直接安装ftp

yum install -y install vsftpd*

修改vsftp配置文件允许root和匿名用户登录

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES

在这里插入图片描述

将黑白名单中的root用户删除,允许root登录ftp

vim /etc/vsftpd/user_list
vim /etc/vsftpd/ftpusers

开启vsftp服务

[root@localhost yum.repos.d]# systemctl start vsftpd             #启动ftp服务
[root@localhost yum.repos.d]# systemctl enable vsftpd              #设置为开机自启

这里可以测试一下是否匿名能访问
在这里插入图片描述

准备centos7安装源并启动ftp服务

将镜像cp到ftp路径

[root@localhost yum.repos.d]# mkdir /var/ftp/centos7  
[root@localhost yum.repos.d]# cp -rf /mnt/cdrom/* /var/ftp/centos7/ 

安装tftp服务

[root@localhost yum.repos.d]# yum -y install tftp-server

编辑TFTP配置文件

[root@localhost yum.repos.d]# vim /etc/xinetd.d/tftp  

将disable 改为no
在这里插入图片描述
启动TFTP服务

[root@localhost yum.repos.d]# systemctl start tftp                #启动TFTP服务
[root@localhost yum.repos.d]# systemctl enable tftp 

准备linux内核、初始化镜像文件

[root@localhost ~]# cd /mnt/cdrom/images/pxeboot/
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/

在这里插入图片描述在这里插入图片描述

准备pxe引导程序

[root@localhost ~]# cp /usr/share/syslinux/pxe
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var//lib/tftpboot/

准备自动安装的应答文件

利用kickstart工具配置自动应答文件

[root@localhost ~]# yum -y install system-config-kickstart

打开kickstart软件进行基本配置

在这里插入图片描述

安装方法
在这里插入图片描述

引导选择
在这里插入图片描述

分区
在这里插入图片描述

网络配置
在这里插入图片描述

防火墙配置
在这里插入图片描述

安装后脚本设置

cd /etc/yum.repos.d
mkdir bak
mv *.repos bak #移走原始源文件
echo -e "[base]" > aa.repo
echo -e "baseurl=ftp://172.16.15.53/centos7">>aa.repo #写入本地源文件
echo -e "gpgcheck=0">>aa.repo

在这里插入图片描述

完成后保存到/var/ftp目录
在这里插入图片描述

在ks.cfg文件末尾添加如下语句(即最小化安装)

[root@localhost ~]# vim /var/ftp/ks.cfg 
%packages
@^minimal
%end

在这里插入图片描述

配置无人值守启动菜单

[root@localhost ~]# mkdir /var/lib/tftpboot//pxelinux.cfg/
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

写入如下配置

default auto
prompt 1
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://172.16.15.53/centos7 ks=ftp://172.16.15.53/ks.cfg
label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://172.16.15.53/centos7
label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://172.16.15.53/centos7

在这里插入图片描述

安装并启用DHCP服务器

[root@localhost ~]# yum -y install dhcp

编辑网卡配置

[root@localhost ~]$ vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述

编辑dhcp配置文件

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 172.16.15.0 netmask 255.255.255.0 {
  range 172.16.15.1 172.16.15.200;
  option domain-name-servers 8.8.8.8;
  option domain-name "internal.example.org";
  option routers 172.16.15.53;
  option broadcast-address 172.16.15.255;
  default-lease-time 21600;
  max-lease-time 43200;
  next-server 172.16.15.53;  #指定tftp服务器的地址
  filename "pxelinux.0";  #指定pxe引导程序的文件名
}

在这里插入图片描述
好了,到现在为止服务器的搭建已经完成了,接下来需要把所有涉及到的服务全部重启一遍,然后关闭安全机制(selinux)和防火墙

客户端验证(记得放到同一个网段)

启动客户端,将会自动寻找dhcp服务器
在这里插入图片描述
出现boot回车继续
在这里插入图片描述
接下来就是漫长的等待自动安装的过程
在这里插入图片描述
安装成功

在这里插入图片描述

相关问题的检查

请关注客户端自动安装失败的报错。一般问题出在几个点:
dhcp是否搭建好并能正确获取到ip地址
服务器镜像文件是否cp到ftp路径下
ftp是否能够root和匿名访问
ftp下文件是否有访问权限
几个服务的配置文件是否正确(包括ip地址,路径等)
安全机制和防火墙是否关闭
各项服务是否已经重启

注:本教程适合有一定基础的朋友看,因为我比较懒,有些细节并没有写的很清楚。有问题可以call我呦

Logo

更多推荐