RedHat9 | kickstart无人值守批量安装
一、知识补充
kickstart
Kickstart是一种用于Linux系统安装的自动化工具,它通过一个名为ks.cfg的配置文件来定义Linux安装过程中的各种参数和设置。
kickstart的工作原理
Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件。在随后的安装过程中,当安装程序遇到需要填写参数的情况时,它会首先去查找Kickstart生成的文件。如果找到合适的参数,安装程序就会采用这些参数,从而避免了人工干预。这样,如果Kickstart文件涵盖了安装过程中出现的所有需要填写的参数,安装者就可以完全自动化地完成系统的安装。
整体架构图

二、实验步骤
环境准备
新添加两台台机器,网络参数如下
| 标识 | Kickstart-Server | Kickstart-Client |
|---|---|---|
| 主机名 | KickstartServer | none |
| 网络信息 | 192.168.37.7/24 | DHCP自动分配 |
| 网络属性 | 静态地址 | DHCP自动分配 |
| 主要操作用户 | root | none |
修改主机名
[root@localhost ~]# hostnamectl hostname Kickstart-Server
[root@localhost ~]# bash
修改网络信息
[root@Kickstart-Server ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.37.7/24 ipv4.gateway 192.168.37.254
[root@Kickstart-Server ~]# nmcli connection up ens160
验证:查看网络信息
[root@Kickstart-Server ~]# ip add show ens160

新建一台全新的主机作为kickstart-client测试主机

其余选项保持默认



CD/DVD要选择【自动检测】


1、配置软件仓库
这里我们拥有一个本地的YUM源服务器,通过FTP共享,所以仓库地址指向YUM源服务器
首先删除原有的仓库文件
[root@Kickstart-Server ~]# rm -rf /etc/yum.repos.d/*
新建仓库文件
[root@Kickstart-Server ~]# vim /etc/yum.repos.d/dvd.repo# 写入以下内容
[BaseOS]
name=BaseOS
baseurl=ftp://192.168.37.1/yum/BaseOS
enabled=1
gpgcheck=0[AppStream]
name=AppStream
baseurl=ftp://192.168.37.1/yum/AppStream
enabled=1
gpgcheck=0

清除DNF缓存重新生成
[root@Kickstart-Server ~]# dnf clean all;dnf makecache

2、配置DHCP服务
安装DHCP服务
[root@Kickstart-Server ~]# dnf install -y dhcp-server
验证:验证软件安装情况
[root@Kickstart-Server ~]# rpm -qa dhcp-server

将模板文件中空行和注释行过滤后重定向到配置文件中
[root@Kickstart-Server ~]# egrep -v "^$|^#" /usr/share/doc/dhcp-server/dhcpd.conf.example > /etc/dhcp/dhcpd.conf
[root@Kickstart-Server ~]# vim /etc/dhcp/dhcpd.conf
修改的内容如下
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option domain-name-servers 192.168.37.7;
option architecture-type code 93 = unsigned integer 16;subnet 192.168.37.0 netmask 255.255.255.0 {range 192.168.37.50 192.168.37.60;option routers 192.168.37.254;
}class "pxeclients" {match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";next-server 192.168.37.7;if option architecture-type = 00:07 {filename "BOOTX64.EFI";}else {filename "pxelinux.0";}
}

验证:检测配置文件语法问题
[root@Kickstart-Server ~]# dhcpd -t

开启DHCP服务,并加入开机自启
[root@Kickstart-Server ~]# systemctl enable --now dhcpd.service
调整防火墙策略
[root@Kickstart-Server ~]# firewall-cmd --add-service=dhcp --permanent
[root@Kickstart-Server ~]# firewall-cmd --reload
关闭SELinux
[root@Kickstart-Server ~]# setenforce 0
[root@Kickstart-Server ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
验证:开启kickstart-client,验证DHCP地址分配情况

3、配置TFTP服务
安装tftpboot中的SYSLINUX模块,用于网络引导服务
[root@Kickstart-Server ~]# dnf install -y syslinux-tftpboot
安装TFTP服务端软件
[root@Kickstart-Server ~]# dnf install -y tftp-server
TFTP的默认发布目录为/var/lib/tftpboot,我们需要修改为/tftpboot目录
[root@Kickstart-Server ~]# vim /usr/lib/systemd/system/tftp.service# 修改以下选项
ExecStart=/usr/sbin/in.tftpd -s /tftpboot

启动TFTP服务并加入到开机自启
[root@Kickstart-Server ~]# systemctl enable --now tftp
调整防火墙策略
[root@Kickstart-Server ~]# firewall-cmd --add-service=tftp --permanent
[root@Kickstart-Server ~]# firewall-cmd --reload
验证:查看TFTP服务状态
[root@Kickstart-Server ~]# systemctl status tftp

连接镜像

新建挂载目录,将镜像临时挂载到目录中
[root@Kickstart-Server ~]# mkdir /iso
[root@Kickstart-Server ~]# mount /dev/cdrom /iso
验证:查看挂载目录中的内容
[root@Kickstart-Server ~]# ll /iso/

将引导镜像临时挂载到/media目录中
[root@Kickstart-Server ~]# mount /iso/images/efiboot.img /media/
验证:查看挂载目录下的内容
[root@Kickstart-Server ~]# ll /media/EFI/BOOT/

将挂载后目录中的内容复制到TFTP资源目录下
[root@Kickstart-Server ~]# cp -r /media/EFI/BOOT/* /tftpboot/
验证:查看TFTP资源目录内容
[root@Kickstart-Server ~]# ls /tftpboot/

不管主机架构为UEFI还是legacy,都需要内核文件和内存镜像文件系统
[root@Kickstart-Server ~]# cp /iso/images/pxeboot/vmlinuz /tftpboot/
[root@Kickstart-Server ~]# cp /iso/images/pxeboot/initrd.img /tftpboot/
3.1 UEFI启动菜单的制作
编辑启动菜单
[root@Kickstart-Server ~]# vim /tftpboot/grub.cfg
修改以下内容
set default="0" # 代表默认选择的菜单,在计算机中的计数从0开始,即默认选择第一个菜单
set timeout=6 # 倒计时时间(秒)
menuentry 'Install Red Hat Enterprise Linux 9.2' --class fedora --class gnu-linux --class gnu --class os {linuxefi vmlinuz inst.stage2=ftp://192.168.37.7/dvd inst.ks=ftp://192.168.37.7/pub/ks.cfg quietinitrdefi initrd.img
}
- vmlinuxz:内核文件系统
- initrd.img:内存文件系统
- inst.stage2:安装介质,安装镜像所存在的位置
- inst.ks:自动化安装的ks文件位置

3.2 legacy启动菜单的制作
为主机架构为legacy新建引导文件目录
[root@Kickstart-Server ~]# mkdir /tftpboot/pxelinux.cfg
将光盘镜像中的legacy主机架构的引导菜单文件拷贝至legacy引导文件目录,文件名为default
[root@Kickstart-Server ~]# cp /iso/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
编辑引导菜单文件
[root@Kickstart-Server ~]# vim /tftpboot/pxelinux.cfg/default
编辑内容如下
timeout 60 # 倒计时(s)
label linuxmenu label ^Install Red Hat Enterprise Linux 9.2menu defaultkernel vmlinuzappend initrd=initrd.img inst.stage2=ftp://192.168.37.7/dvd inst.ks=ftp://192.168.37.7/pub/ks.cfg quiet


验证:开启kickstart-client,成功获取引导文件,但是在倒计时结束后会黑屏,这是因为我们没有指定安装镜像

4、配置FTP服务
安装FTP服务
[root@Kickstart-Server ~]# dnf install -y vsftpd
编辑配置文件,开启匿名用户访问
[root@Kickstart-Server ~]# sed -i "s/anonymous_enable=NO/anonymous_enable=YES/g" /etc/vsftpd/vsftpd.conf
调整防火墙策略
[root@Kickstart-Server ~]# firewall-cmd --add-service=ftp --permanent
[root@Kickstart-Server ~]# firewall-cmd --reload
新建共享目录
[root@Kickstart-Server ~]# mkdir /var/ftp/dvd
将光盘镜像挂载到共享目录中
[root@Kickstart-Server ~]# mount /dev/cdrom /var/ftp/dvd/
将挂载写入配置文件
[root@Kickstart-Server ~]# vim /etc/fstab# 写入下列内容
/dev/cdrom /var/ftp/dvd iso9660 defaults 0 0

验证:查看FTP共享目录内容
[root@Kickstart-Server ~]# ll /var/ftp/dvd/

启动FTP服务,并加入到开机自启
[root@Kickstart-Server ~]# systemctl enable --now vsftpd.service
验证:使用主机访问共享目录

验证:先在kickstart-Server上开启追踪日志,然后再开启kickstart-client,这个时候会通过FTP获取安装镜像源,然后会显示安装界面
[root@Kickstart-Server ~]# journalctl -f -u tftp.service # 实时显示日志的最新条目

选择第一项

查看实时显示的日志信息,可以看到Finnish提示拉取成功

此时系统会提示文件不存在,是因为我们的ks.cfg文件不存在

5、生成ks文件
通过红帽官网生成KS文件
https://access.redhat.com/labs/




console=ttyS0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto








lang en_US
keyboard --xlayouts='us'
timezone Asia/Shanghai --utc
rootpw $2b$10$59RKKpG0ojERHsmCYGftQuPd/0vH1fYOSeno4ct1XObQCCFFbxDPG --iscrypted
url --url=ftp://192.168.37.7/dvd
bootloader --append="console=ttyS0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto"
zerombr
clearpart --all --initlabel
autopart
network --bootproto=dhcp
skipx
firstboot --disable
selinux --enforcing
firewall --enabled --ssh
%post
useradd meaauf
echo redhat | passwd --stdin meaauf
%end
%packages
@^minimal-environment
kexec-tools
%end
新建ks.cfg文件,写入上述文件内容
[root@Kickstart-Server ~]# vim /var/ftp/pub/ks.cfg

验证:保证ks.cfg文件其它人拥有读权限
[root@Kickstart-Server ~]# ll /var/ftp/pub/ks.cfg

6、最终验证
kickstart-server上开启实时日志
[root@Kickstart-Server ~]# journalctl -f -u tftp.service
开启kickstart-client,会自动跳转安装

查看系统执行脚本情况

相关文章:
RedHat9 | kickstart无人值守批量安装
一、知识补充 kickstart Kickstart是一种用于Linux系统安装的自动化工具,它通过一个名为ks.cfg的配置文件来定义Linux安装过程中的各种参数和设置。 kickstart的工作原理 Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,…...
k8s-第五节-StatefulSet
StatefulSet StatefulSet 是用来管理有状态的应用,例如数据库。 前面我们部署的应用,都是不需要存储数据,不需要记住状态的,可以随意扩充副本,每个副本都是一样的,可替代的。 而像**数据库、Redis **这类…...
ai机器狗
ai机器狗的代码很早就开源了,相当于核心,最难东西美国人公开了,开源了,如果有钱,有足够资源的,造出东西有可能比公开这些核心代码的公司或者组织还好。没有技术含量,技术含量别人都解决了&#…...
数据库关键字执行顺序
在 SQL 中,关键字的执行顺序通常如下: FROM:确定要查询的表或数据源,并执行表之间的连接操作(如 INNER JOIN、LEFT JOIN 等)。FROM 子句执行顺序为从后往前、从右到左。ON:应用连接条件…...
Linux 永久挂载磁盘
文章目录 前言一、使用步骤1.命令 总结 前言 一、使用步骤 1.命令 第一步:创建挂载点 sudo mkdir /hhkj 第二步:磁盘挂载到挂载点(lsblk、lvdisplay) sudo mount /dev/sdb2 /hhkj 或者 sudo mount /dev/centos/home /hhkj 第三…...
windows启动Docker闪退Docker desktop stopped
Windows启动Docker闪退-Docker desktop stopped 电脑上很早就安装有Docker了,但是有一段时间都没有启动了,今天想启动启动不起来了,打开没几秒就闪退,记录一下解决方案。仅供参考 首先,参照其他解决方案,本…...
探索Redis GEOMETRY数据结构:地理空间索引与查询(基于Redis GEO和Java实现附近商户查找功能)
摘要 Redis是一个高性能的键值存储系统,广泛应用于缓存、消息队列、排行榜等场景。本文将介绍Redis中一个假设的GEOMETRY数据结构,用于高效地存储和查询地理空间数据。 1. Redis地理空间数据结构概述 地理空间数据结构允许用户存储地理位置信息&#…...
DP学习——策略模式
学而时习之,温故而知新。 敌人出招(使用场景) 业务中需要多个算法可替换,而不能重构代码时,怎么办?或者一个对象在运行中要根据业务切换不同的模式或者采用不同的算法,怎么办? 到…...
0701_ARM5
练习:使用usart4 main.c #include "uart4.h"int main() {// 初始化 UART4hal_uart4_init();while (1) {// 发送一个字符串//hal_put_char( hal_get_char());hal_put_string(hal_get_string());}return 0; } usart4.c #include "uart4.h"//**…...
Python用户宝典:了解并实现遗传算法
遗传算法是一种基于自然选择的技术,用于解决复杂问题。由于问题很复杂,遗传算法(而不是其他方法)被用来得出解决问题的合理方案。本文介绍遗传算法的基础知识以及如何用Python来实现。 遗传算法的要素 适应度函数 适应度函数衡…...
如何使用深度学习进行实时目标检测:速度与精度的双重挑战
如何使用深度学习进行实时目标检测:速度与精度的双重挑战 目标检测作为计算机视觉领域的核心任务之一,其目的是在图像或视频中识别和定位感兴趣的对象。随着深度学习技术的发展,基于深度学习的目标检测算法在实时性、准确性方面取得了显著进…...
创新引领,构筑产业新高地
在数字经济的浪潮中,成都树莓集团以创新驱动为核心,通过整合行业资源、优化服务、培养数字产业人才等措施,致力于打造产业高地,推动地方经济的高质量发展。 一、创新驱动,引领产业发展 1、引入新技术、新模式…...
npm,yarn清楚缓存
1.运行以下命令来清理npm缓存: npm cache clean --force或者运行以下命令清理Yarn缓存: yarn cache clean2.删除 node_modules 和锁文件: 删除 node_modules 目录和 package-lock.json 或 yarn.lock 文件,然后重新安装依赖 rm …...
httpclient访问https请求报错处理
C#通过httpclient调用https请求时,报错 错误信息为:The remote certificate is invalid according to the validation procedure 该错误是由于使用httpclient访问不合法的https站点导致出现的异常。 处理代码如下 public static string HttpPostWithT…...
ffmpeg + opencv 把摄像头画面保存为mp4文件(Ubuntu24.04)
参考链接 ffmpeg opencv 把摄像头画面保存为mp4文件_ffmpeg转化摄像头mp4-CSDN博客 调试环境 Ubuntu24.04 ffmpeg 6.1.1 opencv 4.6 g 13.2.0 C源码 #include <iostream> #include <sys/time.h> #include <string>#ifdef __cplusplus extern "…...
Fastapi 项目第二天首次访问时数据库连接报错问题Can‘t connect to MySQL server
问题描述 Fastapi 项目使用 sqlalchemy 连接的mysql 数据库,每次第二天首次访问数据库相关操作,都会报错:sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, “Can’t connect to MySQL server on ‘x.x.x.x’ ([Err…...
尚硅谷k8s 2
p54-56 k8s核心实战 service服务发现 Service:将一组 Pods 公开为网络服务的抽象方法。 #暴露Deploy,暴露deploy会出现在svc kubectl expose deployment my-dep --port8000 --target-port80#使用标签检索Pod kubectl get pod -l appmy-depapiVersion: v1 kind: Service metad…...
机器学习---线性回归
1、线性回归 例如:对于一个房子的价格,其影响因素有很多,例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi表示,那么房价 y y y可以用如下公式表示: y …...
字符串去重、集合遍历 题目
题目 JAVA38 字符串去重描述输入描述:输出描述: 示例:分析:代码:大佬代码: JAVA39 集合遍历描述输入描述:输出描述: 示例:分析:代码: JAVA38 字符串去重 描述 从键盘获取…...
SQL窗口函数详解
详细说明在sql中窗口函数是什么,为什么需要窗口函数,有普通的聚合函数了那窗口函数的意义在哪,窗口函数的执行逻辑是什么,over中的字句是如何使用和理解的(是不是句句戳到你的痛点,哼哼~&#x…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
