Pxe是一种网络安装的技术,主要是实现批量自动安装固定模版的系统,一般家用不会接触这个,但是要搭建服务器群的时候,Pxe的技术优势就会体现出来。批量、自动、自定义配置,云平台流行起来后,Pxe针对大量安装服务器的作用没之前那么大了。好多企业不会再自己组建机房,而是会租用云设备,但是现在终归不是云时代,就算是云时代,基础的Iaas的平台在开始搭建的时候,也会需要Pxe!
PXE的简介和实现
PXE:
预启动执行环境(Preboot Exection Environment)
一句话总结:
基于网络的自动化安装
实际作用:
实现服务器群的自动化安装
实现的基础:
原理:
1 Client在设置pxe为第一启动项启动后,就会自动寻找DHCP服务器,然后DHCP服务器会分配给client一个ip,并且将NBP(网络自检程序)的地址(Tftp服务器地址,一般都使用TFTP协议传输NBP)告诉Client。
在这个过程中,DHCP服务器起到的作用就是分配给client一个ip(与TFTP服务器通信)和重定向的作用,TFTP服务器和DHCP服务器可以是一台server。实际上,pxe的所有service(服务)都可以在一台server上面运行。
2 当client获得TFTP服务器获得自己的ip和TFTP的ip后,client就会使用获得ip将TFTP服务器中存放的NBP(网络自检程序)下载到电脑的内存,然后执行它,再会从TFTP服务器下载初始引导程序和一些基础文件,里面会有关于安装的配置文件(当然你希望手动安装,也可以不放置配置文件)包含怎么分区,最小化安装还是安装GUI或者是其他。最后还会获得软件包的存放地,一般是指向一个FTP地址或者WEB地址
3 当安装执行,需要软件包的时候,clenit就会通过FTP或者http协议下载软件包,然后安装 最后上张脑图,帮助助理解!
实现:
Client的配置:
- 要是这个都不会,那我无话可说…
server的配置:
- TFTP:简单文件传输协议
因为太过简单,所以Tftp-Server是基于超级守护进程Xinetd而存在的
#yum -y xinetd tftp-server
#vi /etc/xinetd.d/tftp //配置xinetd监听tftp
disable = no //将yes改成no
#service xinetd restart
#chkconfig xinetd on
//将BNP和基础配置文件复制到TFTP服务器目录
#cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
#cp /media/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
#mkdir /var/lib/tftpboot/pxelinux.cfg
#cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#vi /var/lib/ftfpbot/pxelinux.cfg/default
//pexlinux.0需要安装syslinux
#yum -y install syslinux
#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
因为是最小化安装,并没有安装GUI,所以也不能使用System-Config-Kickstart(Gui中一个更改自动化安装配置的软件)来调试自动安装配置,Cfg文件(里面定义了分区,系统选择等配置信息)那就只能使用现成的了
- DHCP服务: 之前应该说DHCP的配置的,疏忽了,那DHCP我就直接说配置了
#yum -y install dhcp
#cat /usr/share/doc/dhcp*/dhcpd.conf.sample > /etc/dhcp/dhcpd.conf
#cp /etc/dhcp/dhcp.conf /etc/dhcp/dhcp.conf.bak`date +%Y%m%d`
#vi /etc/dhcp/dhcpd.conf
option domain-name "example.org";
option domain-name-servers ns1.example.org;
default-lease-time 600; //默认租约600s
max-lease-time 7200; //默认最大租约7200s
log-facility local7; //设定的日志存放地
subnet 172.16.92.0 netmask 255.255.255.0 { //网段
range dynamic-bootp 172.16.92.30 172.16.92.200; //地址池
next-server 172.16.92.12; //tftp服务器地址
filename “pxelinux.0” //如果不是在TFTP根目录,就需要加上路径
}
#server dhcpd start
#chkconfig dhcpd on
基本上到这个地方,Dhcp服务器就差不多了~当然这个只是为了PXE而搭建的最简单的HDCP服务器,里面并没有其他的配置
- Ftp/Web:提供软件包
#yum -y install vsftpd
或者
#yum -y install httpd
//ftp设置无账号密码登陆者根目录(web不需要)
#echo anon_root=/opt > /etc/vsftpd/vsftpd.conf
//Ftp关闭防火墙和selinux沙箱
#server iptablse stop
#setenforce 0
//因为不是Gui界面,所以只能拿已经存在的cfg文件(系统配置文件)改
#cp /root/anaconda-ks.cfg /opt/ks.cfg //ftp
或者
#cp /root/anaconda-ks.cfg /var/www/html/ks.cfg //web
//我给的cfg文件在文章最底下,可以拷贝过去再稍微改下就能用了
#vi /var/lib/tftpboot/pxelinux.cfg/default
...
//设置cfg文件的地点,一般是Web或者Ftp
//只要加上最后一句的ks=ftp://xxx
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://172.16.92.13/ks.cfg
//Web只要将最后一句改成ks=http://172.16.92.13/ks.cfg
...
准备安装源,Web端的只需要将/opt改成/var/www/html就行
#mkdir /opt/centos
#mount -o loop /opt/centos
//下面这句话的意思是开机自动挂载,看需求
#cat /etc/mtab | grep /opt/centos >> /etc/fstab
#vi /opt/ks.cfg
在前面几句中加上
url --url=http://172.16.92.13/centos
或者
url --url=ftp://172.16.92.13/centos
#server vstfpd start
#chkconfig vsftp on
或者
#server httpd start
#chkconfig httpd on