运用IPXE技术引导PE系统(CentOS篇)

时间:2024-05-18 20:13:36

前言

今年学校新建了三个机房,联想原装机,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服务器,经测试使用很稳定。下面叙述一下该方案。

运用IPXE技术引导PE系统(CentOS篇)

一、布署准备

布署环境: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精简版”是比较理想的符合机房管理用的镜像包,推荐使用。

运用IPXE技术引导PE系统(CentOS篇)

8.运行httpd、tftp、dhcpd、xinetd服务

#systemctl start httpd

#systemctl start dhcpd

#systemctl start tftp

#systemctl start xinetd

为方便使用,请将上述服务设置为自启动。CentOS默认开启防火墙,要关闭防火墙或添加防火墙规则来让服务器能被客户端访问。关闭防火墙命令如下:

#systemctl stop firewalld

通过以上步骤便搭建好了IPXE服务器,可以方便地通过网络启动PE系统来维护计算机。