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.pswp.cn/diannao/41202.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41202.shtml
英文地址,請注明出處:http://en.pswp.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發布…

Request safe_get 小工具

接口安全獲取請求參數小工具( python) flask import logging import traceback from flask import (Blueprint, request, Response, jsonify, g, send_file)def safe_get(req: request, attr: str, defaultNone):try:if attr in req.form:return req.f…

拍攝泡咖啡的劇本!

泡咖啡的過程可以是一種放松和享受的儀式,同時也是一個記錄生活美好瞬間的好機會。以下是一些步驟和提示,幫助您記錄泡咖啡的過程: 1. **準備材料**: 確保您有新鮮的咖啡豆、磨豆機、咖啡壺、濾紙、熱水和杯子。 2. **選擇音樂**&…

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…

go語言 函數和包

go語言 函數和包 一、函數 在Go語言中,函數是執行特定任務的自包含代碼塊。 1.函數的定義 函數通過func關鍵字定義,格式如下: func 函數名(形參 形參類型, 形參 形參類型) 返回值類型 {函數體return 返回值 }2.基礎函數類型 無參數無返回…

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…

GNU/Linux - 各種包管理器介紹

Linux 包管理器根據不同的發行版和包管理系統有所不同。以下是一些常見的 Linux 包管理器&#xff1a; 1. RPM (Red Hat Package Manager) * 用于&#xff1a; Red Hat Enterprise Linux (RHEL), Fedora, CentOS, openSUSE * 包管理器&#xff1a; rpm, yum, dnf 2. DEB (Deb…

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 系統功能分…

C#面:ASP.NET Core Filter如何?持依賴注??

ASP.NET Core Filter可以通過依賴注入來支持。在ASP.NET Core中&#xff0c;依賴注入是一種將依賴對象提供給類的機制&#xff0c;它可以幫助我們解耦和測試代碼。 要在ASP.NET Core Filter中使用依賴注入&#xff0c;可以按照以下步驟進行操作&#xff1a; 首先&#xff0c;…

ESP32CAM物聯網教學09

ESP32CAM物聯網教學09 攝像頭配上顯示屏 小智給攝像頭配上了一塊液晶顯示屏,ESP32Cam變得更加酷炫了,應用也更加廣泛了。 TFT彩色顯示屏從第一課的CameraWebServer開始,我們一直都是利用瀏覽器來查看顯示攝像頭的視頻流,都需要借助這個網頁提供的服務。 可以讓ESP32Cam開…

【案例干貨】智能導覽智慧景區系統小程序開發主要功能

智能景區/園區導覽系統是一種利用云計算、物聯網等新技術&#xff0c;通過互聯網或移動互聯網&#xff0c;借助便攜的終端上網設備&#xff0c;為游客提供全方位、便捷化街區導航與信息服務的系統。 其主要功能可以歸納為以下幾個方面&#xff1a; 1. 街區資訊展示 信息介紹&…