PXE高效能网络批量装机

一、PXE简介
PXE:Pre-boot Excution Environment,预启动执行环境
PXE是由Intel公司开发的网络引导技术,工作再Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
若要搭建PXE网络体系,必须要满足以下条件:
①客户机的网卡支持PXE协议(集成BOOTROM芯片),且主板支持网络引导
②网络中有一台DHCP服务器,以便为客户机分配地址,指定引导文件位置
服务器通过TFTP(Trivial File Transfer Protocol)简单文件传输协议提供引导镜像文件的下载。
 
PXE+Kickstart无人值守安装操作系统完成过程
①PXE client向DHCP发送请求
PXE client会从PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据包协议)发送一个广播请求,向本网络中的DHCP服务器索取IP
② DHCP服务器提供信息
DHCP服务器接收到客户端的请求,验证是否来自合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
③ PXE客户端请求下载启动文件
客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件,这些启动文件包括:(pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img)等文件。
④ Boot Server响应客户端请求并传送文件
当服务器收到客户端的请求后,他们之间之后将由更多的信息再客户端与服务器之间作应答,用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下周启动安装程序所需的文件(pxelinux0、pxelinux.conf/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动linux安装程序引导内核
⑤ 请求下载自动应答文件
客户端通过(pxelinux.cfg/default)文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS,FTP,HTTP),则会在这个时候初始化网络,并定位安装源位置,接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
这里有个问题,在第2部和第5部初始化2次网络了,这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件,因此PXE模块和安装程序时相对独立的,PXE的网络配置并不能传递给安装程序,从而进行两次 获取IP地址过程,但IP地址在DHCP租期是 一样的。
⑥ 客户端安装操作系统
将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包,OS Server和安装端建立连接后,将开始传输软件包,客户端将开始安装操作系统,安装完成后,将提示重新引导计算机。
二、搭建PXE远程安装服务器
操作环境
[root@zhangmingjuan ~]# hostname -I
192.168.204.152
[root@zhangmingjuan ~]# uname -r
2.6.32-431.el6.x86_64
[root@zhangmingjuan ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
①准备CentOS 6 安装源(创建一个光盘源以FTP形式共享出去)
使用FTP服务,将安装源放至/var/ftp/centos 6/目录下
[root@zhangmingjuan ~]# mkdir -p /var/ftp/centos6
[root@zhangmingjuan ~]# ls /media/cdrom/
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
images           RPM-GPG-KEY-CentOS-6
[root@zhangmingjuan ~]# cd /var/ftp/centos6/
[root@zhangmingjuan centos6]# cp -rp /media/cdrom/* .
[root@zhangmingjuan centos6]# ls
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
images           RPM-GPG-KEY-CentOS-6
[root@zhangmingjuan centos6]# ll -dh /var/ftp/centos6/
drwxr-xr-x 7 root root 4.0K Nov 29 21:43 /var/ftp/centos6/
②安装并启用TFTP服务
[root@zhangmingjuan ~]# mount /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@zhangmingjuan ~]# yum -y install tftp-server
[root@zhangmingjuan ~]# vim /etc/xinetd.d/tftp         ##修改配置文件
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = no          ##无需等待,同一时刻可以有多个客户端连接
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot         ##tftp服务的根目录
        disable                 = no          ##开启tftp服务
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
[root@zhangmingjuan ~]# /etc/init.d/xinetd start        ##打开服务
Starting xinetd:                                           [  OK  ]
[root@zhangmingjuan ~]# chkconfig tftp on        ##设置开机启动
③准备Linux内核、初始化镜像文件
[root@zhangmingjuan ~]# cd /var/ftp/centos6/isolinux/
[root@zhangmingjuan isolinux]# ls
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.jpg  vesamenu.c32
[root@zhangmingjuan isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/     ##需要的两个文件拷贝过去
④准备PXE引导程序、启动菜单文件
[root@zhangmingjuan ~]# yum -y install syslinux             ##准备引导程序文件
[root@zhangmingjuan ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@zhangmingjuan ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog
##准备启动菜单
[root@zhangmingjuan ~]# cp /var/ftp/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/
[root@zhangmingjuan ~]# cd /var/lib/tftpboot/
[root@zhangmingjuan tftpboot]# chmod 644 isolinux.cfg
[root@zhangmingjuan tftpboot]# vim isolinux.cfg      ##修改内核启动配置文件如下
default linux          ##名字
prompt 0             ##不进行交互
#timeout 600
 
display boot.msg
label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img
label text
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append text initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append rescue initrd=initrd.img rescue
 
[root@zhangmingjuan tftpboot]# mkdir pxelinux.cfg
[root@zhangmingjuan tftpboot]# ls
initrd.img  isolinux.cfg  pxelinux.0  pxelinux.cfg  vmlinuz
[root@zhangmingjuan tftpboot]# mv isolinux.cfg ./pxelinux.cfg/default
[root@zhangmingjuan tftpboot]# ll -R
.:
total 36676
-r--r--r-- 1 root root 33392971 Nov 29 22:06 initrd.img         ##初始化镜像文件
-rw-r--r-- 1 root root    26828 Nov 29 22:10 pxelinux.0         ##PXE引导程序
drwxr-xr-x 2 root root     4096 Nov 29 22:33 pxelinux.cfg
-r-xr-xr-x 1 root root  4128368 Nov 29 22:06 vmlinuz           ##Linux内核
 
./pxelinux.cfg:
total 4
-rw-r--r-- 1 root root 941 Nov 29 22:28 default           ##PXE启动菜单
 
##一共是下面四个文件,是tftp要发给底下客户端的引导文件
[root@zhangmingjuan tftpboot]# ls
initrd.img  isolinux.cfg  pxelinux.0  vmlinuz
 
⑤安装并启动DHCP服务
[root@zhangmingjuan ~]# yum -y install dhcp
[root@zhangmingjuan ~]# vim /etc/dhcp/dhcpd.conf
[root@zhangmingjuan ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[root@zhangmingjuan ~]# vim /etc/dhcp/dhcpd.conf
 
option domain-name "www.yunjisuan.com";           ##修改配置文件如下
option domain-name-servers 192.168.204.2;
 
default-lease-time 21600;
max-lease-time 43200;
 
# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;
 
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;
 
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
 
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
 
 
# This is a very basic subnet declaration.
 
subnet 192.168.204.0 netmask 255.255.255.0 {
  range 192.168.204.100 192.168.204.200;
  option routers 192.168.204.2;
  next-server 192.168.204.152;             ##告诉他去找tftp服务
  filename "pxelinux.0";                   ##要文件
}
[root@zhangmingjuan dhcp]# /etc/init.d/dhcpd start
Starting dhcpd:                                            [  OK  ]
[root@zhangmingjuan dhcp]# netstat -antup | grep 67
udp        0      0 0.0.0.0:67                  0.0.0.0:*                               1424/dhcpd      
[root@zhangmingjuan ~]# yum -y install vsftpd
[root@zhangmingjuan ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
 
FTP客户机检验FTP是否通:
[root@localhost ~]# mount /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# yum -y install ftp
[root@localhost ~]# ftp 192.168.204.152
Connected to 192.168.204.152 (192.168.204.152).
220 (vsFTPd 2.2.2)
Name (192.168.204.152:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,204,152,95,199).
150 Here comes the directory listing.
drwxr-xr-x    7 0        0            4096 Nov 29 13:43 centos6
drwxr-xr-x    2 0        0            4096 Mar 01  2013 pub
226 Directory send OK.
ftp> cd centos6
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,204,152,242,25).
150 Here comes the directory listing.
-r--r--r--    1 0        0              14 Nov 29  2013 CentOS_BuildTag
dr-xr-xr-x    3 0        0            4096 Nov 29  2013 EFI
-r--r--r--    1 0        0             212 Nov 27  2013 EULA
-r--r--r--    1 0        0           18009 Nov 27  2013 GPL
dr-xr-xr-x    2 0        0          262144 Nov 29  2013 Packages
-r--r--r--    1 0        0            1354 Nov 27  2013 RELEASE-NOTES-en-US.html
-r--r--r--    1 0        0            1706 Nov 27  2013 RPM-GPG-KEY-CentOS-6
-r--r--r--    1 0        0            1730 Nov 27  2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r--    1 0        0            1730 Nov 27  2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r--    1 0        0            1734 Nov 27  2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--    1 0        0            3380 Nov 29  2013 TRANS.TBL
dr-xr-xr-x    3 0        0            4096 Nov 29  2013 images
dr-xr-xr-x    2 0        0            4096 Nov 29  2013 isolinux
dr-xr-xr-x    2 0        0            4096 Nov 29  2013 repodata
226 Directory send OK.
 
⑥新建虚拟机进行验证
<1>调整BIOS,以便从网络引导(不调整默认从网络引导)
<2>自动获取IP地址,并指向centos安装源
<3>其余过程与本地安装同
三、实现kickstart无人值守安装
PXE宿主机上
①创建应答文件
[root@zhangmingjuan ~]# yum -y install system-config-kickstart
[root@zhangmingjuan ~]# init 5
 
或执行命令
②免去交互设置过程,从而实现全自动化安装
 
 
③通过添加%post脚本,完成安装后的各种配置操作
四、实现批量自动装机
①将应答文件部署在客户机可以访问的位置
[root@zhangmingjuan ~]# ls
anaconda-ks.cfg  dhcpd.conf.sample  install.log         Music     Templates
Desktop          Documents          install.log.syslog  Pictures  Videos
dhcpd.conf       Downloads          ks.cfg              Public
[root@zhangmingjuan ~]# cp ks.cfg /var/ftp/
[root@zhangmingjuan ~]# chmod 777 /var/ftp/ks.cfg
 
②修改启动菜单文件,调用应答文件
[root@zhangmingjuan ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
③验证无人值守安装
无人值守安装时,遇到卡到如下界面许手动点击OK
 
解决办法:
在ks.cfg文件加入unsupported_hardware命令
 
[root@zhangmingjuan ~]# cd /var/ftp/
[root@zhangmingjuan ~]# vim ks.cfg
 
 
 

猜你喜欢

转载自www.cnblogs.com/juanne/p/10078416.html