一、基本概念

1、什么是PXE

PXE(Pre-bootExecution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

    严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了.              

2、什么是Kickstart

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

3PXE+Kickstart无人值守安装操作系统完整过程如下

wKioL1U-YZ3T98qHAAE38pG2-4Q530.jpg

第一步:PXEClientDHCP服务器发送请求

首先,将支持PXE的网络接口卡(NIC)的客户端BIOS设置为网络启动,通过PXE BootROM(自启动芯片)会一UDP协议发送一个广播请求,向网络中的DHCP服务器申请一个IP地址信息.

第二步:DHCP服务器提供信息

DHCP服务器收到客户端请求,验证是否来自PXEClient的请求,验证通过后向客户端回响应信息,包括:客户端IP地址,TFTP Serverpxelinux.0文件名.

第三步:PXE客户端请求下载启动文件

客户端请求传送启动所需文件,包括pxelinux.0pxelinux. cfg/defaultvmlinuzinitrd.img等文件.

第四步:BootInstall Server响应客户端请求并传送文件

TFTP服务器收到客户端请求后,彼此间进行通信应答,确定启动参数,BootROMTFTP通信协议从BootServer下载启动安装程序所必需文件(pxelinux.0pxelinux.cfg/default).default文件下载完成后,会根据

该文件中定义的引导顺序,启动Linux安装程序的引导内核.

第五步:请求下载Kickstart配置文件

客户端通过pxelinux.cfg/default文件成功的引导Linux运行是因为制订了Kickstart配置文件信息所以当一vmlinuzinitrd.img组成的系统运行成功后系统确定你通过什么安装介质来安装Linux如果是通过网络安装(NFSFTPHTTP)则会在这个时候初始化网络,并请求下载Kickstart配置文件.刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次因为现在已经进入了有vmlinuzinitrd.img等文件组成的系统中了,由于PXE的网络配置并不能传递给这个系统,所以才会进行两次获取IP地址过程.

第六步:客户端安装操作系统

ks.cfg文件下载后,通过该文件找到OS Sserver,并按照该文件的配置请求下载安装过程需要的文件,OS Server和客户端建立连接后,将开始传输文件,客户端将开始安装操作系统,安装完成后,将会根据ks.cfg文件设置来重启或关机注意:安装完成后开机一定要将BIOS修改会从硬盘启动,不然的话又会重复的自动安装操作系统.

以上理论部分摘自http://wxj121.blog.51cto.com/7136845/1638343

感谢军爽博主的总结,如有侵权,请联系我,我将于第一时间删除。

二、环境及所需软件

服务器端IP 192.168.1.2

VmwareCentos6.5_x86_x64 

网络模式为 Vmnet 1

需安装的软件

dhcptftp-serverpykickstartsyslinuxsystem-config-kickstart

[root@Nagios_Server ~]# yum -y install dhcp tftp-server pykickstart syslinux system-config-kickstart
[root@Nagios_Server~]# rpm -qa  dhcp tftp-server pykickstart syslinux system-config-kickstart
tftp-server-0.49-7.el6.x86_64
syslinux-4.04-3.el6.x86_64
dhcp-4.1.1-43.P1.el6.centos.1.x86_64
system-config-kickstart-2.8.6.5-1.el6.noarch
pykickstart-1.74.16-1.el6.noarch
[root@Nagios_Server~]#

挂载本地光盘到/mnt

[root@Nagios_Server~]# mount /dev/cdrom /mnt
mount: blockdevice /dev/sr0 is write-protected, mounting read-only
[root@Nagios_Server~]# df -h
Filesystem      Size Used Avail Use% Mounted on
/dev/sda2        30G 4.0G   25G  15% /
tmpfs           495M   80K 495M   1% /dev/shm
/dev/sda1       190M  28M  153M  16% /boot
/dev/sr0        4.4G 4.4G     0 100% /mnt
[root@Nagios_Server~]#

二、相关配置

1、复制安装源到tftpboot

[root@Nagios_Server~]# cp /mnt/isolinux/* /var/lib/tftpboot/ && cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ && mkdir /var/lib/tftpboot/pxelinux.cfg && cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@Nagios_Server~]#


2、配置DHCP  

[root@Nagios_Server~]# \cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[root@Nagios_Server~]# vim /etc/dhcp/dhcpd.conf

添加以下内容

subnet 192.168.1.0netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
#  option domain-name-servers www.test.com;
#  option domain-name "www.test.com";
#  option routers 192.168.1.253;
#  option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
  filename "pxelinux.0";
  next-server 192.168.1.2;
}

wKiom1U-YG2RGZvLAAMbHyz-sxs734.jpg

