linux中“PXE高效批量装机”

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

PXE                                                              按下电源

1:iso系统镜像                                               开机自检

2:FTP                           读取BIOS中谁是引导设备(光驱,硬盘,U盘,网卡) 

3:DHCP(rarp协议)                                加载引导程序

4:TFTP(简单文件传输协议)          加载初始化镜像

内核文件,初始化镜像文件。                 加载内核

引导程序,引导配置文件。           systemd(init)(守护进程)

                                                             进程树(tree)

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

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

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

自动化:安装系统,配置多种服务;

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

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

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

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

服务器通过TFTP(trivial file transfer protocol,简单文件传输协议)提供引导镜像文件的下载。客户端还没有IP地址,用rarp协议(反向地址解析),以mac地址作为依据向DHCP服务器分一个IP地址。

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

搭建PXE远程安装服务器

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

1,准备centos7安装源

centos7的网络安装源一般通过HTTP,FTP协议发布,另外也支持NFS(network file system,网络文件系统)协议。

例如,若采用FTP协议发布安装源,可以在服务器上部署一个YUM软件仓库。

2,安装并启用TFTP服务

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

3,准备LINUX内核,初始化镜像文件。

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

4,准备PXE引导程序

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

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

6,配置启动菜单文件

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

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

验证PXE网络安装

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

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

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

直接按neter键确认后将自动通过网络下载安装文件,并进入图形化安装程序界面,如图6,2所示。若能够成功到达这一步,说明PXE网络安装基本成功。

实现kickstart无人值守安装

上一节介绍了通过PXE技术远程安装centos7系统的方法,安装介质不在受限于光盘,移动硬盘等设置,大大提高了系统安装的灵活性,然而,安装期间仍需要手动选择语言,键盘类型,指定安装源等一系列交互操作,当需要批量安装时非常不方便。

本届将进一步学习如何实现无人值守自动安装,通过使用kickstart工具配置安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。

准备安装应答文件:

在centos7系统中安装system-config-kickstart工具之后,即可通过图形化向导工具来配置安装应答文件。

如果用户对自动应答文件的配置比较熟悉,也可以直接编辑centos7安装后自动创建的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。

1,配置安装应答参数

通过桌面菜单“应用程序》系统工具》kickstart”即可打开“kickstart配置程序”窗口。

在“kickstart配置程序”窗口中,可以针对基本配置,安装方法,引导装载程序选项,分区信息,网络配置等各种安装设置进行指定,如图所示。

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

“基本配置”可参考图6,3来指定。例如,将默认语言设定为“中文(简体)”,时区设为“Asia/shanghai”,根口令设为“pwd123”,高级配置中勾选“安装后重启”。

在“安装方法”界面中,应正确指定centos7的安装放大,如图6,4所示。若有用户验证信息也需一并指定。在“引导装载程序选项”界面中,选择安装新引导装载程序。

(2)分区信息

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

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

在“网络配置”界面中,添加一个网络设备“ens33”,将网络类型设为“DHCP”。

在“防火墙配置”界面中,可以选择禁用SElinux,禁用防火墙。

(4)软件包选择

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

(5)安装脚本

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

(6)其他信息

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

2,保存自动应答文件 保存到/var/ftp中

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

实现批量自动装机

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

1,启用自动应答文件

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

2,验证无人值守安装

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

客户机安装完成以后,检查其YUM软件仓库配置,可以发现已经按照“安装后脚本”的设置自动建立了/etc/yum.repos,d/centos7.repo文件。

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

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

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

相关文章

数学建模----单源最短路径模型建立和求解

目录 1.引言和声明 2.单源最短路径 3.建立模型 4.代码求解 1.引言和声明 (1)最近又在准备学习matlab,有了一些新的理解和体会,记录一下; (2)这个首先要声明两个符号,这两个符号也是今天才知…

网络安全筑基篇——CSRF、SSRF

前言 本篇文章相对于来说比较水,大家看不懂的话,多去百度,去了解相关的知识 大家一定要多去理解这个原理,理解的同时去打打靶场,就能很快上手啦 什么是CSRF? CSRF(即跨站请求伪造)是指利用受…

conda下安装32位版本python

前言:当前主流的系统为64bit系统,conda软件为64bit软件,因此使用conda创建虚拟环境安装python时默认安装的python为64bit版本,但部分研发场景需要调用32bit依赖,只能使用32bit的python,因此需要安装32bit的…

在 Ubuntu 下使用 rabbitmq-c 库进行 RabbitMQ 消息收发的完整示例代码如下

在 Ubuntu 下使用 rabbitmq-c 库进行 RabbitMQ 消息收发的完整示例代码如下。这个示例将包括声明队列、绑定路由键、发送消息、消费消息等步骤,并且会包含错误处理。 安装 rabbitmq-c 库 首先确保已经安装了 rabbitmq-c 库。可以通过以下命令在 Ubuntu 上安装: sudo apt-get …

git创建子模块

有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。 Git …

【因果推断python】44_评估因果模型2

