PXE的工作流程: 

    网卡里有内置的dhcp客户端程序和tftp客户端程序

    当把网卡当做第一顺序启动时,会激活PXE功能,客户端基于DHCP尝试发起广播请求

    当DHCP服务器收到请求后给它分配一个地址以及网关等各种网络属性进行配置,

    dhcp服务器还可以告诉网卡,网络中有tftp文件服务器,指令是next-server指定要找的tftp服务器

    并且告诉网卡,下载tftp服务器里的pxelinux.0(类似于bootloader提供引导界面)

   

PXE服务配置_第1张图片

一:所以我们要先来配置dhcp服务器:

    centos 6下的DHCP配置


    DHCP的服务脚本存放在/etc/rc.d/init.d/下

    利用rpm -ql  dhcp|less查看

/etc/dhcp

/etc/dhcp/dhcpd.conf

/etc/dhcp/dhcpd6.conf

/etc/openldap/schema/dhcp.schema

/etc/portreserve/dhcpd

/etc/rc.d/init.d/dhcpd-->提供的服务脚本

/etc/rc.d/init.d/dhcpd6-->提供的服务脚本

/etc/rc.d/init.d/dhcrelay-->作为中继服务器是使用的

/etc/sysconfig/dhcpd

/etc/sysconfig/dhcpd6

/etc/sysconfig/dhcrelay

/usr/bin/omshell

/usr/sbin/dhcpd

/usr/sbin/dhcrelay

/usr/share/doc/dhcp-4.1.1

/usr/share/doc/dhcp-4.1.1/3.0b1-lease-convert

/usr/share/doc/dhcp-4.1.1/IANA-arp-parameters

/usr/share/doc/dhcp-4.1.1/README.ldap

/usr/share/doc/dhcp-4.1.1/api+protocol

/usr/share/doc/dhcp-4.1.1/dhclient-tz-exithook.sh

/usr/share/doc/dhcp-4.1.1/dhcpd-conf-to-ldap

/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample-->帮助文件

/usr/share/doc/dhcp-4.1.1/dhcpd6.conf.sample

/usr/share/doc/dhcp-4.1.1/draft-ietf-dhc-ldap-schema-01.txt

/usr/share/doc/dhcp-4.1.1/ms2isc

/usr/share/doc/dhcp-4.1.1/ms2isc/Registry.perlmodule

/usr/share/doc/dhcp-4.1.1/ms2isc/ms2isc.pl

/usr/share/doc/dhcp-4.1.1/ms2isc/readme.txt

/usr/share/doc/dhcp-4.1.1/sethostname.sh

/usr/share/doc/dhcp-4.1.1/solaris.init

/usr/share/man/man1/omshell.1.gz

/usr/share/man/man5/dhcpd.conf.5.gz

/usr/share/man/man5/dhcpd.leases.5.gz

/usr/share/man/man8/dhcpd.8.gz

/usr/share/man/man8/dhcrelay.8.gz

/var/lib/dhcpd-->用于存储dhcp运行过程中的数据文件

/var/lib/dhcpd/dhcpd.leases-->租约信息

/var/lib/dhcpd/dhcpd6.leases-->租约信息

    将/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample文件复制到/etc/dhcp/dhcpd.conf替换dhcpd.conf

#红色字体是解释内容,不属于文件内容
#橙色底色表示需要哦修改的参数
#非段落结束后要跟分号***********

# dhcpd.conf 

# Sample configuration file for ISC dhcpd 

# option definitions common to all supported networks... 

option domain-name "magelinux.com";    <--配置域名(域名在/etc/resolv.conf)

wKioL1PZBsHAjSGVAABAb6ktshU601.jpg

option domain-name-servers 172.16.118.18; <--服务器IP地址,也就是提供DHCP服务的主机IP,多个IP以逗号分隔

default-lease-time 86400<--默认租约期限
max-lease-time 100000<--最大租约期限

# Use this to enble / disable dynamic dns updates globally. 
#ddns-update-style none; 

# If this DHCP server is the official DHCP server for the local 
# network, the authoritative directive should be uncommented. 
#authoritative; 

# Use this to send dhcp log messages to a different log file (you also 
# have to hack syslog.conf to complete the redirection). 

log-facility local7; <--日志交给谁来记录

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology. 

subnet 10.152.187.0 netmask 255.255.255.0 { 
} ---------删除信息


# This is a very basic subnet declaration. 

