PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址(dchp),再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户?)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。

**********************************************************************以上内容来自百度百科*********************************************************
    
pxe:preboot excution environment

**********************************************************************************************************************************

dhcp:

    filename  "pxelinux.0";

    next-server 172.18.100.6; 指明文件存放的服务器地址 

    PXE: preboot excution environment, Intel

模型工作过程解释:
            基本要求: 

        没有安装操作系统的客户端(client)

        pxe服务器

        基础镜像仓库<基于ftp或http服务>

            1.客户端启动时.必须让网卡为第一启动项

            2.client-> power on -> BIOS-> network ->广播rarp协议并获得ip地址和要加载的文件和文件服务器地址  (dhcp)

            3.Client: 找文件服务器主机和对应的文件     (tftp)

            4.client:需要的文件加载完成后会在内存运行,基于此文件,可以加载一个内核文件(tftp上)

            5.client:内核依赖initrd虚拟根来完成 真实根所在磁盘的各种驱动程序                                (tftp)

            6.专用的内核文件再基于网络再去加载 能够完成系统安装的程序包 在本地完成程序安装 并启动应用程序   (基础景象仓库,类似光盘提供的um仓库)

依赖于.dhcp tftp (能够提供yum仓库的服务)

                                ****************

        CentOS:

        dhcp (ip/netmask, gw, dns; filename, next-server;)

        tftp server (bootloader, kernel, initrd)

        yum repository (ftp, http, nfs)   yum仓库一定是与内核所匹配的!!!

************************************************

kickstart(无人值守安装实现)

1.2 什么是Kickstart


Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。 

**********************************************************************************************************************************
配置如下:

tftp server: trivial ftp

]#yum -y install tftp-server tftp(测试用)

监听端口:69/udp

直接启动服务:

CentOS 6: (由超级进程xinetd管理)

chkconfig  tftp  on

service  xinetd restart

CentOS 7:

systemctl  start  tftp.socket

默认的文件根目录:/var/lib/tftpboot/
             直接启动服务就可以  不用修改tftp的配置文件. 

**********************************************************************tftp*******************************************************

dhcp server:

配置文件示例:

option domain-name "zx.com";

option routers 192.168.10.9;                                             #网关

option domain-name-servers 172.18.0.1;                         #dhcp


default-lease-time 43200;                                                  #默认租用时常

max-lease-time 86400;                                                      #最大租用时常

log-facility local7;

subnet 192.168.10.0 netmask 255.255.255.0 {                 #定义dhcp分发的网段

range 192.168.10.101 192.168.10.120;                             #地址池

filename "pxelinux.0";                                                         #定义dhcp分发的文件  

next-server 192.168.10.9;                                                   #文件所在的ip地址 

}
  next-server 的ip地址即为提供tftp服务的ip地址 文件即为 tftp的根目录即可 

*******************************************************dhcp服务完成*****************************************************
**********配置yum*************************
 配置yum仓库:
    注意:此yum仓库可以是本地也可以是互联网之上的仓库,(GW指定) 
    ] 
]# yum install httpd -y       #安装apache服务当作yum源的服务
]# mkdir /var/www/html/centos/7/x86_64   -pv          #递归创建目录
]# mount -r /dev/cdrom(sr0)    
/var/www/html/centos/7/x86_64    #挂在光盘到这个目录
]#  systemctl start httpd.service                             #启动apache服务 

   **********************yum配置完成***********************************
**********************配置cfg安装配置文件*************************
]# mkdir /var/www/html/kickstarts/  -pv
]# vim 
 /var/www/html/kickstarts/centos.cgi      #此配置文件通过apache共享出去
配置内容:*****************************************************************************************************************************

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

# Install OS instead of upgrade

install

# Use text install

text

# Firewall configuration

firewall --disabled

firstboot --disable

ignoredisk --only-use=sda

# Keyboard layouts

keyboard --vckeymap=cn --xlayouts='cn'

# System language

lang en_US.UTF-8

# Use network installation

#url --url="http://172.16.0.1/cblr/links/CentOS-7-1511-x86_64"

#repo --name="source-1" --baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-7-1511-x86_64

url --url="http://172.16.0.1/cobbler/ks_mirror/7/"         #此处地址为yum的位置


# Network information

network  --bootproto=dhcp --device=eno16777736 --onboot=on --ipv6=auto

network  --hostname=localhost.localdomain

# Reboot after installation

reboot

# SELinux configuration

selinux --disabled

# Do not configure the X Window System

