云计算【第一阶段(31)】PXE高效批量网络装机

一、系统安装

1.1、系统装机的三种引导方式

1. 硬盘
2. 光驱( u 盘)
3. 网络启动 pxe

1.2、系统安装过程

  • 加载boot loader

Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

  • 加载启动安装菜单

在加载了Boot Loader之后,用户通常会看到一个启动安装菜单,允许用户选择不同的启动选项,如进入安装程序、进入安全模式等。这个菜单可能是由Boot Loader提供的,也可能是由安装程序的一部分预先准备的

  • 加载内核和initrd系统(文件才能使用文件)
  • 加载根系统() 运行anaconda的安装向导

根文件系统包含了操作系统运行所需的所有文件和目录。

某些Linux发行版的安装过程中,可能会使用到类似Anaconda的安装向导来配置系统环境。

1.3、Linux安装光盘的安装相关文件

在系统光盘的 isolinux 目录下有和安装相关的文件
  • boot.cat: 相当于grub的第一阶段
  • isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于 SYSLINUX项目
  • isolinux.cfg:启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找 isolinux.cfg文件
  • vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
  • memtest:内存检测程序
  • splash.png:光盘启动菜单界面的背景图
  • vmlinuz:是内核映像
  • initrd.imgramfs文件(精简版的linux系统,文件系统驱动等)

二、PXE 原理和概念

2.1、PXE简介

PXE(Preboot eXecution Environment,预启动执行环境)技术的网络装机方法。
PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式。

允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。pxe是通过网卡引导启动。

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

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

网卡支持,bios支持
网络中有一台DHCP服务器以便于为客户机自动分配IP地址、指定引导文件位置;
服务器通过TFTP(简单文件传输协议)提供引导镜像文件的下载。

PXE 严格来说并不是一种安装方式,而是一种引导的方式

进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。

协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。
运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将
要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。
此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

2.2、PXE优点

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

2.3、使用PXE需要的服务

  • dhcp:必须有dhcp服务分配ip,裸机无ip地址。网卡功能,自动获取ip地址,配置dhcp时告诉tftp服务器地址给裸机客户端。
  • TFTP:UDP协议,通过此协议将需要的文件下载到网卡,网卡自带功能。因为网卡不支持ftp。tFtp  69
  • FTP:装软件包时数据过大,tftp不能保证传输。
  • SYSLINUX-EXTLINUX.X86_64:小型的grub引导程序。
  • SYSTEM-CONFIG-KICKSTART:KICKSTART无人值守安装
     

2.4、实现过程

 1.PXE客户机(需要安装的机器)发出DHCP请求,向DHCP服务器申请IP地址。

 2.DHCP服务器响应PXE客户机的请求,

  a.自动从IP地址池中分配一个IP地址给PXE客户机,
  b.并且告知PXE客户机:TFTP服务器的IP地址

3.PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。

默认在TFTP共享目录/var/lib/tftpboot/下】

 4.TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。


 5.PXE客户机通过网络来启动到系统安装主界面。


 6.PXE客户机向文件共享服务器(ftp、http、nfs等)发起获取centos或windows系统安装文件的请求。
 7.文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。
 8.PXE客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作。

三、PXE批量部署

PXE服务器192.168.77.79
客户端未安装任何系统(裸机)

首先下载四个服务配置

yum install tftp-server vsftpd syslinux dhcp -y

网卡ens37

3.1、安装并启用 DHCP 服务

将配置文件模板复制到dhcp目录下

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

编辑

vim /etc/dhcp/dhcpd.conf

subnet 192.168.77.0 netmask 255.255.255.0 {
  range 192.168.77.100  192.168.77.200;
  option routers 192.168.77.2;
  next-server 192.168.77.79;
  filename "pxelinux.0";
}

systemctl start dhcpd

systemctl enable dhcpd

3.2、安装并启用 TFTP 服务

TFTP:(Trivial File Transfer Protocol)是一个小而易于实现的文件传送协议。TFTP是基于UDP数据报,需要有自己的差错改正措施。TFTP只支持文件传输,不支持交互,没有庞大的命令集。也没有目录列表功能,以及不能对用户进行身份鉴别。但它的代码所占内存较小,不需要硬盘就可以固化TFTP代码,很适合较小的计算机和特殊用途的设备。

1.需要xinetd配置

vim /etc/xinetd.d/tftp

tftp被xinet所托管,xinetd默认没有安装 配置文件,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器

yum install xinetd -y

2.需要pxelinux.0引导程序

syslinux 使用引导程序文件 放到tfpt的根目录下,系统引导

