当前位置: 首页 > news >正文

PXE+Kickstart无人值守安装安装Centos7.9

文章目录

    • 一、什么是PXE
      • 1、简介
      • 2、工作模式
      • 3、工作流程
    • 二、什么是Kickstart
      • 1、简介
      • 2、触发方式
    • 三、无人值守安装系统工作流程
    • 四、实验部署
      • 1、环境准备
      • 2、服务端:关闭防火墙和selinux
      • 3、添加一张仅主机的网卡
      • 4、配置仅主机的网卡
        • 4.1、修改网络连接名
        • 4.2、配IP地址
        • 4.3、重启网卡
      • 5、配置DHCP服务
        • 5.1、关闭仅主机网卡的本地DHCP服务
        • 5.2、配置服务端DHCP服务器
      • 6、安装tftp
      • 7、安装syslinux
        • 7.1、将pxelinux.0配置文件以及光盘镜像中的文件复制到tftp目录中
        • 7.2、配置syslinux服务程序
      • 8、安装vsftpd服务
      • 9、创建Kickstart应答文件
    • 五、自动部署客户端主机

一、什么是PXE

1、简介

PXE(Preboot Execution Environment,预启动执行环境)是一种由Intel公司设计的网络引导技术协议。它使计算机能够在没有本地操作系统、硬盘或引导媒体的情况下,通过网络接口卡(NIC)从远程服务器下载引导程序和其他操作系统安装文件,进而实现远程安装操作系统或其他软件。

2、工作模式

基于Client/Server架构

  • PXE客户端:通常内置在支持PXE的网络适配器的只读存储器(ROM)中,当计算机启动时,BIOS将控制权交给PXE客户端软件,该软件通过网络发出启动请求。
  • PXE服务器:接收到客户端的请求后,会分配IP地址给客户端(通常通过DHCP服务器),并提供引导文件(如Linux内核、初始化RAM磁盘等)供客户端下载。这些文件常常通过TFTP(Trivial File Transfer Protocol)协议传输。

3、工作流程

A1A32KFOkgu9AAAAAElFTkSuQmCC

1、启动过程:计算机在启动时通过BIOS或UEFI发出PXE启动请求,并广播该请求到网络中的所有设备。2、DHCP提供IP地址:PXE客户端接收到广播请求后,会通过DHCP(Dynamic Host Configuration Protocol)协议向DHCP服务器发送请求,以获取IP地址和其他网络配置信息。3、DHCP回应:DHCP服务器接收到PXE客户端的请求后,会分配一个可用的IP地址,并将其作为回应发送给PXE客户端。4、TFTP加载启动文件:PXE客户端通过TFTP(Trivial File Transfer Protocol)从网络中的TFTP服务器下载启动文件(通常称为pxelinux.0)。5、启动文件执行:PXE客户端执行下载的启动文件,该文件包含了操作系统镜像的位置和其他配置信息。6、操作系统镜像下载:根据启动文件中指定的位置,PXE客户端通过TFTP从网络中的TFTP服务器下载操作系统镜像文件。7、操作系统加载和安装:一旦操作系统镜像文件下载完成,PXE客户端会将其加载到计算机的内存中,并开始执行操作系统的安装过程。

二、什么是Kickstart

1、简介

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg的文件。

如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。

所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装

2、触发方式

  • 通过网络使用 PXE(预启动执行环境)引导时引用 Kickstart 文件位置。
  • 使用光盘、USB等可移动介质上的引导菜单选项指定 Kickstart 文件路径。
  • 在虚拟化平台中,通过ISO映像或配置管理工具传递Kickstart配置。

三、无人值守安装系统工作流程

152331551083531

四、实验部署

1、环境准备

实验环境:VMware Workstation 16 Pro

系统平台:Centos7.9(最小化安装)

2、服务端:关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

image-20240513213156925

3、添加一张仅主机的网卡

image-20240513213833879

image-20240513214050506

image-20240513214202430

image-20240513214358617

4、配置仅主机的网卡

4.1、修改网络连接名

默认的以太网连接会被命名为"有线连接 1"

image-20240513214605429

nmcli connection modify '有线连接 1' con-name ens36
4.2、配IP地址

按照自己的ip地址网段和网络连接名修改

nmcli connection modify ens36 ipv4.addresses 192.168.80.10/24 autoconnect yes ipv4.method manual