skipx


# Root password

rootpw --iscrypted $6$dGARWYghrvhD9W7P$4af2uw8A4tHvNLe2F6bDrk0J69dt.uYoV4SneKG4kzIsc/nF3JpfnuHg7D5lVE.jxC3p6.K29FCjwtom9VXWf.

# System timezone

timezone Asia/Shanghai

user --groups=wheel --name=mageedu --password=$6$S0t9SxXkvSI0Npz5$YDVonz69YGGGkGyZDy/KesO4CI1HUBLNThcHj6PXDntQGS0Cl0SNpN6zGASuzYE.z5veu1XAzMvO4xLWbKE.n0 --iscrypted --gecos="mageedu"

# System bootloader configuration

bootloader --location=mbr --boot-drive=sda

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

part /boot --fstype="xfs" --ondisk=sda --size=500      # 分区表

part swap --fstype="swap" --ondisk=sda --size=2049

part / --fstype="xfs" --ondisk=sda --size=40960

part /usr --fstype="xfs" --ondisk=sda --size=20480


%post

echo -e 'Mage Education Learning Services\nhttp://www.magedu.com\n' >> /etc/issue


systemctl set-default multi-user.target


[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh


cat >> /root/.ssh/authorized_keys << EOF

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9w== root@172.16.0.1

EOF


ClientName=`ifconfig eno16777736 | awk '/inet\>/{print $2}' | awk -F. '{print $NF}'`

hostnamectl set-hostname "stu$ClientName.magedu.com"


mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

wget http://172.18.0.1/repos/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo


%end


%packages

@base

@core

@fonts

@input-methods

@kde-apps

@kde-desktop

@network-file-system-client

@networkmanager-submodules

@x11

lftp

screen


%end


%addon com_redhat_kdump --disable --reserve-mb='auto'


%end 
***************************************************************************************************************************** 
  

配置PXE环境:
                  需求:
                        syslinux.0       #
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
                    vmlinuz     #压缩过的虚拟内核 用于加载磁盘驱动之前的临时内核 
                    initrd.img  #自行百度

CentOS 7:

]#    yum  -y install syslinux      

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

]# cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot      #光盘挂在路径  复制文件到tftp中

]# cp /usrshare/systelinux/{chain.c32,mboot.c32,menu.c32,memdisk}  /var/lib/tftpboot     #选择菜单的目录程序
                    vesamenu.c32  图形界面下的菜单      menu.c32   
字符界面为  memdisk 内存当磁盘的 和initrd.img有关
                     

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

]# vim  /var/lib/tftpboot/pxelinux.cfg/default         #显示引导界面 
 

default menu.c32                  #以菜单方式显示

prompt 5                                #选择时间 

timeout 30                             #超时时间

MENU TITLE CentOS 7 PXE Menu         #菜单标题


LABEL linux                                           #标签

MENU LABEL Install CentOS 7 x86_64    #项

KERNEL vmlinuz                                          #指明内核

APPEND initrd=initrd.img inst.repo=http://192.168.10.9/centos/7/x86_64     #向内核指定参数
 

LABEL linux_autoinst        

MENU LABEL Install CentOS 7 x86_64 auto       #标签2

KERNEL vmlinuz

APPEND initrd=initrd.img inst.repo=http://192.168.10.9/centos/7/x86_64 ks=http://192.168.10.9/kickstarts/centos7.cfg   #指明自动安装脚本

CentOS 6:

]# yum  -y install syslinux

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

]# cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/

]# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.png}  /var/lib/tftpboot

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

]# cp  /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

内容如下所示: 修改

display boot.msg


menu background splash.jpg

menu title Welcome to CentOS 6.7 zxlinux!              #表头

menu color border 0 #ffffffff #00000000         各种颜色

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000


label autoinst

menu label ^Auto Install CentOS         #表选项

menu default                                        #指定默认选项

kernel vmlinuz                                        #指定内核

append initrd=initrd.img ks=ftp://192.168.10.16/pub/centos6.cfg  #内核参数 ks=是自动安装脚本

label linux

menu label ^Install or upgrade an existing system

kernel vmlinuz

append initrd=initrd.img

label vesa

menu label Install system with ^basic video driver

kernel vmlinuz

append initrd=initrd.img nomodeset

label rescue

menu label ^Rescue installed system

kernel vmlinuz

append initrd=initrd.img rescue

label local

menu label Boot from ^local drive

localboot 0xffff

label memtest86

menu label ^Memory test

kernel memtest

append -