一.部署 PXE 远程安装服务
在大规模的
Linux
应用环境中,如
Web
群集、分布式计算等,服务器往往并不配备光
驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的
USB
光驱、移动硬盘等安装方法显然已经难以满足需求。
本章将学习基于
PXE
(
Preboot eXecution Environment
,预启动执行环境)技术的网
络装机方法,并结合
Kickstart
配置实现无人值守自动安装。
上述服务器的批量部署方法,具备以下三个优点:
上述服务器的批量部署方法,具备以下三个优点:
规模化:同时装配多台服务器;
自动化:安装系统、配置各种服务;
远程实现:不需要光盘、U
盘等安装介质。
PXE
是由
Intel
公司开发的网络引导技术,工作在
Client/Server
模式,允许客户机通过
网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建
PXE
网络
体系,必须满足以下几个前提条件。
客户机的网卡支持 PXE
协议(集成
BOOTROM
芯片),且主板支持网络引导。
网络中有一台 DHCP
服务器以便为客户机自动分配地址、指定引导文件位置。
服务器通过 TFTP
(
Trivial File Transfer Protocol
,简单文件传输协议)提供引导
镜像文件的下载。
其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数
PC
都能够提供此
支持,只需在
BIOS
设置中允许从
Network
或
LAN
启动即可。下面将介绍
PXE
远程安装服
务的基本部署过程。
一.搭建PXE远程安装服务器
本例的
PXE
远程安装服务器集成了
CentOS 7
安装源、
TFTP
服务、
DHCP
服务,能
够向客户机裸机发送
PXE
引导程序、
Linux
内核、启动菜单等数据,以及提供安装文件。
1.准备Centos7安装源
CentOS 7
的网络安装源一般通过
HTTP
、
FTP
协议发布,另外也支持
NFS
(
Network
File System
,网络文件系统)协议,关于
NFS
的配置请参阅其他资料,这里不再赘述。
例如,若采用
FTP
协议发布安装源,可以在服务器上部署一个
YUM
软件仓库。
![](https://img-blog.csdnimg.cn/direct/2ebd097ff3dc4e8cb6069bcad4f0f597.png)
2.安装并启用TFTP服务
TFTP
服务由
tftp-server
软件包提供,配置文件位于
/etc/xinetd.d/tftp
。配置时只要将
“disable = yes”
改为
“disable = no”
,然后启动
TFTP
服务即可。
![](https://img-blog.csdnimg.cn/direct/d56e7563beff48438194f04b928be264.png)
3.准备Linux内核丶初始化镜像文件
用于
PXE
网络安装的
Linux
内核、初始化镜像文件可以从
CentOS 7
系统光盘获得,
分别为
vmlinuz
和
initrd.img
,位于文件夹
images/pxeboot
下。找到这两个文件并将其复制
到
tftp
服务的根目录下。
![](https://img-blog.csdnimg.cn/direct/1775385b004e4dc1a9cea23ee47fafc1.png)
4.准备PXE引导程序
用于
PXE
网络安装的引导程序为
pxelinux.0
,由软件包
syslinux
提供。安装好软件包
syslinux
,然后将文件
pxelinux.0
也复制到
tftp
服务的根目录下。
![](https://img-blog.csdnimg.cn/direct/61f094babc6141d1b7e46765c07e4943.png)
5.安装并启用DHCP服务
由于
PXE
客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相
关引导文件,需要预先配置好
DHCP
服务来自动分配地址并告知引导文件位置。如
PXE
服
务器的
IP
地址为
192.168.4.254
,
DHCP
地址池为
192.168.4.100
~
192.168.4.200
,则可
以参考以下操作来搭建
DHCP
服务器。
![](https://img-blog.csdnimg.cn/direct/58c59a8166ab4ae5aa63249ef28cd0ae.png)
从上述过程可以看到,与一般
DHCP
服务不同的是,配置文件中增加了
netx-server
和
filename
这两行记录,分别用来指定
TFTP
服务器的地址和
PXE
引导程序的文件名。
6.配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认
的启动菜单文件为
default
,应放置在
tftp
根目录的
pxelinux.cfg
子目录下,典型的启动菜单
配置可参考以下操作手动建立。
![](https://img-blog.csdnimg.cn/direct/3088f85410c44b3d8578add6f7468f4b.png)
上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。
其中,
prompt
用来设置是否等待用户选择;label 用来定义并分隔启动项;
kernel
和
append
用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人值守安装时
只需要一个入口就够了。
二.验证PXE网络安装
搭建好
PXE
远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的
服务器或
PC
裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修
改
BIOS
设置,将
“Boot First”
设为
“NETWORK”
或
“LAN”
,然后重启主机;若使用
VMware
创建的虚拟机进行测试,虚拟机内存至少需要
2GB
,否则在启动安装时会报错。
如果服务器配置正确,网络连接、
PXE
支持等都没有问题,则客户机重启后将自动配
置
IP
地址,然后从
TFTP
服务器中获取引导程序
pxelinux.0
,并根据引导菜单配置提示用
户指定启动入口,如图
所示。
![](https://img-blog.csdnimg.cn/direct/22e4d58f4e794dd0aebfd0cc3a12e087.png)
在提示字串
“boot:”
后直接按
Enter
键(或执行
“auto”
命令),将会进入默认的图形安装入
口;若执行
“linux text”
命令,则进入文本安装入口;若执行
“linux rescue”
命令,则进入救援
模式。
直接按
Enter
键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如图所示。若能够成功到达这一步,说明 PXE
网络安装基本成功。后续安装步骤与使用光 盘的正常安装类似,这里不再叙述。
![](https://img-blog.csdnimg.cn/direct/ac5dc4537e14481cb723bbd74f379e8d.png)
二.实现Kickstart无人值守安装
上一节介绍了通过
PXE
技术远程安装
CentOS 7
系统的方法,安装介质不再受限于光
盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、
键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。
本节将进一步学习如何实现无人值守自动安装,通过使用
Kickstart
工具配置安装应答
文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。
一.准备安装应答文件
在
CentOS 7
系统中安装
system-config-kickstart
工具之后,即可通过图形化向导工具
来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑
CentOS
7
安装后自动创建的应答文件(
/root/anaconda-ks.cfg
),根据需要适当修订后使用。
1.配置安装应答参数
通过桌面菜单
“
应用程序
”→“
系统工具
”→“Kickstart”
即可打开
“Kickstart
配置程序
”
窗口。
在
“Kickstart
配置程序
”
窗口中,可以针对基本配置、安装方法、引导装载程序选项、分区信
息、网络配置等各种安装设置进行指定,如图
所示。
(1)基本配置及安装方法
基本配置
”
可参考图
来指定。例如,将默认语言设为
“
中文(简体)
”
,时区设为
“Asia/Shanghai”
,根口令设为
“pwd123”
,高级配置中勾选
“
安装后重启
”
。
在
“
安装方法
”
界面中,应正确指定
CentOS 7
的安装方法,如下图
所示。若有用户验
证信息也需一并指定。在
“
引导装载程序选项
”
界面中,选择安装新引导装载程序。
![](https://img-blog.csdnimg.cn/direct/c23abca61ff049668883965732a4cba0.png)
(2)分区信息
在
“
分区信息
”
界面中,需正确规划硬盘分区方案。例如,可划分一个
500MB
的
/boot
分区、
4GB
的
/home
分区、
2GB
的
swap
分区,将剩余空间划分给根分区,如图所示。
(3)网络配置及防火墙配置
在
“
网络配置
”
界面中,添加一个网络设备
“ens33”
,将网络类型设为
“DHCP”
。
在
“
防火墙配置
”
界面中,可以选择禁用
SELinux
、禁用防火墙。
(4)软件包选择
CentOS 7
系统开始不再提供软件包的选择,如图
所示。如果需要安装软件包,可
以根据需要将
/root/anaconda-ks.cfg
的软件包安装脚本复制到
ks.cfg
文件中,只需要复
制
%packages
到
%end
部分即可,在
%packages
到
%end
之间,包含以
@
开头的软件包列
表,将不需要的软件名删除,剩下的就是系统会自动安装的软件包。例如,仅保留以下内容
即为采用最小化安装。
![](https://img-blog.csdnimg.cn/direct/5b082041ac3d4c51a3e660622bbe9e8b.png)
(5)安装脚本
在
“
预安装脚本
”
界面、
“
安装后脚本
”
界面中,可以分别添加在安装前、安装后自动运行
的可执行语句。此项设置使服务器的自动化配置变得更加容易。例如,可以使客户机在完成
安装后自动设置
YUM
软件仓库,如图
所示。需要注意的是,应确保所编写的代码能够正确执行,以免安装失败。
![](https://img-blog.csdnimg.cn/direct/83b98943418442ed904db5ecc4822dc7.png)
(6)其他信息
若没有特殊需求,在
“
验证
”
界面、
“
显示配置
”
界面中,保持默认设置就可以了。
2.保存自动应答文件
选择
“Kickstart
配置程序
”
窗口的
“
文件
”→“
保存
”
命令,指定目标文件夹、文件名,将配
置好的应答参数保存为文本文件,如
/root/ks.cfg
。以后若要修改此应答配置,可以在
“Kickstart
配置程序
”
窗口中打开进行调整,或者直接用
VI
等文本编辑工具进行修改。
![](https://img-blog.csdnimg.cn/direct/afa7ce810a6a4ef88f4752a3654b43ef.png)
![](https://img-blog.csdnimg.cn/direct/79fa0391b4ad47448776f6e195396422.png)
二.实现批量自动装机
有了自动安装的应答文件之后,只要将其放置
PXE
安装服务器的
FTP
目录下,并适当
修改引导菜单,就可以实现基于网络的批量自动装机了。
1.启用自动应答文件
在
PXE
远程安装服务器中,将上一节建立的应答文件复制到
/var/ftp/centos7
目录下,
使客户机能够通过
ftp://192.168.4.254/centos7/ks.cfg
访问;然后编辑引导菜单文件
default
,
添加
ks
引导参数以指定
ks.cfg
应答文件的
URL
路径。
![](https://img-blog.csdnimg.cn/direct/e505ccbab1864008844f27ac2ef62e5d.png)
2.验证无人值守安装
启用自动应答安装之后,当客户机每次以
PXE
方式引导时,将自动下载
ks.cfg
应答配
置文件,然后根据其中的设置安装
CentOS 7
系统,而无须手工干预,如图
所示,这样就可以同时为多台客户机安装系统了。
客户机安装完成以后,检查其
YUM
软件仓库配置,可以发现已经按照
“
安装后脚本
”
的
设置自动建立了
/etc/yum.repos.d/centos7.repo
文件。
![](https://img-blog.csdnimg.cn/direct/a01ae6a04d47487eb71e5db2433c779b.png)
![](https://img-blog.csdnimg.cn/direct/7d215a9b9c0e4b178dc9de2d810216b2.png)
注意:如果是在
VMware
虚拟机环境下,需要禁用
VMware
的
DHCP
功能;否则
安装文件将无法加载。