批量网络装机

news2025/2/25 13:57:48

1. PXE概念

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。在启动过程中,BIOS把PXEClient调入内存中执行,然后由PXEClient向DHCP服务器请求分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

  • 服务端 运行DHCP服务,用来分配地址、定位引导程序运行TFTP服务器,提供引导程序下载
  • 客户端            【网卡支持PXE协议】                              【主板支持网络启动】

1.2 为何要部署 PXE 远程安装服务

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

若要搭建 PXE 网络体系,必须满足以下几个前提条件。

  1. 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
  2. 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
  3. 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。

其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。

1.2.1 部署优点

  • 规模化:同时装配多台服务器;
  • 自动化:安装系统、配置各种服务;
  • 远程实现:不需要光盘、 U 盘等安装介质

2. 搭建PXE远程安装服务器实例

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

2.1 准备工作:

  • 一台Linux系统搭建服务
  • 一台Linux系统做PXE测试

2.2.1 安装并启用 TFTP 服务

mount  /dev/sr0 /mnt

yum -y install tftp-server xinetd

vim /etc/xinetd.d/tftp   #修改TFTP服务的配置文件

设置开机自启tftp、xinetd服务

systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd

2.2.2安装并启用 DHCP 服务 

yum -y install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

 vim /etc/dhcp/dhcpd.conf   #修改DHCP服务的配置文件

设置dhcpd开机自启

systemctl start dhcpd
systemctl enable dhcpd

 

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

mount /dev/sr0 /mnt
cd /mnt/images/pxeboot                        
cp vmlinuz /var/lib/tftpboot/                #复制 Linux系统的内核文件 到TFTP根目录下
cp initrd.img /var/lib/tftpboot/             #复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下 

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

yum -y install syslinux                                    #PXE引导程序由软件包 syslinux 提供
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/    #复制 PXE引导程序 到TFTP根目录下

2.2.5安装FTP服务,准备CentOS 7 安装源 

yum -y install vsftpd
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/

 2.2.6配置启动菜单文件

默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
mkdir /var/lib/tftpboot/pxelinux.cfg          

vim /var/lib/tftpboot/pxelinux.cfg/default  

半自动化配置 
default auto                             #指定默认入口名称
prompt 1                                 #设置是否等待用户选择,“1”表示等待用户控制

label auto                                #图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz                            #kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.80.100/centos7

label linux text                        #文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.100/centos7

label linux rescue                        #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.100/centos7

自动化配置

default auto
prompt 0

label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg

label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg


label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.100/centos7   ks=ftp://192.168.80.100/ks.cfg
 

2.2.7关闭防火墙

systemctl stop firewalld.service 
setenforce 0

2.2.8验证 PXE 网络安装

搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或 PC 裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修改BIOS 设置,将“Boot First”设为“NETWORK”或“LAN”,然后重启主机;若使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。
如果服务器配置正确,网络连接、 PXE 支持等都没有问题,则客户机重启后将自动配置 IP 地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0,并根据引导菜单配置提示用户指定启动入口,在提示字串“boot:”后直接按 Enter 键(或执行“auto”命令),将会进入默认的图形安装入口;若执行“linux text”命令,则进入文本安装入口;若执行“linux rescue”命令,则进入救援模式。
直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如下所示。若能够成功到达这一步,说明 PXE 网络安装基本成功。后续安装步骤与使用光盘的正常安装类似,这里不再叙述。

3实现 Kickstart 无人值守安装

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

3.1Kickstart 工作原理

它的工作原理是在安装过程中记录需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,根据此文件的参数自动应答。ks.cfg文件涵盖了安装过程中可能出现的所有需要填写的参数从而实现无人值守自动安装。

  • 创建应答文件,预先定义好各种安装设置
  • 免去交互设置过程,从而实现全自动安装
  • 通过添加%post脚本,完成安装后的各种配置操作

3.2准备安装应答文件

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

3.3配置安装应答参数

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