subnet 172.16.0.0(指向自己的网络) netmask 255.255.0.0 { <--工作的网络
  range 172.16.118.10  172.16.118.40<--地址范围
  option routers 172.16.0.1; <--网关

  option domain-name “aolens.com";<-- 指定域名   可有可无
  option domain-name-servers  172.16.100.7;  <--指定IP地址   可有可无

 host ubuntu {
        hardware ethernet 00:0c:29:eb:0d:65
        fixed-address 172.16.118.118

     option routers   172.16.0.2   <--Ubuntu的网关 可有可无

  }

PXE服务配置_第2张图片


     :. , $d -->删除光标到文本末尾的数据       

    中以option开头的是为客户端提供配置信息的

    非option开头的是定义DHCP自己的工作特性

    service dhcpd start 启动DHCP服务

    tail /var/log/message查看日志,DHCP启动有没有错误

    DHCP默认监听在UDP:67号端口  PXE服务配置_第3张图片

    iptables在Linux系统上默认是启动的

    iptables -L -n 

    service iptables start

    service iptables stop 关闭防火墙

    另一台电脑连接服务器获得的地址

    PXE服务配置_第4张图片

    tail /var/lib/dhcpd/dhcpd.leases  租约信息

    PXE服务配置_第5张图片

    dhclient监听在UDP:68号端口;客户端的

    保留地址:不应该使用dhcp.conf里限定范围内的地址

    wKiom1PZBamRjv6aAAA-Z_A7nTY042.jpg

    我们给个IP地址172.16.118.118

    在/etc/dhcp/dhcpd.conf中加入

    PXE服务配置_第6张图片

    重启dhcp服务service dhcpd  restart

    结果目标主机的IP地址变为

   wKioL1PZBsSzPhHYAADgpTntNdM337.jpg

    chkconfig dhcpd on   开机启动

    dhcp服务器就配置好了。


二:tftp 配置:


tftp 小型文件传输协议:

    tftp使用UDP协议,工作在69号端口,也是基于C/S架构

    首先要安装tftp 和tftp-server服务器端包

    chkconfig查看发现瞬时守护进程都是关闭的

    PXE服务配置_第7张图片

打开的方法有二:

    1:chkconfig  SERVICE_NAME   on

         chkconfig  tftp on

    2:vim  /etc/xinetd.d/tftp

    该disnable=no

    PXE服务配置_第8张图片

然后重启xinetd服务service xinetd restart

rpm -ql tftp-server的

/etc/xinetd.d/tftp

/usr/sbin/in.tftpd

/usr/share/doc/tftp-server-0.49

/usr/share/doc/tftp-server-0.49/CHANGES

/usr/share/doc/tftp-server-0.49/README

/usr/share/doc/tftp-server-0.49/README.security

/usr/share/doc/tftp-server-0.49/README.security.tftpboot

/usr/share/man/man8/in.tftpd.8.gz

/usr/share/man/man8/tftpd.8.gz

/var/lib/tftpboot<--基于TFTP服务的文件都是放在此目录下

在主机上也装上tftp,便可链接tftp-server服务器端。


三:开始配置pxe:


    系统安装需要的文件

    vesamenu.c32-->用来启动一个图形界面

    splash.jpg-->图形界面背景图片

    vmlinux-->系统内核

    initrd.img-->

    isolinux.cfg-->图形界面的菜单选项

PXE服务配置_第9张图片

    配置dhcp服务器

    在subnet中加入

    next-server 192.168.1.23;

    filename “pxelinux.0”;

PXE服务配置_第10张图片

    service dhcpd force-reload加载dhcp服务器

    也可service  dhcpd restart重启

    此时我们就要开始往/var/lib/tftpboot/文件夹下存放需要从tftp服务器下载的文件

    首先是pxelinux.0文件,它存在于syslinux安装包,先安装syslinux

    rpm -ql syslinux|less查看pxelinux.0位置在:/usr/share/syslinux/pxelinux.0

    复制pxelinux.0到/var/lib/tftpboot/目录下

    cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/ 

    在/var/lib/tftpboot/目录下创建pxelinux.cfg文件目录

    mkdir  /var/lib/tftpboot/pxelinux.cfg

    复制vmlinuz和initrd.img内核文件到 /var/lib/tftpboot/下

    vmlinuz 和initrd.img在光盘镜像下的/p_w_picpaths/pxeboot/下

    为了让安装程序显示为图形界面需要复制光盘镜像中

    /isolinux/{vesamenu.c32,splash.jpg}/var/lib/ttftpboot/

    还要复制光盘镜像中/isolinux/isolinux.cfg/var/lib/tftpboot/default目录下

    为default,给用户图形界面的安装菜单

    此时我们新创建一个虚拟机,把网卡设为第一顺序启动,结果

PXE服务配置_第11张图片

    创建yum源:

        将光盘镜像挂载到/var/www/html/cdroms/目录下即可

    现在还需要ks文件

    复制/root/anaconda-ks.cfg到/var/www/html/ksfile/ks.cfg下改名为ks.cfg

    给755权限

    修改ks文件的repo指向自己制作的yum源

    KS文件配置:

PXE服务配置_第12张图片

PXE服务配置_第13张图片

PXE服务配置_第14张图片

PXE服务配置_第15张图片

打开新虚拟机即可