目录 累积弹性曲线 累积增益曲线 考虑差异 关键思想 累积弹性曲线 再次考虑将价格转换为二元处理的说明性示例。我们会从我们离开的地方拿走它,所以我们有弹性处理带。我们接下来可以做的是根据乐队的敏感程度对乐队进行排序。也就是说,我们把最敏感…

spring中@Conditional

多环境切换 java配置使用profile Profile设置在某个环境下,spring注入对应的bean public class JavaConfig {BeanProfile("dev")DataSource devDs(){DataSource ds new DataSource();ds.setUrl("dev");ds.setUsername("dev");ret…

2024年了,C++还值得学吗?6个C++的就业方向打消你的疑虑

C语言是一种广泛应用于计算机编程的高级编程语言,自从其首次问世以来,就在软件开发领域取得了广泛的应用和成功。作为一种强大的编程语言,C语言不断发展和改进,也在不断地适应新的技术和需求。在未来几年,C语言将继续保…

计算机视觉全系列实战教程:(十一)边缘检测(差分、Roberts、Sobel、Prewitt、LoG、基于形态学的边缘检测等)

1.边缘检测概述 (1)What 边缘检测:找到有差异的相邻像素锐度:边缘的对比度图像锐化:增加边缘的对比度边缘点:图像中灰度显著变化的点边缘段:边缘点坐标及方向的总和,边缘的方向可以是梯度角轮廓&#xff…

手把手!从头构建LLaMA3大模型(Python)

1. 前期准备 让我们先来想一想大概需要做什么。 首先是模型架构的选择。原工作用的是 GPT Neo 架构(可以看他们的 config),这个算是很老的模型了,最初是 EleutherAI 用来复现追踪 GPT-3 的工作的,现在用的也比较少了…

洛谷 P1726:上白泽慧音 ← Tarjan算法

【题目来源】https://www.luogu.com.cn/problem/P1726【题目描述】 在幻想乡,上白泽慧音是以知识渊博闻名的老师。春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄。因此慧音决定换一个能够聚集最多人数的村庄作为新…

鸿蒙开发组件:【创建DataAbility】

创建DataAbility 实现DataAbility中Insert、Query、Update、Delete接口的业务内容。保证能够满足数据库存储业务的基本需求。BatchInsert与ExecuteBatch接口已经在系统中实现遍历逻辑,依赖Insert、Query、Update、Delete接口逻辑,来实现数据的批量处理。…

redis复习

redis知识点 redis持久化redis 订阅发布模式redis主从复制哨兵模式redis雪崩,穿透缓存击穿(请求太多,缓存过期)缓存雪崩 redis持久化 redis是内存数据库,持久化有两种方式,一种是RDB(redis dat…

【计算机网络】[第4章 网络层][自用]

1 概述 (1)因特网使用的TCP/IP协议体系(四层)的网际层,提供的是无连接、不可靠的数据报服务; (2)ATM、帧中继、X.25的OSI体系(七层)中的网络层,提供的是面向连接的、可靠的虚电路服务。 (3)路由选择分两种: 一种是由用户or管理员人工进行配置(只适用于规…

图解Linux内核(基于6.x):解读Linux内存反向映射之匿名映射

文章目录 📑前言一、匿名映射的mapping二、推荐阅读2.1 一图速览2.2 内容简介 📑前言 内存映射中,我们经常讨论的是由虚拟内存定位物理内存(也就是folio或者page),实际上在很多场景中(比如内存回…

linux写代码环境和工具

基础指令 目录 前言 二、yum工具的使用 1.yum是什么? 2.查看软件包 3.配置sudo 4.如何卸载软件 三、vim的使用 1. vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4.简单vim配置 四、Linux编译器-gcc/g使用 1、格式 2、gcc选项 3.gcc/g工作和…

浅谈Java23种设计模式之11种行为型模式的使用场景(第三部分)

前言 行为型设计模式实际使用场景第三部分; 1.状态模式(State) 概念: 它允许对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。这种模式主要用于当一个对象的行为依赖于它的状态(对象的状态改变,行…

专业技能篇--算法

文章目录 前言经典算法思想总结一、贪心算法二、动态规划三、回溯算法四、分治算法 前言 这篇简单理解一些常见的算法。如果面试的时候问到相关的算法,能够应付一二。 经典算法思想总结 一、贪心算法 思想:贪心算法是一种在每一步选择中都采取在当前状…

Python——Gradio

什么是 Gradio? Gradio 是一个开源的 Python 库,用于创建用户友好的、交互式的网页界面。这个界面可以用来展示和测试机器学习模型,或者任何需要用户输入的 Python 应用程序。Gradio 的目标是让开发者快速地将他们的机器学习模型部署为可供他…

Vue CLI,Vue Router,Vuex

前言 Vue CLI、Vue Router 和 Vuex 都是 Vue.js 生态系统中的重要组成部分,它们在构建 Vue 应用程序时扮演着关键角色。 Vue CLI Vue CLI 介绍 Vue CLI 是 Vue.js 的官方命令行工具,用于快速搭建 Vue.js 项目。它提供了一个图形界面(通过…