3.4基本配置:

默认语言:Chinese (P.R. of China)—中文(简体)
键盘:U.S English
时区:Asia/Shanghai
Root密码:Abc123
默认密码:Abc123
勾选√:给root密码加密
高级配置:
目标架构:X86、AMD64、或Intel Em64T
勾选√:安装后重启
不勾选:在文本模式中执行安装(默认为图形化模式)

3.5安装方法

安装方法:
勾选√:执行全新安装

安装方法:
勾选√:FTP
FTP服务器:ftp://20.0.0.21
FTP目录:centos7

3.6引导装载程序选项

安装类型:
勾选√:安装新引导装载程序

3.7分区信息

清除主引导记录

在“分区信息”界面中,需规划硬盘分区方案。

3.8网络配置及防火墙配置

3.9安装脚本后

勾选√:使用解释程序:/bin/bash

输入shell脚本

mkdir /etc/yum.repos.d/repo.bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak
echo '[local]
name=local
baseurl=ftp://192.168.80.100/centos7
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo

3.10保存自动应答文件

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

vim /home/roo/ks.cfg

%post --interpreter=/bin/bash
mkdir /etc/yum.repos.d/repo.bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak
echo '[local]
name=local
baseurl=ftp://192.168.80.100/centos7
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo
%end 

%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end

4.实现批量自动装机

4.1启用自动应答文件

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

cp /root/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.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg

label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg


label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.100/centos7   ks=ftp://192.168.80.100/ks.cfg

4.2验证无人值守安装

启用自动应答安装之后,当客户机每次以 PXE 方式引导时,将自动下载 ks.cfg 应答配置文件,然后根据其中的设置安装 CentOS 7 系统,而无须手工干预,如下所示,这样就可以同时为多台客户机安装系统了。

实现自动化安装按F2健进入BIOS查看启动顺序,把Network启动放到最上面。

CD-ROM代表光驱启动,Removable代表U盘启动,Hard代表硬盘启动,Network代表网卡启动。

注意:自动化安装完毕后要按F2健进入BIOS查看启动顺序,把Network启动放到最下面,不要放到最上面,不然就会重装系统。

开机可以直接安装服务,不需要创建yum源

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

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

相关文章