image-20240513215700591

image-20240513215748867

4.3、重启网卡
nmcli connection down ens36
nmcli connection up ens36

image-20240513220132947

5、配置DHCP服务

5.1、关闭仅主机网卡的本地DHCP服务

编辑–>虚拟网络编辑器

image-20240513220551037

5.2、配置服务端DHCP服务器
yum -y install dhcp -y
vim /etc/dhcp/dhcpd.conf
subnet 192.168.80.0 netmask 255.255.255.0 {
range 192.168.80.100 192.168.80.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.80.10;
filename "/pxelinux.0";
}

image-20240513221209163

  • subnet 192.168.80.0 netmask 255.255.255.0 { ... }:这部分定义了一个DHCP服务将管理的子网。192.168.80.0是子网的网络地址,netmask 255.255.255.0(或简写为/24)指定了子网掩码
  • range 192.168.80.100 192.168.80.199;:定义了DHCP服务器动态分配给客户端的IP地址池。这意味着当客户端请求IP地址时,DHCP服务器将从这个范围内随机选择一个未分配的IP地址分配给客户端。(注意不要将服务器端的ip地址包含在地址池内)
  • option subnet-mask 255.255.255.0;:设置客户端的子网掩码为255.255.255.0。
  • default-lease-time 21600;:设置客户端默认的IP地址租约时间为21600秒,即6小时。
  • max-lease-time 43200;:设置客户端最大IP地址租约时间为43200秒,即12小时。
  • next-server 192.168.80.10;:指定下一个启动服务器(Next Server)的IP地址为192.168.80.10。这是用于PXE引导的重要设置,指明了应该从哪个服务器获取启动文件。
  • filename "/pxelinux.0";:指定了PXE引导过程中客户端应请求的启动文件名。在这个例子中,客户端将尝试从TFTP服务器(通常与DHCP服务器是同一台机器)下载/pxelinux.0文件来继续启动过程。

重启DHCP服务并开机自启

systemctl restart dhcpd
systemctl enable dhcpd

image-20240513221840977

6、安装tftp

  • PXE客户端在启动过程中,通过网络向PXE服务器请求引导信息。TFTP服务器负责提供这些初始引导文件
  • 在PXE引导过程中,客户端还需要获取安装过程中的其他必要文件,如Linux内核(vmlinuz)、初始化RAM磁盘(initrd.img)等,这些都是通过TFTP协议从服务器下载的。
yum install -y tftp-server
systemctl start tftp
systemctl enable tftp

image-20240513222521085

7、安装syslinux

7.1、将pxelinux.0配置文件以及光盘镜像中的文件复制到tftp目录中

安装syslinux的目的是简化首次安装或其他特殊用途的启动盘

yum install syslinux -y
cd /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom/
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/

image-20240513222956668

  • cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/:复制Syslinux安装目录下的pxelinux.0文件到TFTP根目录。这个文件是PXE引导加载程序,允许客户端通过网络启动并加载菜单或直接加载内核。
  • cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/:从光盘的images/pxeboot/目录中复制vmlinuz(Linux内核映像)和initrd.img(初始化RAM磁盘映像)到TFTP根目录。这两个文件是PXE引导后,客户端实际使用的操作系统核心和早期用户空间环境
  • cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/:从光盘的isolinux/目录中复制vesamenu.c32(一个用于提供图形化菜单的库文件)和boot.msg(可能包含启动时显示的消息或欢迎信息的文本文件)到TFTP根目录。这通常用于增强PXE引导时的用户体验,比如显示一个图形化的启动菜单供用户选择不同的安装或引导选项。
7.2、配置syslinux服务程序
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
vim /var/lib/tftpboot/pxelinux.cfg/default1 default linux
64   append initrd=initrd.img inst.stage2=ftp://192.168.80.10 ks=ftp://192.168.80.10/pub    /ks.cfg quiet

image-20240513224013890

  • initrd=initrd.img: 指定使用名为initrd.img的初始化RAM磁盘作为临时根文件系统。
  • inst.stage2=ftp://192.168.80.10: 设置第二阶段安装源为FTP服务器,地址为192.168.80.10。这意味着操作系统安装文件将从该FTP服务器上获取。
  • ks=ftp://192.168.80.10/pub/ks.cfg: 指定了Kickstart配置文件的路径,同样通过FTP从192.168.80.10服务器的pub/ks.cfg位置获取。Kickstart文件自动执行安装过程,定义了安装时的各种配置选项。
  • quiet: 这个参数告诉安装程序在安装过程中保持安静模式,即尽量减少屏幕输出信息,仅显示错误和重要状态更新。