pxelinux.0是个二进制文件,主要作用相当于一个系统安装步骤的指引,引导客户端如何安装系统

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

注,只有安装了 system-config-kickstart 软件包,才会有/usr/share/syslinux/目录及目录中的文件

3.需要系统初始化文件和内核文件

切换到有镜像的文件(昨天拷贝的,要不就挂载)

mount /dev/cdrom /mnt

cd /mnt/images/pxeboot/

拷贝系统初始化文件 内核文件 ,因为要装机

cp initrd.img vmlinuz /var/lib/tftpboot/

systemctl start xinetd

systemctl enable xinetd

systemctl start tftp

systemctl enable tftp

4.创建启动菜单文件default

至于为什么要是/var/lib/tftpboot/pxelinux.cfg/default文件,因为是由pxelinux.0这个文件决定好的

先创建目录而非文件虽然是以.cfg结尾

创建mkdir /var/lib/tftpboot/pxelinux.cfg

cd /var/lib/tftpboot/pxelinux.cfg

vim default

内容(后面需要改,1变0默认无人值守安装)

default auto //指定默认入口名称 ,对应下面的label auto
prompt 1 //设置是否等待用户选择,1 表示等待用户控制,0表示不等待用户控制,安装时会出现boot:如果按回车表示选择auto模式


label auto   //默认的图形安装
      kernel vmlinuz 
      append initrd=initrd.img method=ftp://192.168.100.100/centos7    //method必须指定网络路径

label linux text    //文本安装模式,出现boot:时输入linux text
      kernel vmlinuz 
      append text initrd=initrd.img method=ftp://192.168.100.100/centos7 

label linux rescue    //救援模式,出现boot:时输入linux rescue
      kernel vmlinuz 
	  append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

3.3、安装ftp服务

准备 CentOS 7 安装源

yum -y install vsftpd

mount /dev/cdrom /mnt

mkdir /var/ftp/centos7

