Linux PXE高效批量装机

部署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 内核、启动菜单等数据,以及提供安装文件。

准备centos7安装源

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

安装并启用TFTP服务

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

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

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

准备PXE引导程序

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

安装并启用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 引导程序的文件名。

配置启动菜单文件

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

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

验证pxe网络安装

搭建好 PXE远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或 PC裸机,一般不需要额外设置:若要为已有系统的主机重装系统,则可能需要修改 BIOS 设置,将“Boot First"设为“NETWORK"或"LAN”,然后重启主机;若使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。如果服务器配置正确,网络连接、PXE支持等都没有问题,则客户机重启后将自动配置 IP 地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0,并根据引导菜单配置提示用户指定启动入口,如图 6.1所示。

在提示字串“boot:"后直接按 Enter 键(或执行“auto"命令),将会进入默认的图形安装入口:若执行“linux text”命令,则进入文本安装入口;若执行“linuxrescue”命令,则进入救援模式。
直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如图6.2所示。若能够成功到达这一步,说明PXE网络安装基本成功。后续安装步骤与使用光盘的正常安装类似,这里不再叙述。

实现Kickstart无人值守安装

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

配置安装应答参数

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

基本配置及安装方法

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

分区信息

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

网络配置及防火墙配置

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

软件包选择

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

保存自动应答文件

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

实现批量自动装机

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

启用自动应答文件

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

验证无人值守安装

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文本编辑命令和正则表达式

一、 编辑文本的命令 正则表达式匹配的是文本内容,Linux的文本三剑客,都是针对文本内容。 文本三剑客 grep:过滤文本内容 sed:针对文本内容进行增删改查 (本文不相关) awk:按行取列 &#…

电子电气架构——由NRC优先级引起的反思

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

一文详解去噪扩散概率模型(DDPM)

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

Django之云存储(二)

