云计算【第一阶段(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 textkernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue    //救援模式,出现boot:时输入linux rescuekernel 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 autokernel vmlinuzappend initrd=initrd.img method=ftp://192.168.77.79/centos7  ks=ftp://192.168.77.79/ks.cfglabel linux textkernel vmlinuzappend text initrd=initrd.img method=ftp://192.168.77.79/centos7  ks=ftp://192.168.77.79/ks.cfglabel linux rescuekernel vmlinuzappend rescue initrd=initrd.img method=ftp://192.168.77.79/centos7  ks=ftp://192.168.77.79/ks.cfg

五、

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

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

相关文章

【CSS in Depth 2 精译】3.1.2 逻辑属性 + 3.1.3 用好逻辑属性的简写形式

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

深入探讨:CPU问题的深度分析与调优

引言 你是否曾经遇到过这样的情况:系统运行突然变慢,用户抱怨不断,检查后发现CPU使用率居高不下?这时候,你会如何解决?本文将详细解析CPU问题的分析与调优方法,帮助你在面对类似问题时游刃有余。 案例分析:一次CPU性能瓶颈的解决过程 某知名互联网公司在一次促销活动…

《Python数据科学之一:初见数据科学与环境》

《Python数据科学之一:初见数据科学与环境》 欢迎来到“Python数据科学”系列的第一篇文章。在这个系列中,我们将通过Python的镜头,深入探索数据科学的丰富世界。首先,让我们设置和理解数据科学的基本概念以及在开始任何数据科学项…

每日Attention学习11——Lightweight Dilated Bottleneck

模块出处 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模块名称 Lightweight Dilated Bottleneck (LDB) 模块作用 改进的编码器块 模块结构 模块代码 import torch import torch.nn as nn import to…

使用DeepWalk 和Word2Vec实现单词Embedding

0、准备“边”数据集Wiki_edgelist import pandas as pddf pd.read_csv(./data/wiki/Wiki_edgelist.txt, sep , headerNone, names["source", "target"]) df.head() 1、读入 起点-终点 边数据,构建图 # 1、读入 起点-终点 边数据&#xff0c…

Docker入门(清晰认识)

为什么学习Docker? 再学完linux后,我们需要远程对Linux虚拟机下载一些软件,如果在Linux里直接用命令下载软件会十分麻烦,所以我们需要通过使用Docker将软件直接下载到Docker中,这样更方便下载和卸载等操作。 一张图弄…

javaScript的面试重点--预解析

目录 一.前言 二.预解析案例 一.前言 关于预解析,我们通过今天学习就能够知道解析器运行JS分为哪两步;能够说出变量提升的步骤和运行过程;能够说出函数提升的步骤和运行过程。 二.预解析案例 预解析,简而言之,也就是…

7.13实训日志

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

简易秒表的实现

目录 描述 输入描述: 输出描述: 参考代码 描述 请编写一个模块,实现简易秒表的功能:具有两个输出,当输出端口second从1-60循环计数,每当second计数到60,输出端口minute加一,一直…

007-端口隔离

端口隔离配置 端口隔离简介 为了实现报文之间的二层隔离,可以将不同的端口加入不同的VLAN,但会浪费有限的VLAN资源。采用端口隔离特性,可以实现同一VLAN内端口之间的隔离。 设备支持以下方式进行端口隔离: 基于隔离组的端口隔…

【数据结构】顺序表的应用

目录 一.引言 二.顺序表概念 三.顺序表的实现 1.定义顺序表 2.顺序表初始化 ​编辑 3.检查空间,如果满了,进行增容 4.顺序表尾插 5.顺序表尾删 6.顺序表头插 7.顺序表头删 ​编辑 8.顺序表查找 9.顺序表在pos位置插入x 10.顺序表删…

C语言丢失精度 如何实现高精度计算

(1)int 类型举例 int :占4个字节,也就是32位,及最大值是2^32-11024*1024*1024*4-14294967295 以上说法错误,因为Int是有符号类型整数,所以最高位是符号位,及int的最大值应该是2^31…

【Java】链表的头插法和尾插法

头插法 头插法就是在已有的节点的前面插入新节点 如何实现 (1)先定义一个节点类ListNode,里面有value值和地址 public class ListNode {int value;ListNode next;public ListNode(int value){this.value value;}Overridepublic String t…

让我们一起来看看这些强大的中国汽车品牌如何勇攀巅峰!

咱们中国的汽车品牌,就是这么牛!你知道吗?他们已经悄悄崛起,一步步向着更广阔的海外市场进军了。尽管这个过程可能有点坎坷,但是“勇敢”始终是他们前行的动力,推动着他们不断向前,打造属于我们…

AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理

AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理 目录 AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理 一、简单介绍 二、文本摘要 三、在CNN/Daily…

秋招突击——7/9——MySQL索引的使用

文章目录 引言正文B站网课索引基础创建索引如何在一个表中查看索引为字符串建立索引全文索引复合索引复合索引中的排序问题索引失效的情况使用索引进行排序覆盖索引维护索引 数据库基础——文档资料学习整理创建索引删除索引创建唯一索引索引提示复合索引聚集索引索引基数字符串…

C#基于任务的异步模式(TAP)

1、C#异步模式分类 基于任务的异步模式(TAP) 基于事件的异步模式(EAP)和异步编程模型模式(APM) 2、基于任务的异步模式(TAP) 基于任务的异步模式(TAP)用单个方…

夹子音转换器matlab

操作过程点击此处观看 上段时间补习了一下傅里叶变化的知识,突发奇想可以根据此做一款声音转换器,使用工科神器Matlab进行完成,并且开发了可操作界面如下图所示: 功能实现与描述 软件中可以实现声音的录制、回放、文件的保存与…

性能测试(2)

jmeter参数化 loadrunner Jmeter IP欺骗,也称为IP欺诈,是指通过伪装、篡改IP地址的方式,进行网络攻击或欺骗行为。这种行为可能会导致网络安全问题,包括身份盗窃、数据泄露、DDoS攻击等。为了保护自己的网络安全,用户…

MySQL-表的约束

文章目录 一、空属性二、默认值三、zerofill四、列描述五、主键删除主键追加主键复合主键根据主键快速索引 六、自增长last_insert_id() 七、唯一键八、外键class表(主表)student表(从表) 一、空属性 之前我们将表的机构&#xff…