pxe的自动化安装的理论及实现

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-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文件(里面定义了分区,系统选择等配置信息)那就只能使用现成的了

#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服务器,里面并没有其他的配置

#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

cfg文件