8、安装vsftpd服务

光盘镜像时通过ftp协议传输的,因此要用到vsftpd服务程序

yum install -y vsftpd
systemctl restart vsftpd
systemctl enable vsftpd
cp -r /media/cdrom/* /var/ftp/

image-20240513224534172

9、创建Kickstart应答文件

Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息。

系统可以自动调取这个应答文件的内容,从而彻底实现无人值守安装系统。

cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
vim /var/ftp/pub/ks.cfg5 url --url=ftp://192.168.80.10      # 删除原本的cdrom
30 clearpart --all --initlabel         # 意思是清空所有磁盘内容并初始化磁盘

五、自动部署客户端主机

  • 创建虚拟机
  • 自定义
  • 下一步

image-20240513225459957

下一步

image-20240513225526081

稍后安装操作系统–> 下一步

image-20240513225544166

下一步

image-20240513225745619

管理好虚拟机名称和位置,下一步

image-20240513225959301

下一步

image-20240513230056176

下一步

image-20240513230206854

网络类型选仅主机

image-20240513230318673

下一步

image-20240513230354919

下一步

image-20240513230416131

下一步

image-20240513230437911

下一步

image-20240513230458191

下一步

image-20240513230520833

完成

image-20240513230547172

开启测试

image-20240513230649804

不影响无人值守

image-20240513230751101

开始设置安装源

image-20240513231118250

自动设置root密码,在anaconda-ks.cfg中

image-20240513231325365

成功安装

image-20240513231510156

登录密码与服务端虚拟机的登录密码一致

image-20240513231641006

ip地址也在地址池中

image-20240513231749807

anaconda-ks.cfg就是original-ks.cfg

image-20240513231831651

  • anaconda-ks.cfg:安装程序自动生成的
  • original-ks.cfg:模板的Kickstart配置文件

至此PXE+Kickstart无人值守安装centos7.9操作系统完成

相关文章:

PXE+Kickstart无人值守安装安装Centos7.9

文章目录 一、什么是PXE1、简介2、工作模式3、工作流程 二、什么是Kickstart1、简介2、触发方式 三、无人值守安装系统工作流程四、实验部署1、环境准备2、服务端:关闭防火墙和selinux3、添加一张仅主机的网卡4、配置仅主机的网卡4.1、修改网络连接名4.2、配IP地址4…...

C语言实现通讯录,包括增删改查以及动态开辟内存,写入文件等功能

文章目录 前言一、注意二、源码1. test.c源文件2. contact.h头文件3. contact.c源文件 总结 前言 C语言实现通讯录,包括增删改查以及动态开辟内存,写入文件等功能 一、注意 在通讯录菜单栏使用枚举定义PeoInfo类型时,每个结构体类型的成员…...

flowable多对并发网关跳转的分析

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…...

【嵌入式——QT】QT集成Ymodem协议使用UDP进行传输

【嵌入式——QT】QT集成Ymodem协议使用UDP进行传输 Ymodem协议帧的数据格式帧头包号校验 通讯过程握手信号起始帧数据帧结束帧代码块 Ymodem命令 QT实现YmodemFileTransmit.hYmodemFileTransmit.cppBootLoader.hBootLoader.cppYmodem协议源码 Ymodem协议 帧的数据格式 帧头、…...

python笔记(17)输入输出

一、标准输入与输出简介 Python通过内置的sys模块管理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。但对大多数简单应用而言,直接使用内置函数就足够了。 二、输入:inpu…...

408数据结构总结复习笔记一:线性表

408数据结构总结复习笔记一:线性表 从现在开始慢慢更新我的考研复习笔记系列吧~ PS:主要是我自己个人复习过程中觉得重点的点,大家仅供参考哈~ 上岸!!!大家一起加油! 顺序表和链表的比较 顺序表链表存取…...

Docker——目录迁移

我们在生产环境中安装Docker时,默认的安装目录是/var/lib/docker,而通常情况下,规划给系统盘的目录一般为50G,该目录是比较小的,一旦容器过多或容器日志过多,就可能出现Docker无法运行的情况,所…...

SpringAMQP-消息转换器

这边发送消息接收消息默认是jdk的序列化方式,发送到服务器是以字节码的形式,我们看不懂也很占内存,所以我们要手动设置一下 我这边设置成json的序列化方式,注意发送方和接收方的序列化方式要保持一致 不然回报错。 引入依赖&#…...

轻松拿下指针(5)

文章目录 一、回调函数是什么二、qsort使用举例三、qsort函数的模拟实现 一、回调函数是什么 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时&#x…...

Nginx反向代理配置

一、介绍 Nginx 的反向代理功能在现代网络架构中扮演着至关重要的角色。首先,它充当了客户端与后端服务器之间的中介。当客户端发送请求时,这些请求先到达 Nginx 服务器,Nginx 会根据预先设定的规则和配置,将请求准确地转发到相应…...

突破编程界限:探索AI编程新境界

文章目录 一、AI编程助手1.1 Baidu Comate智能代码助手1.2 阿里云 通义灵码 二、场景需求三、体验步骤3.1 官网下载3.2 手动下载 四、试用感受4.1 提示4.2 注释生成代码4.3 代码生成4.4 选中生成注释4.5 查看变更&新建文件4.6 调优建议4.7 插件使用 五、结尾推荐 一、AI编程…...

C语言(指针)2

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…...

go学习笔记

1基础搭建 1.1,安装vscode https://code.visualstudio.com/download 64位 1.2,Windows 下搭建Go 开发环境-安装和配置 SDK SDK 的全称(Software Development Kit 软件开发工具包) Go 语言的官网为:golang.org , 因为各种原因,可…...

MacApp自动化测试之Automator初体验

今天我们继续讲Automator的使用。 初体验 启动Automator程序,选择【工作流程】类型。从资源库区域依次将获取指定的URL、从网页中获得文本、新建文本文件三个操作拖进工作流创建区域。 然后修改内容,将获取指定的URL操作中的URL替换成https://www.cnb…...

Vue学习v-html

Vue学习v-html 一、前言1、基本用法2、注意事项 二、总结 一、前言 学习 Vue.js 中的 v-html 指令意味着你想要在你的应用程序中动态地渲染 HTML。这个指令允许你将数据中包含的 HTML 代码直接插入到你的模板中,而不是将其作为纯文本处理。虽然这个功能非常强大&am…...

C++并发:锁

一、前言 C中的锁和同步原语的多样化选择使得程序员可以根据具体的线程和数据保护需求来选择最合适的工具。这些工具的正确使用可以大大提高程序的稳定性和性能,本文讨论了部分锁。 二、std::lock 在C中,std::lock 是一个用于一次性锁定两个或多个互斥…...

Git | git log 和 git status 的区别

如是我闻: git log和git status是Git中的两个非常有用的命令,它们用于不同的目的,并提供不同类型的信息。 git log git log命令用于显示一个或多个分支的提交历史记录。这个命令会列出提交历史,包括每次提交的SHA-1哈希值、提交…...

Django 4.x 智能分页get_elided_page_range

Django智能分页 分页效果 第1页的效果 第10页的效果 带输入框的效果 主要函数 # 参数解释 # number: 当前页码,默认:1 # on_each_side:当前页码前后显示几页,默认:3 # on_ends:首尾固定显示几页&#…...

java-spring 09 下.populateBean (方法成员变量的注入@Autowird,@Resource)

1.在populateBean 方法中的一部分:用于Autowird,Resource注入 // 后处理器已经初始化boolean hasInstAwareBpps hasInstantiationAwareBeanPostProcessors();// 需要依赖检查boolean needsDepCheck (mbd.getDependencyCheck() ! AbstractBeanDefinitio…...

赛氪网携手众机构助力第七届京津冀生态修复实践论坛圆满落幕

近日,由北京生态修复学会联合工业固废网、中国老科协国土资源分会共同主办,赛氪网作为支持单位的第七届京津冀生态修复实践论坛在北京温德姆酒店圆满落幕。本次论坛汇聚了众多行业专家、学者以及企业代表,共同探讨生态修复领域的新技术、新方…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

TJCTF 2025

还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...