【智能算法】雪消融优化算法(SAO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年,L Deng受到雪升华和融化行为启发,提出了雪消融优化算法(Snow Ablation Optimizer, SAO)。 2.算法原理 2.1算法思想 SAO模拟了雪的…

微信云小程序快速上手云数据库+云函数+云存储的操作

🚀 作者 :“二当家-小D” 🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k…

JSP技术讲解

目录 1、JSP简介 2、JSP体验 3、JSP运行原理 4、JSP基本语法 5、JSP指令 6、JSP内置九大对象 7、JSP标签 8、JSP配置 9、JSP排错 10、总结 在前面的Servlet学习中发现Servlet本质是一个java程序,因此Servlet更加擅长编写程序的业务逻辑,而如果要…

Java特性之设计模式【代理模式】

一、代理模式 概述 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口 主要解决: 在直接访问…

Apple强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片潜力

Apple 的最新强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片的潜力 概述 Apple 推出配备强大 M4 芯片的最新 iPad Pro 和 iPad Air 型号,再次突破创新界限。新一代 iPad 有望彻底改变我们的工作、创造和娱乐方式。凭借无与伦比的处理能力、令人惊…

CTF-reverse,逆向分析,对“左移4或右移4,即(x<<4) | (x >>4)的加密探讨

博主在刷题过程中遇上这样一个有意思的加密(如下图),苦苦思索其逆向运算,被硬控了很久,也没搜到什么资料来解释这个问题(也许是太简单??蒟蒻博主怀疑人生……) 经过博主不…

【MATLAB源码-第205期】基于matlab的LDPC译码算法仿真,对比BF算法,最小和算法,对数BP和概率BP四种算法。

操作环境: MATLAB 2022a 1、算法描述 LDPC 码简介 LDPC码是一种通过稀疏奇偶校验矩阵定义的线性分组码,1962年由Gallager首次提出。这种码具有高效的解码性能,尤其在接近香农极限的情况下,其性能表现尤为突出。LDPC码的核心特…

Logstash分析MySQL慢查询日志实践

删除匹配到的行,当前行信息不记录到message中

VMware Workstation 虚拟机学习 安装centos7.9

1打开VMware Workstation--文件--新建虚拟机 #选择对应的,本例选择最新的 2开始安装centos #网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITy…

Linux:进程通信(二)信号的保存

目录 一、信号的处理是否是立即处理的? 二、信号如何保存 1、阻塞、未决、递达 2、信号集 3、信号集操作函数 4、sigprocmask函数 5、sigpending 函数 上篇文章我们讲解了信号的产生:Linux:进程信号(一)信号的产…

【C语言】字符函数和字符串函数--超详解

前言: 在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,接下来我们就学习⼀下这些函数。 1. 字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#…

实战BACnet/IP标准通信网关在楼宇自动化中的应用

智慧楼宇建设实现不同设备间的互联互通是一项巨大挑战,尤其是在那些历史悠久的建筑中,新旧系统并存的情况尤为普遍。某大型商业综合体就面临着这样的困境:老旧的暖通空调系统采用Modbus RTU协议,而新部署的能源管理系统却要求BACn…

一文搞懂MySQL索引的数据结构

一、引言 在数据库管理系统中,索引是提高查询性能的关键所在。对于MySQL这类关系型数据库来说,索引更是其优化查询不可或缺的一部分。索引能够大大加快数据的检索速度,减少数据库的I/O操作,提高数据库的整体性能。本文将从索引的…

第2章.STM32开发C语言常用知识点

目录 0. 《STM32单片机自学教程》专栏总纲 2.1. STM32嵌入式开发C语言编程的不同 2.2. C语言常用知识点 2.2.1 位操作 2.2.2 define 宏定义 2.2.3 条件编译 2.2.3.1 #ifdef 2.2.3.2 #ifndef 2.2.3.3 #if !defined 2.2.4 extern 变量声明 2.2.5 typedef 类型别名 …

PPP点对点协议

概述 Point-to-Point Protocol,点到点协议,工作于数据链路层,在链路层上传输网络层协议前验证链路的对端,主要用于在全双工的同异步链路上进行点到点的数据传输。 PPP主要是用来通过拨号或专线方式在两个网络节点之间建立连接、…

Mysql:Before start of result set

解决方法:使用resultSet.getString()之前一定要调用resultSet.next() ResultSet resultSet statement1.executeQuery();while (resultSet.next()){String username1 resultSet.getString("username");int id1 resultSet.getInt…

识货小程序逆向

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872,x30184483x…

java io模型

目录 BIO 模型模型一:单线程服务器模型二:多线程服务器 NIO 模型模型一:遍历轮训 select/poll模型二:基于事件响应机制的 epoll BIO BIO 模型 模型一:单线程服务器 执行过程:阻塞等待 connection&#xff…

JS-拖拽元素放大缩小

效果左右布局&#xff0c;拖拽后&#xff0c;宽度放大缩小 其实自己写也可以&#xff0c;不过还是发现了两个好用的js库&#xff0c;既然不需要自己写&#xff0c;当然是能偷懒就偷懒 1、resizerjs 官网地址&#xff1a;https://github.com/eknowles/resizerjs <!doctype …

SPSS多元线性回归

&#xff08;要满足&#xff09;模型的假设条件需要对数据进行怎样处理&#xff1f;&#xff1f; 为了使数据满足多元线性回归的条件&#xff0c;通常需要进行以下预处理步骤&#xff1a; 1. 数据清洗&#xff1a;处理缺失值、异常值和重复值&#xff0c;确保数据质量。 2. 特…