目录
PXE概述
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。在启动过程中,BIOS把PXEClient调入内存中执行,然后由PXEClient向DHCP服务器请求分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
-
服务端
运行DHCP服务,用来分配地址、定位引导程序
运行TFTP服务器,提供引导程序下载 -
客户端
网卡支持PXE协议
主板支持网络启动
为何要部署 PXE 远程安装服务
在大规模的 Linux 应用环境中,如 Web 群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的 USB 光驱、移动硬盘等安装方法显然已经难以满足需求。
若要搭建 PXE 网络体系,必须满足以下几个前提条件。
- 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
- 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
- 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。
部署优点
- 规模化:同时装配多台服务器;
- 自动化:安装系统、配置各种服务;
- 远程实现:不需要光盘、 U 盘等安装介质。
搭建PXE远程安装服务器实例
本例的 PXE 远程安装服务器集成了 CentOS 7 安装源、 TFTP 服务、 DHCP 服务,能够向客户机裸机发送 PXE 引导程序、 Linux 内核、启动菜单等数据,以及提供安装文件。
准备工作:
一台Linux系统搭建服务
一台Linux系统做PXE测试
1.采用 FTP 协议发布安装源
mkdir -p /var/ftp/centos7
mount /dev/cdrom /mnt
cp -rf /mnt/* /var/ftp/centos7
yum -y install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
关闭防火墙和核心防护并开启服务
systemctl disable firewalld #永久关闭防火墙
2.安装并启用 TFTP 服务
yum -y install tftp-server
vim /etc/xinetd.d/tftp
TFTP 服务由 tftp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只要将“disable = yes”改为“disable = no”,然后启动 TFTP 服务即可。
systemctl restart tftp #重启服务
systemctl enable tftp #永久开启服务
3.准备 Linux 内核、初始化镜像文件
用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS 7 系统光盘获得,分别为 vmlinuz 和 initrd.img,位于文件夹 images/pxeboot 下。找到这两个文件并将其复制到 tftp 服务的根目录下。
cd /mnt/images/pxeboot/ #切换到挂载目录/mntimages/pxeboot/
cp vmlinuz initrd.img /var/lib/tftpboot/ #两个文件并将其复制到 tftp 服务的根目录下
4.准备 PXE 引导程序
用于 PXE 网络安装的引导程序为 pxelinux.0,由软件包 syslinux 提供。安装好软件包syslinux,然后将文件 pxelinux.0 也复制到 tftp 服务的根目录下。
yum -y install syslinux #
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
拷贝到tftp的根目录下/var/lib/tftpboot/,系统引导文件
5.安装并启用 DHCP 服务
由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。
yum -y install dhcp
vim /etc/dhcp/dhcpd.conf
systemctl start dhcpd
systemctl enable dhcpd
从上述过程可以看到,与一般 DHCP 服务不同的是,配置文件中增加了 netx-server 和filename 这两行记录,分别用来指定 TFTP 服务器的地址和 PXE 引导程序的文件名。
6.配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作手动建立。
mkdir /var/lib/tftpboot/pxelinux.cfg #默认pxelinux.cfg是没有的需要手动创建,注意它是一个目录而非文件虽然是以.cfg结尾
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto #指定默认入口名称 ,对应下面的label auto
prompt 1 #设置是否等待用户选择,1 表示等待用户控制,0表示不等待用户控制,安装时会出现boot:如果按回车表示选择auto模式
label auto #默认的图形安装
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.154.20/centos7
label linux text #文本安装模式,出现boot:时输入linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.154.20/centos7
label linux rescue #救援模式,出现boot:时输入linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.154.20/centos7
上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。
其中, prompt 用来设置是否等待用户选择; label 用来定义并分隔启动项; kernel 和 append用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人值守安装时只需要一个入口就够了。
7.验证 PXE 网络安装
搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或 PC 裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修改BIOS 设置,将“Boot First”设为“NETWORK”或“LAN”,然后重启主机;若使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。
如果服务器配置正确,网络连接、 PXE 支持等都没有问题,则客户机重启后将自动配置 IP 地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0,并根据引导菜单配置提示用户指定启动入口,在提示字串“boot:”后直接按 Enter 键(或执行“auto”命令),将会进入默认的图形安装入口;若执行“linux text”命令,则进入文本安装入口;若执行“linux rescue”命令,则进入救援模式。
直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如下所示。若能够成功到达这一步,说明 PXE 网络安装基本成功。后续安装步骤与使用光盘的正常安装类似,这里不再叙述。
实现 Kickstart 无人值守安装
通过 PXE 技术远程安装 CentOS 7 系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。
在这里通过使用 Kickstart 工具配置安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。
Kickstart 工作原理
它的工作原理是在安装过程中记录需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,根据此文件的参数自动应答。ks.cfg文件涵盖了安装过程中可能出现的所有需要填写的参数从而实现无人值守自动安装。
- 创建应答文件,预先定义好各种安装设置
- 免去交互设置过程,从而实现全自动安装
- 通过添加%post脚本,完成安装后的各种配置操作
1.安装图形界面
yum -y groupinstall ‘GNOME Desktop’ #安装图形界面工具
systemctl set-default graphical.target #图形界面启动
2.准备安装应答文件
在 CentOS 7 系统中安装 system-config-kickstart 工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS 7 安装后自动创建的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。
yum -y install system-config-kickstart #安装kickstart
3.配置安装应答参数
通过桌面菜单“应用程序”→“系统工具”→“Kickstart”即可打开“Kickstart 配置程序”窗口。在“Kickstart 配置程序”窗口中,可以针对基本配置、安装方法、引导装载程序选项、分区信息、网络配置等各种安装设置进行指定。
3.1基本配置
基本配置:
默认语言:Chinese (P.R. of China)—中文(简体)
键盘:U.S English
时区:Asia/Shanghai
Root密码:Abc123
默认密码:Abc123
勾选√:给root密码加密
高级配置:
目标架构:X86、AMD64、活IntelEm64T
勾选√:安装后重启
不勾选:在文本模式中执行安装(默认为图形化模式)
3.2安装方法
安装方法:
勾选√:执行全新安装
安装方法:
勾选√:FTP
FTP服务器:ftp://20.0.0.21
FTP目录:centos7
3.3引导装载程序选项
安装类型:
勾选√:安装新引导装载程序
3.4分区信息
在“分区信息”界面中,需规划硬盘分区方案。
3.5网络配置及防火墙配置
3.6安装脚本后
勾选√:使用解释程序:/bin/bash
3.7保存自动应答文件
选择“Kickstart 配置程序”窗口的“文件”→“保存”命令,指定目标文件夹、文件名,将配置好的应答参数保存为文本文件,如/root/ks.cfg。以后若要修改此应答配置,可以在“Kickstart 配置程序”窗口中打开进行调整,或者直接用 VI 等文本编辑工具进行修改
vim /home/roo/ks.cfg
末尾添加
%post --interpreter=/bin/bash
rm -rf /etc/yum.repos.d/*
echo -e ‘[base]\nname=CentOS7.6\nbaseurl=ftp://20.0.0.21/centos7\nenabled=1\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7’>/etc/yum.repos.d/centos7.repo
%end
%packages
@^minimal
%end
4.实现批量自动装机
4.1启用自动应答文件
有了自动安装的应答文件之后,只要将其放置 PXE 安装服务器的 FTP 目录下,并适当修
改引导菜单,就可以实现基于网络的批量自动装机了。
cp /home/roo/ks.cfg /var/ftp/ks.cfg #将ks.cfg 文件复制到 /var/ftp/下
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.154.20/centos7 ks=ftp://192.168.154.20/ks.cfg
4.2验证无人值守安装
启用自动应答安装之后,当客户机每次以 PXE 方式引导时,将自动下载 ks.cfg 应答配置文件,然后根据其中的设置安装 CentOS 7 系统,而无须手工干预,如下所示,这样就可以同时为多台客户机安装系统了。
注意:要按F2健进入BIOS查看启动顺序,把Network启动放到最下面,不要放到最上面,不然就会重装系统。
CD-ROM代表光驱启动,Removable代表U盘启动,Hard代表硬盘启动,Network代表网卡启动。