RedHat9 | kickstart无人值守批量安装

一、知识补充

kickstart

Kickstart是一种用于Linux系统安装的自动化工具,它通过一个名为ks.cfg的配置文件来定义Linux安装过程中的各种参数和设置。

kickstart的工作原理

Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件。在随后的安装过程中,当安装程序遇到需要填写参数的情况时,它会首先去查找Kickstart生成的文件。如果找到合适的参数,安装程序就会采用这些参数,从而避免了人工干预。这样,如果Kickstart文件涵盖了安装过程中出现的所有需要填写的参数,安装者就可以完全自动化地完成系统的安装。

整体架构图
在这里插入图片描述

二、实验步骤

环境准备

新添加两台台机器,网络参数如下

标识Kickstart-ServerKickstart-Client
主机名KickstartServernone
网络信息192.168.37.7/24DHCP自动分配
网络属性静态地址DHCP自动分配
主要操作用户rootnone

修改主机名

[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,会自动跳转安装
请添加图片描述
查看系统执行脚本情况
在这里插入图片描述

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

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

相关文章

漏洞分析 | PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)

漏洞概述 PHP CGI(Common Gateway Interface)是在Windows平台上运行PHP的一种方式。CGI是一种标准接口,允许Web服务器与外部应用程序(如PHP脚本)进行交互,从而生成动态网页内容。 近期,PHP发布…

Logstash安装插件失败的问题

Logstash安装插件失败的问题 安装 logstash-output-jdbc 失败 报错为: Unable to download data from https://rubygems.org - Net::OpenTimeout: Failed to open TCP connection to rubygems.org:443 (execution expired) (https://rubygems.org/latest_specs.4.…

【算法 - 哈希表】两数之和

这里写自定义目录标题 两数之和题目解析思路解法一 :暴力枚举 依次遍历解法二 :使用哈希表来做优化 核心逻辑为什么之前的暴力枚举策略不太好用了?所以,这就是 这道题选择 固定一个数,再与其前面的数逐一对比完后&…

Linux系统(CentOS)安装iptables防火墙

1,先检查是否安装了iptables 检查安装文件-执行命令:rpm -qa|grep iptables 检查安装文件-执行命令:service iptables status 2,如果安装了就卸装(iptables-1.4.21-35.el7.x86_64 是上面命令查出来的版本) 执行命令&#xff1a…

蓝牙信标和蓝牙标签我们如何区分,区分方法有哪些?

蓝牙信标和蓝牙标签其实是两种不同的技术,很多人可能会把蓝牙信标和蓝牙标签搞混,因为区分不开来,但实际上,区分这两种技术也很简单,因为它们各自都有不一样的特性,通过这些特性,我们也能正常区…

相机光学(二十四)——CRA角度

CRA角度 0.参考资料1.什么是CRA角度2.为什么 CRA 会导致luma shading3.为什么 CRA 会导致color shading4.CRA相差过大的具体表现5.CRA Matching6.怎样选择sensor的CRA 0.参考资料 1.芯片CRA角度与镜头的匹配关系(一)   2.芯片CRA角度与镜头选型的匹配关…

爬虫进阶:Selenium与Ajax的无缝集成

爬虫与Ajax的挑战 Ajax(Asynchronous JavaScript and XML)允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分内容。这为用户带来了更好的体验,但同时也使得爬虫在抓取数据时面临以下挑战: 动态内容加载&#xff…

vue中数组出现__ob__: Observer属性,导致不能正确使用问题解决

直接上图,如下图,数组中出现__ob__: Observer属性,导致无法取值。 解决方案为:JSON.parse(JSON.stringify(数组变量名))深拷贝数组,重新生成一个可枚举数组。 // 处理代码如let tempIds JSON.parse(JSON.stringify(i…

一文带你初探FreeRTOS信号量

本文记录我初步学习FreeRTOS的信号量的知识,在此记录分享,希望我的分享对你有所帮助! 什么是信号量 在FreeRTOS中,信号量(Semaphore)是一种用于任务间同步和资源共享的机制。信号量主要用于管理对共享资源的…