3、配置NFS,并启动相关服务

[root@Nagios_Server~]# vim /etc/exports 
[root@Nagios_Server~]# cat /etc/exports 
/mnt  *(rw,sync)
[root@Nagios_Server~]# /etc/init.d/nfs restart
Shutting down NFSdaemon:                                 [FAILED]
Shutting down NFSmountd:                                 [FAILED]
Shutting down NFSquotas:                                 [FAILED]
Shutting down RPCidmapd:                                 [失败]
Starting NFSservices:                                    [  OK  ]
Starting NFSquotas:                                      [  OK  ]
Starting NFSmountd:                                      [  OK  ]
Starting NFSdaemon:                                      [  OK  ]
正在启动 RPC idmapd:                                      [确定]
[root@Nagios_Server~]#
重启dhcp服务
[root@Nagios_Server~]# /etc/init.d/dhcpd restart
Startingdhcpd:                                           [  OK  ]
[root@Nagios_Server~]# /etc/init.d/xinetd restart
Stoppingxinetd:                                          [  OK  ]
Startingxinetd:                                          [  OK  ]
[root@Nagios_Server~]# chkconfig tftp on
[root@Nagios_Server~]# chkconfig xinetd on
[root@Nagios_Server~]#


wKiom1U-YKrDspB_AADQwWWOlyM676.jpg

wKioL1U-YhzwrNC2AAM6A_eUQkc211.jpg

wKioL1U-Yj_zKO52AAGqO_AGk5o207.jpg

wKiom1U-YN_BufhDAAHioZ0h3DY313.jpg

此时已经可以进行交互式安装,根据实际情况选择即可。

四、制作应答文件,实现自动化安装

需要借助X Windows生产应答文件

[root@Nagios_Server~]# system-config-kickstart

wKiom1U-Yc3g_9acAAMQvDw2Dp4534.jpg

wKioL1U-YzPiZbwOAAHJZx2ecF0734.jpg

wKiom1U-YdCjMmyZAAH8_8uuzzA850.jpg

wKioL1U-YzzhZ0zsAAKvqpM5A6k409.jpg

wKiom1U-YdnDNrJoAAIbylNyQHA404.jpg

wKiom1U-YduCu_JMAAHPvcGPR6w397.jpg

wKioL1U-Y0HwXFWqAAICBfiDFaA393.jpg

wKioL1U-Y0KxkrH0AAGkfaCC-OY597.jpg

wKiom1U-Yd_w9mNzAALDTMB2Hl0521.jpg

wKioL1U-Y0vAkVGYAAHDixAPwSg967.jpg

wKiom1U-Yeqx436AAAHowlt6i1M132.jpg

wKioL1U-Y1OhYeK0AAHgiPVFZxY276.jpg

wKiom1U-YfDQjIPEAAKCGVfmtUM349.jpg

配置完后要点文件进行保存,我在这保存了/root下了

[root@Nagios_Server~]# mkdir /pxefile
[root@Nagios_Server~]# cp -a /root/ks.cfg /pxefile/
[root@Nagios_Server~]# vim /etc/exports 
[root@Nagios_Server~]# cat /etc/exports 
/mnt  *(rw,sync)
/pxefile*(rw,sync)
[root@Nagios_Server~]# /etc/init.d/nfs restart
Shutting down NFSdaemon:                                 [  OK  ]
Shutting down NFSmountd:                                 [  OK  ]
Shutting down NFSquotas:                                 [  OK  ]
Shutting down NFSservices:                               [  OK  ]
Shutting down RPCidmapd:                                 [确定]
Starting NFS services:                                     [  OK  ]
Starting NFSquotas:                                      [  OK  ]
Starting NFSmountd:                                      [  OK  ]
Starting NFSdaemon:                                      [  OK  ]
正在启动 RPC idmapd:                                      [确定]
[root@Nagios_Server~]#
修改 default文件
[root@Nagios_Server~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
[root@Nagios_Server~]# tail -5 /var/lib/tftpboot/pxelinux.cfg/default 
label linux
  menu label ^Install
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=nfs:192.168.1.2:/pxefile/ks.cfg
[root@Nagios_Server~]# /etc/init.d/dhcpd restart
Shutting downdhcpd:                                      [  OK  ]
Startingdhcpd:                                           [  OK  ]
[root@Nagios_Server~]#

客户端启动,无需交互。

wKiom1U-YnKg3mmIAAERBuYyEzs697.jpg

在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。

需要在ks.cfg末尾添加如下命令来实现需求:

%pre
parted -s /dev/sdb  mklabel gpt
%end