一:部署 PXE 远程安装服务
在大规模的
Linux
应用环境中,如
Web
群集、分布式计算等,服务器往往并不配备光
驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的
USB
光驱、移动硬盘等安装方法显然已经难以满足需求。
上述服务器的批量部署方法,具备以下三个优点:
规模化:同时装配多台服务器;
自动化:安装系统、配置各种服务;
远程实现:不需要光盘、
U
盘等安装介质。
PXE
是由
Intel
公司开发的网络引导技术,工作在
Client/Server
模式,允许客户机通过
网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建
PXE
网络
体系,必须满足以下几个前提条件。
客户机的网卡支持
PXE
协议(集成
BOOTROM
芯片),且主板支持网络引导。
网络中有一台
DHCP
服务器以便为客户机自动分配地址、指定引导文件位置。
服务器通过
TFTP
(
Trivial File Transfer Protocol
,简单文件传输协议)提供引导
镜像文件的下载。
其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数
PC
都能够提供此
支持,只需在
BIOS
设置中允许从
Network
或
LAN
启动即可。下面将介绍
PXE
远程安装服
务的基本部署过程。
1:搭建 PXE 远程安装服务器
本例的
PXE
远程安装服务器集成了
CentOS 7
安装源、
TFTP
服务、
DHCP
服务,能
够向客户机裸机发送
PXE
引导程序、
Linux
内核、启动菜单等数据,以及提供安装文件。
1:准备 CentOS 7 安装源
CentOS 7
的网络安装源一般通过
HTTP
、
FTP
协议发布,另外也支持
NFS
(
Network
File System
,网络文件系统)协议,关于
NFS
的配置请参阅其他资料,这里不再赘述。
例如,若采用
FTP
协议发布安装源,可以在服务器上部署一个
YUM
软件仓库。
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7/
[root@localhost ~]# systemctl start vsftpd
2:安装并启用
TFTP
服务
TFTP
服务由
tftp-server
软件包提供,配置文件位于
/etc/xinetd.d/tftp
。配置时只要将
“disable = yes”
改为
“disable = no”
,然后启动
TFTP
服务即可。
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
service tftp
{
…… //省略部分信息
protocol = udp //TFTP 采用 UDP 传输协议
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定 TFTP 根目录
disable = no
…… //省略部分信息
}
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to
/usr/lib/systemd/system/tftp.socket.
3:准备 Linux 内核、初始化镜像文件
用于
PXE
网络安装的
Linux
内核、初始化镜像文件可以从
CentOS 7
系统光盘获得,
分别为
vmlinuz
和
initrd.img
,位于文件夹
images/pxeboot
下。找到这两个文件并将其复制
到
tftp
服务的根目录下。
[root@localhost ~]# cd /media/cdrom/images/pxeboot
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot
4:准备 PXE 引导程序
用于
PXE
网络安装的引导程序为
pxelinux.0
,由软件包
syslinux
提供。安装好软件包
syslinux
,然后将文件
pxelinux.0
也复制到
tftp
服务的根目录下。
[root@localhost ~]#
yum -y install syslinux
[root@localhost ~]#
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
5:安装并启用 DHCP 服务
由于
PXE
客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相
关引导文件,需要预先配置好
DHCP
服务来自动分配地址并告知引导文件位置。如
PXE
服
务器的
IP
地址为
192.168.4.254
,
DHCP
地址池为
192.168.4.100
~
192.168.4.200
,则可
以参考以下操作来
搭建 DHCP
服务器。
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
……
//省略部分信息
subnet 192.168.4.0 netmask 255.255.255.0 {
option routers 192.168.4.254;
option subnet-mask 255.255.255.0;
option domain-name "bdqn.com";
option domain-name-servers 192.168.4.254,202.106.0.20;
default-lease-time 21600;
max-lease-time 43200;
range 192.168.4.100 192.168.4.200;
next-server 192.168.4.254; //指定 TFTP 服务器的地址
filename "pxelinux.0"; //指定 PXE 引导程序的文件名
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multiuser.target.wants/dhcpd.service to
/usr/lib/systemd/system/dhcpd.service.
从上述过程可以看到,与一般
DHCP
服务不同的是,配置文件中增加了
netx-server
和
filename
这两行记录,分别用来指定
TFTP
服务器的地址和
PXE
引导程序的文件名。
6:配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认
的启动菜单文件为
default
,应放置在
tftp
根目录的
pxelinux.cfg
子目录下,典型的启动菜单
配置可参考以下操作手动建立。
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto //指定默认入口名称
prompt 1 //1 表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.4.254/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.4.254/centos7
上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。
其中,
prompt
用来设置是否等待用户选择;
label
用来定义并分隔启动项;
kernel
和
append
用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人值守安装时
只需要一个入口就够了。
2:验证 PXE 网络安装
搭建好
PXE
远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的
服务器或
PC
裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修
改
BIOS
设置,将
“Boot First”
设为
“NETWORK”
或
“LAN”
,然后重启主机;若使用
VMware
创建的虚拟机进行测试,虚拟机内存至少需要
2GB
,否则在启动安装时会报错。
如果服务器配置正确,网络连接、
PXE
支持等都没有问题,则客户机重启后将自动配
置
IP
地址,然后从
TFTP
服务器中获取引导程序
pxelinux.0
,并根据引导菜单配置提示用
户指定启动入口。