一、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中自动安装系统的详细工作过程:
基本原理及工作流程:
首先,在客户端主机的网卡要支持网络引导,当开机时网卡就会激活当中的程序,自行通过网络向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/
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文件组成:
命令行部分
url --url="http://192.168.0.15/Centos6.5"
软件包部分
@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