PXE(preboot execute environment预启动执行环境)

PXE是intel公司推出的一款通过网络来引导操作系统的协议。广泛应用于网吧无盘系统。只需要将无盘服务器维护好,就能保证网络中的无盘工作站(客户机)的系统能正常运行。


PXE服务器需要的支撑软件:DHCP、TFTP、syslinux(提供pxe引导程序文件pxelinux.0)、文件共享(nfs、ftp、http、samba)等。


PXE服务器和客户机的工作过程:

 1.PXE客户机发出DHCP请求,向服务器申请IP地址。
 2.DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP(简单文件传输协议)服务器的IP地址和PXE引导程序文件pxelinux.0。
 3.PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。
 4.TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。
 5.PXE客户机通过网络来启动到系统安装主界面。
 6.PXE客户机向文件共享服务器发起获取centos或windows系统安装文件的请求。
 7.文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。
 8.PXE客户机进入到安装提示向导界面,用户需要手动来完成系统的操作

最后安装系统时可以采用kickstart或者vim工具创建一个系统自动安装的应答文件,并用文件共享服务来共享ks.cfg文件(ks.cfg自动应答文件是记录系统安装的操作步骤,客户机在进行安装时会自动根据ks.cfg文件中的内容来完成安装操作)实现自动安装操作。


PXE中各服务器软件的功能:

 DHCP:用来给PXE客户机自动分配TCP/IP设置(包括IP地址、子网掩码、网关、DNS等)。告知PXE客户机“TFTP服务器的IP地址和PXE启动文件名”。
 TFTP:是一个迷你的FTP共享协议软件,用来给PXE客户机提供网络启动的引导程序文件pxelinux.0。
 syslinux:用来提供pxelinux.0网络引导程序文件。
 文件共享:可以是vsftpd、nfs、samba、http等软件来实现文件共享。用来给PXE客户机提供系统安装文件。


部署过程详解:以下是在centos7.6系统里进行的操作,且centos系统IP为192.168.11.11

部署前提检查Linux防火墙是否关闭和是否关闭selinux功能:

 systemctl  stop  firewalld && systemctl  status  firewalld    关闭防火墙功能和查看防火墙的状态

 setenforce  0  &&  getenforce      关闭Linux安全功能即设置为宽容模式Permissive和查看selinux状态

第一步:部署DHCP服务器:

 1.查软件是否已安装:rpm  -q  dhcp
 2.安装dhcp服务器软件:yum   install  -y  dhcp
 3.查配置文件列表:rpm  -qc   dhcp
 4.编辑dhcpd.conf配置文件
   rpm    -qc    dhcp
   cat     /etc/dhcp/dhcpd.conf
   cat    /usr/share/doc/dhcp*/dhcpd.conf.example

复制其中的一段内容即:


subnet 10.5.5.0 netmask 255.255.255.224 {

  range 10.5.5.26 10.5.5.30;

  option domain-name-servers ns1.internal.example.org;

  option domain-name "internal.example.org";

  option routers 10.5.5.1;

  option broadcast-address 10.5.5.31;

  default-lease-time 600;

  max-lease-time 7200;

}


定义网络地址和子网掩码

指定IP地址池的范围(起始和截止IP)

域名解析服务器的IP地址

域名

网关IP地址

广播地址

默认租约时间

最大租约时间

粘贴进DHCP的配置文件内,用vim打开并进行如下修改


   vim     /etc/dhcp/dhcpd.conf

subnet 192.168.11.0 netmask 255.255.255.0 {

  range 192.168.11.21 192.168.11.30;

  option domain-name-servers 8.8.8.8;

  option domain-name "hj.com";

  option routers 192.168.11.2;

  option broadcast-address 192.168.11.255;

  default-lease-time 6000;

  max-lease-time 72000;

  next-server 192.168.11.11;

  filename "pxelinux.0";

}










TFTP服务器的IP地址

PXE引导程序文件名

 5.启动dhcpd服务,允许服务开机自动启动
   systemctl     restart     dhcpd
   systemctl     enable     dhcpd
   systemctl     status     dhcpd
   netstat       -atunlp | grep    :67       查67号端口的网络进程序

