一、PXE工作原理

搭建PXE实现自动化安装系统-LMLPHP

Ø  Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client

Ø  Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0

Ø  Client执行接收到的pxelinux.0文件

Ø  Client向TFTP Server发送针对本机的配置信息文件(在TFTP 服务的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

Ø  Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client

Ø  Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统

Ø  Client启动Linux内核

Ø  Client下载安装源文件,读取自动化安装脚本

二、CentOS 7搭建PXE自动化系统

通过CentOS 7搭建的PXE自动化系统安装CentOS 7

²  安装前准备:关闭防火墙和SELINUX,DHCP服务器静态IP

²  安装软件包

  # yum -y install httpd tftp-server dhcp syslinux system-config-kickstart

²  配置http文件共享服务:

  # systemctl enable httpd

  # systemctl start httpd

  # mkdir -p /var/www/html/centos/7

  # mount /dev/sr0 /var/www/html/centos/7    #挂载centos7安装光盘到httpd服务的目录

²  准备kickstart文件

  将centos7的ks文件放置于 /var/www/html/ks/centos7.cfg

²  配置tftp服务

  # systemctl enable tftp.socket

  # systemctl start tftp.socket

²  配置DHCP服务

  #vim /etc/dhcp/dhcpd.conf

  option domain-name "example.com";

  default-lease-time 600;

  max-lease-time 7200;

  subnet 192.168.100.0 netmask 255.255.255.0 {

    range 192.168.100.1 192.168.100.200;

    filename "pxelinux.0";

    next-server 192.168.100.100;

  }

  # systemctl enable dhcpd

  # systemctl start dhcpd

²  准备相关文件

  # yum -y install syslinux

  # mkdir /var/lib/tftpboot/pxelinux.cfg/

  # cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/

  # cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/

  # cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

²  准备启动菜单

# vim /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32

timeout 600

menu title PXE INSTALL MENU

label auto

  menu label Auto Install CentOS 7

  kernel vmlinuz

  append initrd=initrd.img ks=http://192.168.100.100/ks/centos7.cfg

label manual

  menu label Manual Install CentOS 7

  kernel vmlinuz

  append initrd=initrd.img inst.repo=http://192.168.100.100/centos/7

label local

  menu default

  menu label ^Boot from local drive

  localboot 0xffff

05-11 19:46