PXE +启动无人值守安装centos7

  

PXE +启动无人值守安装centos7

  

1.1 PXE说明

  

所谓的PXE是Preboot执行环境的缩写,字面上的意思是开机前的执行环境。

  

要达成PXE必须要有两个环节:

  

(1)一个是客户端的网卡必须要支持PXE用户端功能,并且开机时选择从网卡启动,这样系统才会以网卡进入PXE客户端的程序;

  

(2)一个是PXE服务器必须要提供至少含有DHCP以及TFTP的服务!

  

且其中:

  

?·DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;

  

?·TFTP则提供客户端内核的引导加载程序及文件下载路径。

  

还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务。

  

1.2 PXE流程

  

如下图:图片来源于网络,虽不易理解,但细节描述的很好。

  

 PXE +启动无人值守安装centos7

  

(1)。<强>客户端向PXE服务器上的DHCP发送IP地址请求消息强,DHCP检测客户端是否合法(主要是检测客户的网卡MAC地址),如果合法则返回客户机的IP地址,同时将PXE环境下的引导加载程序文件pxelinux.0的位置信息传送给客户。

  

(2)。<强>客户端向PXE服务器上的TFTP请求pxelinux.0 强,TFTP接收到消息之后再向客户发送pxelinux.0大小信息,试探客户是否满意,当TFTP收到客户发回的同意大小信息之后,正式向客户发送pxelinux.0。

  

(3)。<强>客户执行接收到的pxelinux.0文件

  

(4)。<强>客户端向TFTP请求pxelinux.cfg文件(其实它是目录,里面放置的是是启动菜单,即grub的配置文件),TFTP将配置文件发回客户端,继而端根据配置文件执行后续操作。

  

(5)。<强>客户端向TFTP发送Linux内核请求信息强,TFTP接收到消息之后将内核文件发送给客户。

  

(6)。<强>客户端向TFTP发送根文件请求信息强,TFTP接收到消息之后返回Linux根文件系统。

  

(7)。<强>客户端加载Linux内核(启动参数已经在4中的配置文件中设置好了)。

  

(8)。<强>客户通过nfs/ftp/http下载系统安装文件进行安装。如果在4中的配置文件指定了启动路径,则会根据此文件自动应答安装系统。

  

1.3部署环境说明

  

如下图,192.168.38.137是PXE服务器,提供dhcp + tftp + http服务。其他该网段内的主机为待安装系统的主机群。

  

 PXE +启动无人值守安装centos7

  

1.4部署DHCP服务

  

首先安装dhcp服务端程序。

  
 <代码> yum - y安装dhcp  
  

DHCP主要是提供客户端网络参数与TFTP的位置,以及引导加载程序的文件名,同时,我们仅针对内网来告知TFTP的相关位置,所以可以编辑/etc/DHCP/了dhcpd。会议在子网的区块内加入两个参数即可。其中PXE上专门为PXE客户端下载的引导加载程序文件名称为pxelinux.0。

  
 <代码> root@server ~ #猫/etc/dhcp/dhcpd.conf
  ddns-update-style没有;
  default-lease-time 259200;
  max-lease-time 518400;
  选择路由器192.168.38.2;
  选择domain-name-servers 192.168.38.2;
  子网192.168.38.0子网掩码255.255.255.0 {
  范围192.168.38.200 192.168.38.220;
  选择子网掩码255.255.255.0;
  下一个服务器192.168.38.137;#就是TFTP的位置
  文件名“pxelinux.0”;#告知得从TFTP根目录下载的引导加载程序文件名
  } 
  

重启dhcp   

 <代码> systemctl重启了dhcpd  
  

1.5部署TFTP

  

从流程图中可以看的出,引导加载程序文件pxelinux.0以及内核相关的配置文件(目录pxelinux.cfg下)主要都是由TFTP来提供的!

  

TFTP的安装很简单,直接使用yum即可。不过要告诉客户端TFTP的根目录在哪里,这样客户端才能找到相关文件。另外要注意,TFTP是由xinetd这个超级守护进程所管理的,因此设定好TFTP之后,要启动的是xinetd。

  
 <代码> yum安装tftp服务器 
  

默认TFTP服务的根目录是/var/lib/tftpboot/,默认就这个吧,然后禁用改没有即为可

  
 <代码> sed ri/禁用/年代/是的/不//etc/xinetd.d/tftp
  猫/etc/xinetd.d/tftp
  
  tftp服务
  {
  socket_type=dgram=udp协议
  等待=yes
  用户=根
  服务器=/usr/sbin/in.tftpd
  server_args=s/var/lib/tftpboot
  禁用=没有
  per_source=11
  cps=100 2
  旗帜=IPv4
  }

PXE +启动无人值守安装centos7