一、Django使用云存储 建立项目 django-admin startproject project_demo创建子应用 python manage.py startapp app_name修改配置文件,设置模板视图路径 settings.py TEMPLATES = [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR,…

如何在 MySQL 中导入和导出数据库以及重置 root 密码

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 如何导入和导出数据库 导出 要导出数据库,打开终端,确保你没有登录到 MySQL 中,然后输入以下命令&…

sd StableDiffusion库学习笔记

目录 torchmetrics准确率计算 ConsistencyDecoder DeepSpeed realesrgan BasicSR超分辨率,去噪,去模糊,去 JPEG 压缩噪声 segment_anything mmengine controlnet_aux accelerate transfersformer pytorch_fid einops compel tra…

Ike-scan一键发现通过互联网的IPsec VPN服务器(KALI工具系列二十八)

目录 1、KALI LINUX 简介 2、Ike-scan工具简介 3、信息收集 3.1 目标主机IP(服务器) 3.2 KALI的IP 4、操作示例 4.1 简单扫描 4.2 范围扫描 4.3 扫描多个目标 4.4 输出扫描结果 4.5 特殊扫描 5、总结 1、KALI LINUX 简介 Kali Linux 是一个功…

基于Vue-cli脚手架搭建项目使用ElementUI组件

项目结构 node_modules 项目依赖的外部组件文件放在此处,例如vue public index.html是对外提供的唯一的html文件 src assets 存放静态文件 例如图片 css js等文件 components 里面存放的是组件 App.vue是组件 main.js是项目配置文件 package.json存放的是项目依赖的…

IEEE RAL 具有高运动性能的仿旗鱼机器人协同运动机制研究

水下机器人作为军用侦察、监测及攻击装置备受关注,目前传统水下机器人普遍采用螺旋桨作为推进器,但高噪音、高能耗等问题限制了应用范围。鱼类通过自然选择进化出优异的运动性能,特别是在海洋中游动速度快、机动性强的旗鱼。为了探究快速和高…

redis持久化操作【随记】

持久化 Redis它是将数据保存到内存当中,内存里的数据最大特点: 断电易失.保存在内存的数据就没有了.如果如果这些数据还有用,业务使用啥的,不能就让它这么没有了. redis当中提供持久化机制, 说白了,将内存的数据 —-> 写入到磁盘. –> 持久化. 1 rdb方式 redis database,…

车载测试系列:CAN协议之远程帧

远程帧(也叫遥控帧):是接收单元向发送单元请求发送具有标识符的数据所用的帧,由 6 个段组成,没有数据段。 当某个节点需要数据时,可以发送远程帧请求另一节点发送相应数据帧。 简单的说:发起方…

示例:推荐一个基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器

一、目的:基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器,感兴趣的可以去下方链接地址查看开源控件库地址。本控件封装的目的在于将第三方库的皮肤和样式封装到皮肤库中可统一设置样式&#xff0c…

【Python Cookbook】S03E01 对数值进行取整 int() round() math.ceil() math.floor() 函数

目录 问题解决方案int 函数round 函数math.floor() 函数math.ceil() 函数 讨论(1)参数 ndigits 可以为负数(2)不要与格式化混为一谈(3)精度上有需求请选择 decimal 在 Python 中对整数和浮点数进行数学计算…

hdfs java客户端使用,文件上传下载,预览的实现

1. 环境部署 1.1 Linux hadoop集群搭建 Hadoop大数据集群搭建(超详细)_hadoop集群搭建-CSDN博客 1.2 windows hadoop util 安装 Hadoop——Windows系统下Hadoop单机环境搭建_hadoop windows开发环境搭建-CSDN博客 1.3 温馨提示,如果要使用ja…

QT中QSettings的使用系列之三:QSettings操作注册表

1、核心代码 #include "widget.h" #include "ui_widget.h" #include <QSettings> #include <QDebug>Widget::Widget

轮廓系数【python,机器学习,算法】

用途 使用轮廓系数评估聚类质量。聚类质量的评价方法&#xff0c;本质上&#xff0c;都是根据簇内和簇间的效果对比进行衡量。 定义 假设样本集合为 S a 1 , a 2 , a 3 , . . . , a n S{a_1,a_2,a_3,...,a_n} Sa1​,a2​,a3​,...,an​&#xff0c;该样划分成 4 个聚类 G 1…

[数据概念]一分钟弄懂数据治理

“ 数据治理是数据资产化的起点。” 数据资产化的趋势正愈演愈烈。然而&#xff0c;我们必须清醒地认识到&#xff0c;资产化的前提条件是拥有实际的数据资产。那么&#xff0c;这些宝贵的数据资产究竟源自何处呢&#xff1f;答案显而易见&#xff0c;它们源自企业日常运营中积…

任务5.2 掌握DStream基础操作

实战&#xff1a;DStream基础操作 了解DStream编程模型&#xff1a;DStream是Spark Streaming中对实时数据流的抽象&#xff0c;可以看作一系列持续的RDD。DStream可以通过外部数据源获取或通过现有DStream的高级操作获得。 操作本质&#xff1a;DStream上的操作最终会转化为对…

kettle从入门到精通 第七十三课 ETL之kettle kettle调用http分页接口教程

场景&#xff1a;kettle调用http接口获取数据&#xff08;由于数据量比较大&#xff0c;鉴于网络和性能考虑&#xff0c;所以接口是个分页接口&#xff09;。 方案&#xff1a;构造页码list&#xff0c;然后循环调用接口。 1、总体设计 1&#xff09;、初始化分页参数pageNum1…

[MYSQL] 数据库基础

1.什么是数据库 从数据库的名字可以看出,它是用来操作(增删查改....)数据的,事实上也的确如此,通过数据库,我们可以更方便.更高效的来操作.管理数据 以文件形式存储数据的缺点 文件的安全问题文件不利于数据的查询和删除文件不利于存储海量数据操作文件并不方便 为了解决上述问…