一、基本概念
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中的设置重启系统,并结束安装.
3、PXE+Kickstart无人值守安装操作系统完整过程如下
第一步:PXEClient向DHCP服务器发送请求
首先,将支持PXE的网络接口卡(NIC)的客户端BIOS设置为网络启动,通过PXE BootROM(自启动芯片)会一UDP协议发送一个广播请求,向网络中的DHCP服务器申请一个IP地址信息.
第二步:DHCP服务器提供信息
DHCP服务器收到客户端请求,验证是否来自PXEClient的请求,验证通过后向客户端回响应信息,包括:客户端IP地址,TFTP Server、pxelinux.0文件名.
第三步:PXE客户端请求下载启动文件
客户端请求传送启动所需文件,包括pxelinux.0、pxelinux. cfg/default、vmlinuz、initrd.img等文件.
第四步:BootInstall Server响应客户端请求并传送文件
TFTP服务器收到客户端请求后,彼此间进行通信应答,确定启动参数,BootROM由TFTP通信协议从BootServer下载启动安装程序所必需文件(pxelinux.0pxelinux.cfg/default).default文件下载完成后,会根据
该文件中定义的引导顺序,启动Linux安装程序的引导内核.
第五步:请求下载Kickstart配置文件
客户端通过pxelinux.cfg/default文件成功的引导Linux运行是因为制订了Kickstart配置文件信息所以当一vmlinuz、initrd.img组成的系统运行成功后系统确定你通过什么安装介质来安装Linux如果是通过网络安装(NFS、FTP、HTTP)则会在这个时候初始化网络,并请求下载Kickstart配置文件.刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次因为现在已经进入了有vmlinuz、initrd.img等文件组成的系统中了,由于PXE的网络配置并不能传递给这个系统,所以才会进行两次获取IP地址过程.
第六步:客户端安装操作系统
将ks.cfg文件下载后,通过该文件找到OS Sserver,并按照该文件的配置请求下载安装过程需要的文件,OS Server和客户端建立连接后,将开始传输文件,客户端将开始安装操作系统,安装完成后,将会根据ks.cfg文件设置来重启或关机注意:安装完成后开机一定要将BIOS修改会从硬盘启动,不然的话又会重复的自动安装操作系统.
以上理论部分摘自http://wxj121.blog.51cto.com/7136845/1638343
感谢军爽博主的总结,如有侵权,请联系我,我将于第一时间删除。
二、环境及所需软件
服务器端IP 192.168.1.2
Vmware下Centos6.5_x86_x64
网络模式为 Vmnet 1
需安装的软件
dhcp、tftp-server、pykickstart、syslinux、system-config-kickstart
1
2
3
4
5
6
7
8
|
[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
1
2
3
4
5
6
7
8
9
|
[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
1
2
|
[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
1
2
|
[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
|
添加以下内容
1
2
3
4
5
6
7
8
9
10
11
|
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;
}
|
3、配置NFS,并启动相关服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[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~]
#
|
此时已经可以进行交互式安装,根据实际情况选择即可。
四、制作应答文件,实现自动化安装
需要借助X Windows生产应答文件
1
|
[root@Nagios_Server~]
# system-config-kickstart
|
配置完后要点文件进行保存,我在这保存了/root下了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
[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~]
#
|
客户端启动,无需交互。
在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。
需要在ks.cfg末尾添加如下命令来实现需求:
%pre
parted -s /dev/sdb mklabel gpt
%end
本文转自Jacken_yang 51CTO博客,原文链接:http://blog.51cto.com/linuxnote/1639532,如需转载请自行联系原作者