一、PXE


Preboot ExecuteEnvironment:支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成Client端自动化基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。


二、PXE工作过程

下图中介绍了Linux中自动安装系统的详细工作过程:

wKiom1bzsx6TxyBAAAFFUBkzl74087.jpg

基本原理及工作流程:
   首先,在客户端主机的网卡要支持网络引导,当开机时网卡就会激活当中的程序,自行通过网络向DHCP请求IP地址,并配置在自己的网卡上。
   其次,DHCP服务器回应给我们的主机,分配了IP地址,掩码什么的,再让DHCP服务器告诉我们的客户端主机tftp服务器在什么位置。
   接着,客户端主机就去请求tftp服务器,当然,这里的DHCP服务器和tftp服务器可以是同一台,也可以不是同一台,看情况而定。
   而后,tftp服务器就会给客户端主机提供一个pxe的文件、这个文件就是pxelinux.0,他相当于我们的bootloader、而这个文件是由syslinux这个程序包提供的。
   再则,客户端主机利用tftp服务器提供的pxelinux.0这个文件,再次尝试到tftp服务器上获取内核,因为要启动安装就要启用引导内核。
   之后,当引导内核启动后,客户端主机通过改名后的default(由pxelinux.0改名而来)文件成功的引导Linux安装内核后,通过httpd服务获取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
   最后,将ks.cfg文件下载回来后,通过该文件找到ks.cfg文件的配置请求下载安装过程所需要的软件包,这样就可以实现生动化安装了。

三、PXE实验环境

1.实验环境

服务端:

IP:192.168.0.15

关闭iptables,selinux

注:默认情况下,系统存在镜像,并且镜像已经挂载/media下

[root@localhost ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              18G  2.6G   15G  16% /

tmpfs                 495M  144K  495M   1% /dev/shm

/dev/sda1             291M   33M  243M  12% /boot

/dev/sr0              4.2G  4.2G     0 100% /media/CentOS_6.5_Final


客户端:

安装Centos6.5系统

2.DHCP服务(为客服端分配IP地址,并告诉客服端tftp服务位置)

# yum install dhcp -y

# chkconfig dhcpd on

# cp  /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 

# vim /etc/dhcp/dhcpd.conf 

此配置只是为客户端分配地址,只需要配置IP段,掩码,地址池,具体配置看个人需求

option domain-name "example.org";

option domain-name-servers ns1.example.org, ns2.example.org;


default-lease-time 600;

max-lease-time 7200;

log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {

  option domain-name "test.cn";

  option domain-name-servers 8.8.8.8;

  range 192.168.0.110 192.168.0.120;

  option routers 192.168.0.3;  

  filename "pxelinux.0";    ######指定PXE服务文件

  next-server 192.168.0.15; ######指定tftp服务器

}

3.tftp/xinetd服务

# chkconfig xinetd on

# vim /etc/xinetd.d/tftp 

开启此项服务,主要是提供pxelinux.0等文件

service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes 

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /var/lib/tftpboot

        disable                 = no    #########将yes改为no,开启tftp服务

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}

# cp /media/CentOS_6.5_Final/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

# cp /media/CentOS_6.5_Final/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/

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

# cd /var/lib/tftpboot/

# mkdir pxelinux.cfg

#cp /media/CentOS_6.5_Final/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

#chmod 777 pxelinux.cfg -R  ####准确权限不知

# pwd

/var/lib/tftpboot/pxelinux.cfg

# ls

default

说明:

这些文件为系统初始化安装必须文件,包括引导,驱动,安装,背景图片等

4.http服务

# rpm -q httpd

httpd-2.2.15-26.el6.centos.x86_64

# mkdir /var/www/html/Centos6.5

# mount /dev/sr0 /var/www/html/Centos6.5

# /etc/init.d/httpd restart

# chkconfig httpd on


浏览器访问http://192.168.0.15/Centos6.5/

wKioL1b34ISi02SXAABytCFM3Bk886.png

5.ks.cfg文件

# yum install system-config-kickstart.noarch -y

# system-config-kickstart ###############通过客户端定制ks文件

# cp /root/ks.cfg  /var/www/html/    

6.指定ks.cfg文件位置

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

18 label linux

 19   menu label ^Install or upgrade an existing system

 20   menu default

 21   kernel vmlinuz

 22   append initrd=initrd.img ks=http://192.168.0.15/ks.cfg

7.在客户端安装测试


说明:

PXE为自动安装过程,分必安装与非必安装,若必安装没有配置完,则需在安装过程中手工干预。

ks.cfg文件组成:

  1. 命令行部分

    url --url="http://192.168.0.15/Centos6.5"

  2. 软件包部分

    @base  软件包组

    http   软件

    -http  不安装

3.  脚本部分

    此部分为安装完系统之后自己定制的脚本



参考:

http://tanxw.blog.51cto.com/4309543/1371355

http://www.2cto.com/net/201602/490925.html

http://xiexiaojun.blog.51cto.com/2305291/1735097