前言
今年学校新建了三个机房,联想原装机,8代Intel CPU,NVMe固态硬盘,Windows 10系统。机房管理中常做的事就是系统克隆,之前采用的是Tftpd32+GhostSrv组合来进行,但面对这三个新机房,新硬件,新系统,原有技术失效。通过上百度找到解决方案,采用IPXE+WinPE+GhostSrv组合可解决问题。
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求DHCP服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。
gPXE/iPXE是PXE的扩展版,支持HTTP协议,可以通过http、ISCSI SAN、Fibre Channel SAN via FCoE AoE SAN wireless network Infiniband network等方式启动。iPXE由gPXE分支而来(fork),功能更丰富。
Windows环境下可以使用Tiny IPXE server软件轻松实现,Linux下则要搭建相应环境,相对较复杂。因在自已所处网络环境下测试使用Tiny IPXE Server发现不稳定,决定搭建Linux环境下的IPXE服务器,经测试使用很稳定。下面叙述一下该方案。
一、布署准备
布署环境:Vmware虚拟机中布署
软件清单:
1.IPXE源代码,下载地址:http://www.ipxe.org
2.操作系统:Centos 7
二、布署流程
1.安装CentOS 7操作系统
2.编译环境搭建
3.编译IPXE源码
4.安装DHCP、HTTP、TFTP、XINETD服务
5.配置上述服务
6.定制启动菜单
7.布署WinPE系统
三、具体布署
1.安装CentOS 7操作系统(略)
2.编译环境搭建
#yum install gcc binutils make perl liblzma mtools mkisofs xz-devel
3.编译IPXE源码
(1)tar zxvf ipxe-xxx //解压缩
(2)配置IPXE启动脚本
#Vi ipxescript //创建脚本,名称自取,内容如下
-----------------------------------------------------
#!ipxe
#获取IP地址
dhcp
#配置引导菜单
chain http://x.x.x.x/ipxe/ipxe.html
-------------------------------------------------------
(3)编译
#make bin/undionly.kpxe EMBED=ipxescript
或者
#make bin/ipxe.pxe EMBED=ipxescript
Undionly.kpxe 使用的是通用UNDI(网络驱动接口)来驱动网卡
Ipxe.pxe 使用自带驱动来驱动网卡
部分机器会出现使用UNDI接口不正常(我单位使用的联想机上的RTL8168网卡就不正常)请使用自带驱动,支持列表请官网查看。
4.安装DHCP、HTTP、TFTP、XINETD服务
#yum –y install dhcp httpd tftp-server xinetd
5.配置上述服务
(1)dhcp
#vi /etc/dhcp/dhcpd.conf //修改默认配置脚本,示例如下
----------------------------------------------------------
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
#option space ipxe;
subnet 172.16.30.0 netmask 255.255.255.0 {
range dynamic-bootp 172.16.30.60 172.16.30.70;
option subnet-mask 172.16.30.0;
option broadcast-address 172.16.30.255;
option routers 172.16.30.57;
option domain-name-servers 222.246.129.81;
next-server 172.16.30.1; //tftp服务地址
filename "ipxe/undionly.kpxe"; //引导文件名
}
-------------------------------------------------------------
(2)http
#vi /etc/httpd/conf/httpd.conf
可以直接使用默认配置(略)。
(3)tftp
#vi /etc/xinetd.d/tftp
将disable=yes改为disable=no即可
6.定制启动菜单
#vi /var/www/html/ipxe/ipxe.html //示例内容如下,详情看官网
------------------------------------------------------
#!ipxe
#自定义变量
set dirpath http://192.168.5.50/ipxe
#菜单名称
menu Boot_Menu
item 10PE --Windows 10 PE
item custom_exit –Exit
choose –default 10PE –timeout 5000 custom_choice || goto custom_exit
echo ${cls}
goto ${custom_choice}
goto custom_exit
:10PE
kernel ${dirpath}/memdisk raw iso
initrd ${dirpath}/10PE.iso
boot || goto custom_exit
:custom_exit
Exit
---------------------------------------------------------
注:&&、||是两个操作符,&&表示左侧命令执行成功则执行&&后的命令,||表示左侧命令执行失败则执行||后的命令。
7.布署WinPE系统
将需要运行的WinPE系统ISO镜像包放入/var/www/html/ipxe/文件夹供客户端下载。找了很多PE镜像,“U盘量产网”中的“Win10PE 14393(x86+x64)可上网可网启v12.28 ljycslg精简版”是比较理想的符合机房管理用的镜像包,推荐使用。
8.运行httpd、tftp、dhcpd、xinetd服务
#systemctl start httpd
#systemctl start dhcpd
#systemctl start tftp
#systemctl start xinetd
为方便使用,请将上述服务设置为自启动。CentOS默认开启防火墙,要关闭防火墙或添加防火墙规则来让服务器能被客户端访问。关闭防火墙命令如下:
#systemctl stop firewalld
通过以上步骤便搭建好了IPXE服务器,可以方便地通过网络启动PE系统来维护计算机。