一、基本概念
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
[root@Nagios_Server ~]# yum -y install dhcptftp-server pykickstart syslinux system-config-kickstart [root@Nagios_Server~]# rpm -qa dhcp tftp-server pykickstartsyslinux 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 && echo $? 0 [root@Nagios_Server~]#
2、编辑/var/lib/tftpboot/pxelinux.cfg/default(复制模板,并把模板上的“menu default”删除)
[root@Nagios_Server~]# vim /var/lib/tftpboot/pxelinux.cfg/default 修改如下: defaultvesamenu.c32 #prompt 1 timeout 600 display boot.msg menu backgroundsplash.jpg menu title Welcometo CentOS 6.6! menu color border0 #ffffffff #00000000 menu color sel 7#ffffffff #ff000000 menu color title 0#ffffffff #00000000 menu color tabmsg0 #ffffffff #00000000 menu color unsel 0#ffffffff #00000000 menu color hotsel0 #ff000000 #ffffffff menu color hotkey7 #ffffffff #ff000000 menu colorscrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existingsystem kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic videodriver kernel vmlinuz append initrd=initrd.img xdriver=vesanomodeset 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 - label linux menu label ^Install menu default kernel vmlinuz append initrd=initrd.img
3、配置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; }
4、配置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~]#
此时已经可以进行交互式安装,根据实际情况选择即可。
四、制作应答文件,实现自动化安装
需要借助X Windows生产应答文件
[root@Nagios_Server~]# system-config-kickstart
配置完后要点文件进行保存,我在这保存了/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~]#
客户端启动,无需交互。
本文出自 “Welcome To Linux World” 博客,请务必保留此出处http://linuxnote.blog.51cto.com/9876511/1639532
原文地址:http://linuxnote.blog.51cto.com/9876511/1639532