第二步:部署tftp-server服务器

 1.查软件是否已安装:rpm  -q  tftp-server
 2.安装tftp-server服务器软件:yum   install  -y  tftp-server
 3.查配置文件列表:rpm  -qc   tftp-server
    /etc/xinetd.d/tftp
 4.编辑tftp配置文件
    vim   /etc/xinetd.d/tftp
       将disable的yes改为no
 5.启动tftp服务,允许服务开机自动启动  
    systemctl      restart     tftp
    systemctl       enable     tftp
    systemctl       status      tftp
    netstat      -atulp | grep    tftp
    netstat       -atunlp | grep    :69
 6.安装提供pxelinux.0的syslinux软件,共享pxe引导程序文件
    rpm  -q  syslinux  mlocate
    yum  install  -y  syslinux  mlocate           安装指定的软件
    updatedb                            更新locate文件查找数据库
   locate  pxelinux.0                 查找pxelinux.0文件
 7.共享指定的文件到/var/lib/tftpboot目录中
    cd   /var/lib/tftpboot               切换到tftp-server的默认共享目录
    cp  -v  /usr/share/syslinux/pxelinux.0   ./                复制指定的文件到当前目录中
    df  -hT                       查看磁盘空间使用状态
    cp  -v  /dvd/isolinux/*    ./                 复制光盘挂载点目录中指定的文件到当前目录中
    mkdir  -v  pxelinux.cfg                在当前目录中创建pxelinux.cfg目录
    cp  -v  isolinux.cfg   pxelinux.cfg/default        复制指定的文件到指定目录中并改名为default

第三步:部署文件共享服务器(以vsftp为例)(可用的有vsftpd、nfs、samba、httpd)

 1.查软件是否已安装:rpm  -q  vsftpd
 2.安装tftp-server服务器软件:yum   install  -y  vsftpd
 3.查配置文件列表:rpm  -qc   vsftpd
 4.启动vsftpd服务,允许开机自动启动服务
    systemctl  restart  vsftpd
    systemctl  enable  vsftpd
    systemctl  status  vsftpd
    netstat  -atunlp | grep  :21   或  lsof  -i  :21
 5.共享centos7的系统镜像到/var/ftp/dvd目录
    mkdir  -v  /var/ftp/dvd
    mount  /dev/sr0   /var/ftp/dvd

第四步:kickstart自动安装部署

 采用kickstart自动应答程序来实现系统的自动化安装(即静默安装)
 方法:使用kickstart程序或vim来创建ks.cfg自动应答文件。用文件共享服务来共享ks.cfg自动应答文件。
 技巧:linux系统在安装时会自动生成一个anaconda-ks.cfg配置文件,文件位于/root目录中,anaconda-ks.cfg里面记录的就是用户在安装系统时所做的操作(选择语言环境、硬盘分区、安装的软件包、网卡IP设置、主机名、root用户密码、新建普通用户等)。

 具体实施:
   1.修改/root/anaconda-ks.cfg权限为644,复制/root/anaconda-ks.cfg到/var/ftp/ks目录中。
    cd    /root
    chmod  -v  644  anaconda-ks.cfg
    mkdir  -v  /var/ftp/ks
    cp  -v  anaconda-ks.cfg  /var/ftp/ks/ks.cfg

   2.修改/var/lib/tftpboot/pxelinux.cfg/default启动菜单文件
    vim  /var/lib/tftpboot/pxelinux.cfg/default       :set nu 显示行号 
    修改63行内容为append  initrd=initrd.img  method=ftp://192.168.11.11/dvd  ks=ftp://192.168.11.11/ks/ks.cfg
                 说明:ks=是指定ks.cfg自动安装应答文件的功能选项
   3.修改/var/ftp/ks/ks.cfg文件内容
    cat  /var/ftp/ks/ks.cfg       查看ks.cfg自动应答文件
    注释cdrom
    改ip=192.168.11.12
    改hostname=han

   4.采用kickstart软件来生成ks.cfg自动应答文件。

    yum  search  kickstart    搜索kickstart关键字的软件
    yum  install  -y  system-config-kickstart   安装kickstart软件包
    system-config-kickstart     启动kickstart配置程序

     注意:yum源的repo文件中的“仓库标识”必须用[development]才能出现软件包信息
       修改yum源配置文件:
       vim   /etc/yum.repos.d/local.repo   文件内容如下
       [development]
       name=centos 7.5  linux
       baseurl=file:///dvd
       enabled=1
       gpgcheck=0

第五步:PXE客户机的测试

   1.在VMware虚拟机软件中新建一台名称为PXE0的centos7_64位系统的虚拟机。
   2.给PXE0虚拟机的内存设置成1324M,硬盘20G。(内存设置大小时需注意不能小于应答文件中 size 大小)
   3.给PXE0虚拟机创建一个名称为“NOS”的快照。(设置快照是便于多次测试)
   4.启动PXE0虚拟机,会自动进行系统安装