Cgi上传文件 注意事项

//核心代码 ofstream outfile("/opt/software/" file.getFilename(), ios::out | ios::binary); outfile << file.getData(); //错误方式&#xff1a;outfile << file.getData() <<endl; outfile.close(); 参考博客&#xff1a; https://blog.cs…

HTML如何在图片上添加文字

HTML如何在图片上添加文字 当我们开发一个页面&#xff0c;插入图片时&#xff0c;需要有一组文字对图片进行描述。那么HTML中如何在图片上添加文字呢&#xff1f;这篇文章告诉你。 先让我们来看下效果图&#xff1a; 句子“这是一张夜空图片”被放置在了图片的左下角。 那么…

Leetcode.342 4的幂

给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 4 的幂次方需满足&#xff1a;存在整数 x 使得 n 4x 示例 1&#xff1a; 输入&#xff1a;n 16 输出&#xff1a;true示…

微信小程序的智慧物流平台-计算机毕业设计源码49796

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3研究方法 1.4开发技术 1.4.1 微信开发者工具 1.4.2 Node.JS框架 1.4.3 MySQL数据库 1.5论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 用户登录流程 2.2.2 数据删除流程 2.3 系统功能分…

ESP32CAM物联网教学09

ESP32CAM物联网教学09 摄像头配上显示屏 小智给摄像头配上了一块液晶显示屏,ESP32Cam变得更加酷炫了,应用也更加广泛了。 TFT彩色显示屏从第一课的CameraWebServer开始,我们一直都是利用浏览器来查看显示摄像头的视频流,都需要借助这个网页提供的服务。 可以让ESP32Cam开…

【案例干货】智能导览智慧景区系统小程序开发主要功能

智能景区/园区导览系统是一种利用云计算、物联网等新技术&#xff0c;通过互联网或移动互联网&#xff0c;借助便携的终端上网设备&#xff0c;为游客提供全方位、便捷化街区导航与信息服务的系统。 其主要功能可以归纳为以下几个方面&#xff1a; 1. 街区资讯展示 信息介绍&…

短链接学习day2

用户敏感信息脱敏展示&#xff1a; RequestParam 和 PathVariable的区别 注解是用于从request中接收请求的&#xff0c;两个都可以接收参数&#xff0c;关键点不同的是RequestParam 是从request里面拿取值&#xff0c;而 PathVariable 是从一个URI模板里面来填充。 PathVari…

昇思25天学习打卡营第12天|ResNet50迁移学习

昇思25天学习打卡营第12天|ResNet50迁移学习 前言ResNet50迁移学习数据准备下载数据集 加载数据集数据集可视化 训练模型构建Resnet50网络固定特征进行训练训练和评估可视化模型预测 个人任务打卡&#xff08;读者请忽略&#xff09;个人理解与总结 前言 非常感谢华为昇思大模型…

vite简介

vite是新一代前端构建工具&#xff0c;vite具有优势如下&#xff1a; 轻量快速的热重载&#xff08;HMR&#xff09;&#xff0c;能实现快速的服务启动。对TypeScript、JSX、CSS等支持开箱即用。真正的按需编译&#xff0c;不再等待整个应用编译完成。webpack构建与vite构建对…

Jenkins 强制杀job

有时候有的jenkins job运行时间太长&#xff0c;在jenkins界面点击x按钮进行abort&#xff0c;会失败&#xff1a; 这时候点击&#xff1a; “Click here to forcibly terminate running steps” 会进一步kill 任务&#xff0c;但是也还是有杀不掉的可能性。 终极武器是jenkin…

vue3【提效】使用 VueUse 高效开发(工具库 @vueuse/core + 新增的组件库 @vueuse/components)

Vueuse 是一个功能强大的 Vue.js 生态系统工具库&#xff0c;提供了可重用的组件和函数&#xff0c;帮助开发者更轻松地构建复杂的应用程序。 官网 &#xff1a;https://vueuse.org/core/useWindowScroll/ 安装 VueUse npm i vueuse/core vueuse/components&#xff08;可选&a…