PXE 高效批量网络装机

PXE 高效批量网络装机

    • [部署 PXE 远程安装服务](#部署 PXE 远程安装服务)
      • [搭建 PXE 远程安装服务器](#搭建 PXE 远程安装服务器)
      • [验证 PXE 网络安装](#验证 PXE 网络安装)
    • [实现 Kickstart 无人值守安装](#实现 Kickstart 无人值守安装)

部署 PXE 远程安装服务

在大规模的 Linux 应用环境中,如 Web 群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的 USB光驱、移动硬盘等安装方法显然已经难以满足需求。

本章将学习基于 PXE(Preboot eXecution Environment,预启动执行环境)技术的网络装机方法,并结合 Kickstart 配置实现无人值守自动安装。

上述服务器的批量部署方法,具备以下三个优点:

》规模化:同时装配多台服务器;

》自动化:安装系统、配置各种服务;

》远程实现:不需要光盘、U 盘等安装介质。

PXE 是由 Intel 公司开发的网络引导技术,工作在 ClientServer 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建 PXE 网络体系,必须满足以下几个前提条件。

》客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。

》网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。

》服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。

其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。下面将介绍 PXE 远程安装服务的基本部署过程。

搭建 PXE 远程安装服务器

本例的 PXE 远程安装服务器集成了 CentOS7安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。

  1. 准备 Centos7安装源

CentOS7的网络安装源一般通过 HTTP、FTP 协议发布,另外也支持 NFS(Network File System,网络文件系统)协议,关于 NFS的配置请参阅其他资料,这里不再赘述。例如,若采用 FTP 协议发布安装源,可以在服务器上部署一个 YUM 软件仓库。

  1. 安装并启用 TFTP 服务

TFTP 服务由 tftp-server 软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只要将"disable =yes"改为"disable = no",然后启动 TFTP 服务即可。

  1. 准备 Linux内核、初始化镜像文件

用于 PXE 网络安装的 Linux 内核、初始化镜像文件可以从 CentOS7 系统光盘获得,分别为 vmlinuz 和 initrd.img,位于文件夹images/pxeboot下。找到这两个文件并将其复制到 tftp 服务的根目录下。

  1. 准备 PXE 引导程序

用于 PXE 网络安装的引导程序为 pxelinux.0,由软件包 syslinux 提供。安装好软件包syslinux,然后将文件 pxelinux.0 也复制到 tftp 服务的根目录下。

  1. 安装并启用 DHCP 服务

由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。如PXE服务器的IP 地址为 192.168.4.254,DHCP 地址池为 192.168.4.100~192.168.4.200,则可以参考以下操作来搭建 DHCP 服务器。

从上述过程可以看到,与一般 DHCP 服务不同的是,配置文件中增加了 netx-server 和filename 这两行记录,分别用来指定 TFTP 服务器的地址和 PXE 引导程序的文件名。

  1. 配置启动菜单文件

启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tfp 根目录的 pxelinux.cfg 子目录下,典型的启动菜单配置可参考以下操作手动建立。

上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。其中,prompt用来设置是否等待用户选择:label用来定义并分隔启动项:kemel和append用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人值守安装时只需要一个入口就够了。

验证 PXE 网络安装

搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或 PC 裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修改 BIOS 设置,将"Boot First"设为"NETWORK"或"LAN",然后重启主机:若使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。

如果服务器配置正确,网络连接、PXE支持等都没有问题,则客户机重启后将自动配置 IP 地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0,并根据引导菜单配置提示用户指定启动入口,如图下所示。

在提示字串"boot:"后直接按 Enter 键(或执行"auto"命令),将会进入默认的图形安装入口:若执行"linux text"命令,则进入文本安装入口:若执行"inuxrescue"命令,则进入救援模式。

直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如图下所示。若能够成功到达这一步,说明PXE网络安装基本成功。后续安装步骤与使用光盘的正常安装类似,这里不再叙述。

实现 Kickstart 无人值守安装

上一节介绍了通过 PXE 技术远程安装 CentOS7系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。本节将进一步学习如何实现无人值守自动安装,通过使用 Kickstart 工具配置安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。

准备安装应答文件

在 CentOS7系统中安装 system-config-kickstart 工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS7 安装后自动创建的应答文件(/rootanaconda-ks.cfg),根据需要适当修订后使用。

  1. 配置安装应答参数

通过桌面菜单"应用程序"一"系统工具"一"Kickstart"即可打开"Kickstart 配置程序"窗口。在"Kickstart 配置程序"窗口中,可以针对基本配置、安装方法、引导装载程序选项、分区信息、网络配置等各种安装设置进行指定,如图下所示。

(1) 基本配置及安装方法

"基本配置"可参考上图指定。例如,将默认语言设为"中文(简体)",时区设为"Asia/Shanghai",根口令设为"pwd123",高级配置中勾选"安装后重启"。在"安装方法"界面中,应正确指定 CentOs7的安装方法,如图 6.4所示。若有用户验证信息也需一并指定。在"引导装载程序选项"界面中,选择安装新引导装载程序。

(2)分区信息

在"分区信息"界面中,需正确规划硬盘分区方案。例如,可划分一个500MB 的/boot分区、4GB 的/home 分区、2GB 的swap 分区,将剩余空间划分给根分区,如下所示。

(3)网络配置及防火墙配置

在"网络配置"界面中,添加一个网络设备"ens33",将网络类型设为"DHCP"在"防火墙配置"界面中,可以选择禁用 SELinux、禁用防火墙。

(4)软件包选择

CentOS7系统开始不再提供软件包的选择,如图66所示。如果需要安装软件包,可以根据需要将/rootanaconda-ks.cfg 的软件包安装脚本复制到 ks.cg 文件中,只需要复制%packages 到%end 部分即可,在%packages 到%end 之间,包含以@开头的软件包列表,将不需要的软件名删除,剩下的就是系统会自动安装的软件包。例如,仅保留以下内容即为采用最小化安装。

(5)安装脚本

在"预安装脚本"界面、"安装后脚本"界面中,可以分别添加在安装前、安装后自动运行的可执行语句。此项设置使服务器的自动化配置变得更加容易。例如,可以使客户机在完成安装后自动设置 YUM 软件仓库,如图 6.7所示。需要注意的是,应确保所编写的代码能够正确执行,以免安装失败。

(6)其他信息

若没有特殊需求,在"验证"界面、"显示配置"界面中,保持默认设置就可以了。

  1. 保存自动应答文件

选择"Kickstan 配置程序"窗口的"文件"一>"保存"命令,指定目标文件夹、文件名,将配置好的应答参数保存为文本文件,如/root/ks.cfg。以后若要修改此应答配置,可以在"Kickstart 配置程序"窗口中打开进行调整,或者直接用 V等文本编辑工具进行修改。

实现批量自动装机

有了自动安装的应答文件之后,只要将其放置 PXE 安装服务器的 FTP 日录下,并适当修改引导菜单,就可以实现基于网络的批量自动装机了:

  1. 启用自动应答文件

在 PXE 远程安装服务器中,将上一节建立的应答文件复制到/var/ftp/centos7 目录下,使客户机能够通过ftp://192.168.4.254/centos7/ks.cfg 访问;然后编辑引导菜单文件 defaut,添加 ks 引导参数以指定 ks.cfg 应答文件的 URL路径。

  1. 验证无人值守安装

启用自动应答安装之后,当客户机每次以 PXE方式引导时,将自动下载 ks.cfg 应答配置文件,然后根据其中的设置安装CentOS7系统,而无须手工干预,如下所示,这样就可以同时为多台客户机安装系统了。客户机安装完成以后,检查其 YUM 软件仓库配置,可以发现已经按照"安装后脚本"的设置自动建立了/etc/yum.repos.d/centos7.repo 文件。

注意:如果是在 VMware 虚拟机环境下,需要禁用 VMware 的 DHCP 功能;否则安装文件将无法加载。

相关推荐
menge23333 分钟前
VLAN:虚拟局域网
网络·智能路由器
ZachOn1y29 分钟前
计算机网络:计算机网络概述 —— 初识计算机网络
网络·计算机网络·知识点汇总·考研必备
三金121381 小时前
SpringIoC容器的初识
网络·网络协议·rpc
韩楚风1 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学1 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO1 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu71 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我1 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、1 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程1 小时前
Linux中环境变量
linux