cp -rf /mnt/* /var/ftp/centos7 #将镜像复制其中

systemctl start vsftpd

最后

重新(记得关闭防火墙和增强)

systemctl start dhcpd

systemctl start tftp

systemctl start vsftpd

systemctl start xinetd

四、kickstart 无人值守安装

4.1、kickstart概念

KickStart 是一种无人职守安装方式。KickStart 的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件;在其后的安装过程中(不只局限于生成 KickStart 安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。
这样,如果 KickStart 文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安装。

4.2、部署过程

yum install system-config-kickstart -y

或者

或者

网卡

安装后脚本的运行,害怕没有网,用ftp

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

保存,自动生成ks.cfg(不要改名字)应答文件

检查

/var/ftp/ks.cfg文本内容

可选则性添加软件包

添加至最后

%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony

%end

配置解读表和内容

kickstart的生成应答文件ks.cfg主要包括三个部分:命令段,程序包段,脚本段

Kickstart部分

子项/命令

描述

命令段

keyboard

设定键盘类型

lang

设置系统语言

zerombr

清除MBR(主引导记录)

clearpart

清除所有分区或指定分区

part

创建新分区

rootpw

设置root用户的密码

timezone

设置系统时区

text

使用文本模式安装界面

network

配置网络接口

firewall

配置防火墙设置

selinux

启用/禁用SELinux

reboot

安装完成后自动重启

安装服务

dhcp, tftp-server, vsftp, syslinux

安装网络服务和引导加载器

修改配置文件

dhcp

设置next-server IP 和filename

tftp-server

修改/etc/xinetd.d/tftp配置,设置服务目录

开启服务

确保dhcp, tftp-server, vsftp等服务运行

user

安装后创建新用户

url

指定安装源(如网络仓库)

程序包段

%packages

开始程序包列表

@^environment group

安装环境包组

@group_name

安装特定包组

package

安装单个包

-package

不安装特定包

%end

结束程序包列表

脚本段

%pre

安装前的脚本,如网络配置

%post

安装后的脚本,如系统配置、用户设置等

# Install OS instead of upgrade
install                 //全新安装
# Keyboard layouts
keyboard 'us'  //英文键盘
# Root password
rootpw --iscrypted $1$9Rn8W7vF$npbKh8CeIbTxjwHUlcW4n0    //root密码
# Use network installation
url --url="ftp://192.168.100.100/centos7"  //网络安装路径
# System language
lang en_US       //系统语言,zh_CN表示中文
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text       //字符模式安装,graphical表示图形化安装
firstboot --disable
# SELinux configuration
selinux --disabled         //禁用selinux
# Firewall configuration
firewall --disabled        //禁用防火墙
# Network information
network  --bootproto=dhcp --device=ens33        //网卡配置
# Reboot after installation
reboot               //安装完重启
# System timezone
timezone Asia/Shanghai                  // 时区:上海
# System bootloader configuration
bootloader --location=mbr                //mbr引导 
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel                //清除所有分区信息和初始化分区标签
# Disk partitioning information
part / --fstype="xfs" --grow --size=1            //分区配置
part swap --fstype="swap" --size=2048
part /boot --fstype="xfs" --size=300


最小安装

%packages
@base                    //安装基础软件包
@^gnome-desktop-environment     //安装桌面环境
%end
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$d7Ivo70y$R6meNEYHLhc6/gb8OeLOd1
# System language
lang zh_CN
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Use NFS installation media
nfs --server=ftp://192.168.77.79 --dir=centos7
# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens33
# Halt after installation
halt
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="xfs" --grow --size=1

%post --interpreter=/bin/bash
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo "[local]
name=local
baseurl=ftp://192.168.77.79/centos7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo
%end
%packages
@base
@^gnome-desktop-environment
%end

重新修改引导菜单文件,添加 ks 引导参数

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

prompt 0 值为“0”时表示自动执行ks.cfg文件(无人值守,默认)、为“1”时表示手动配置(有人值守)

default auto
timeout=600
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.77.79/centos7  ks=ftp://192.168.77.79/ks.cfg

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

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

五、

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决mysql,Navicat for MySQL,IntelliJ IDEA之间中文乱码

使用软件版本 jdk-8u171-windows-x64 ideaIU-2021.1.3 mysql-essential-5.0.87-win32 navicat8_mysql_cs 这个问题我调试了好久,网上的方法基本上都试过了,终于是解决了。 三个地方结果都不一样。 方法一 首先大家可以尝试下面这种方法&#xff1a…

无人驾驶大热,新能源汽车智能化中的算网支持

来源新华社:百度“萝卜快跑”全无人驾驶汽车行驶在路上 当前,新能源汽车产业数智化已成为全球汽车产业数字化转型的焦点。一方面,随着人工智能、大数据、云计算等技术的深度融合,新能源汽车在自动驾驶、智能互联、能源管理等方面…

【自动驾驶汽车通讯协议】UART通信详解:理解串行数据传输的基石

文章目录 0. 前言1. 同步通讯与异步通讯1.1 同步通信1.2 异步通信 2. UART的数据格式3. 工作原理3.1 波特率和比特率3.2 UART的关键特性 4. UART在自动驾驶汽车中的典型应用4.1 UART特性4.2应用示例 5. 结语 0. 前言 按照国际惯例,首先声明:本文只是我自…

STM32MP135裸机编程:BOOT跳转到APP前关闭所有中断、清除所有中断挂起标志操作方法

0 前言 一般来说,MCU/SOC的BOOT在跳转到APP前都需要进行环境清理的操作,其中必须进行的一项操作便是关闭所有中断、清除所有中断挂起标志。本文介绍基于STM32MP135裸机编程下关闭所有中断、清除所有中断挂起标志的操作方法。 1 操作方法 STM32MP135裸…

关于Kafka Topic分区和Replication分配的策略

文章目录 1. Topic多分区2. 理想的策略3. 实际的策略4. 如何自定义策略 1. Topic多分区 如图,是一个多分区Topic在Kafka集群中可能得分配情况。 P0-RL代表分区0,Leader副本。 这个Topic是3分区2副本的配置。分区尽量均匀分在不同的Broker上&#xff0c…

怎么减少pdf的MB,怎么减少pdf的大小

在数字化时代,pdf文件因其格式稳定、跨平台兼容性强等特点而广受欢迎。然而,随着内容的丰富,pdf文件的大小也日益增大,给文件传输和存储带来了不少困扰。本文将为你介绍多种减小pdf文件大小的方法,帮助你轻松应对这一问…

【ChatGPT】深入解析Prompt提示词及如何高效使用ChatGPT

一、Prompt提示词是什么? 1.1 Prompt的定义 Prompt是人工智能领域中的一个关键概念,尤其在自然语言处理(NLP)和生成型AI模型中。简而言之,prompt是一段文本或指令,用于引导或启动AI模型的特定响应或操作。…

成为CMake砖家(2): macOS创建CMake本地文档的app

大家好,我是白鱼。 使用 CMake 的小伙伴, 有的是在 Windows 上, 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式, 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…

C1W1.LAB.Preprocessing+Word frequencies+Logistic_regression_model

理论课:C1W1.Sentiment Analysis with Logistic Regression 文章目录 预处理导入包Twitter dataset简介查看原始文本处理原始文本处理超链接、Twitter 标记和样式分词去除标点和停用词词干处理 process_tweet() 词频构建与可视化导入包加载数据集字典字典实例添加或…

什么是im即时通讯?WorkPlus im即时通讯私有化部署安全可控

IM即时通讯是Instant Messaging的缩写,指的是一种实时的、即时的电子信息交流方式,也被称为即时通讯。它通过互联网和移动通信网络,使用户能够及时交换文本消息、语音通话、视频通话、文件共享等信息。而WorkPlus im即时通讯私有化部署则提供…

PostgreSQL日志文件配置,记录所有操作记录

为了更详细的记录PostgreSQL 的运行日志,我们一般需要修改PostgreSQL 默认的配置文件,这里整理了一些常用的配置 修改配置文件 打开 PostgreSQL 配置文件 postgresql.conf。该文件通常位于 PostgreSQL 安装目录下的 data 文件夹中。 找到并修改以下配…

Zabbix6.0使用自带模板(Redis by Zabbix agent 2)监控Redis数据库

注意:Zabbix6.0使用Redis by Zabbix agent 2 模板可直接监控Redis数据。 1、添加Redis账号密码信息(如果Redis没有设置密码可省略此步骤) vim zabbix_agent2.confPlugins.Redis.Sessions.redis.Uritcp://redis.huayunworld.com:6379 Plugins.Redis.Sessions.redis…

机器学习和人工智能对金融行业的影响——案例分析

作者主页: 知孤云出岫 目录 引言机器学习和人工智能在金融行业的应用1. 风险管理信用评分风险预测 2. 交易高频交易量化交易 3. 客户服务聊天机器人个性化推荐 4. 反欺诈检测 机器学习和人工智能带来的变革1. 提高效率2. 降低成本3. 提升客户体验 未来发展趋势1. 更智能的风控系…

2-34 小波神经网络采用传统 BP 算法

小波神经网络采用传统 BP 算法,存在收敛速度慢和易陷入局部极小值两个突出弱点。建立了基于遗传算法的小波神经网络股票预测模型 GA-WNN。该模型结合了遗传算法的全局优化搜索能力以及小波神经网络良好的时频局部特性。运用 MATLAB 对拟合和预测过程进行仿真。结果表…

Flutter应用开发:掌握StatefulWidget的实用技巧

前言 随着移动应用的日益复杂,状态管理成为了 Flutter 应用开发中的一项重要挑战。 状态,即应用中的可变数据,它驱动着用户界面的渲染和交互。 在 Flutter 这样的声明式 UI 框架中,如何高效、可维护地管理状态,对于…

【2024】VsCode + Latex + Linux(Ubuntu) + wsl环境下配置教程 | 包含 中文配置,和 格式化处理

前言 本篇教程是针对WSL下的Ubuntu操作系统的配置教程,它和一般的Linux环境下的配置有所不同,并且和Windows环境下的也有所不同。 本篇博客编写参考了 官方文档(Tex) 和 插件官方(Texlive Workshop) 文档…

一篇文章教你如何快速上手Spring MVC框架【万字详解|包含常用注解分析讲解】

目录 一.什么是Spring Web MVC 二.Spring MVC的使用 ▐ 建立连接 RestController RequestMapping ▐ 传递参数 1.简单类型传参 2.类对象传参(RequestParam) 3.数组&集合传参 4.JSON传参(RequestBody) 5.URL中的参数…

7.13实训日志

上午 学习网络安全的过程中,我们深入了解了网络的不同层面和技术,从表层网络到深网再到暗网,以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性,还揭示了如何应对和防范各种网络威胁。 首先,我们…

查找PPT中某种字体的全部对应文字

本文章的目的是找到某种字体的文字,而不是替换某种字体的文字,也不是将某种字体全部替换为另外一种文字。 第一步:在PPT中按下ALTF11 出现以下窗口 第二步:点击插入->模块 第三步:将以下代码输入到窗体中 Sub F…

Java HashMap红黑树学习

Java HashMap红黑树学习 一、红黑树介绍二、红黑树的基本操作2.1 旋转2.1.1 左旋2.1.2 右旋 2.2 添加2.3 删除 一、红黑树介绍 (1)红黑树(Red-Black Tree,简称R-B Tree),是一种特殊的平衡二叉查找树。 (2)节…