紅帽7基于kickstart搭建PXE環境

Kickstart 文件是一種配置文件,用于定義 Linux 系統安裝過程中的各種參數,如分區、網絡配置、軟件包選擇等。system-config-kickstart 提供了一個圖形界面,方便用戶快速生成這些配置文件。

用戶可以通過圖形界面進行系統安裝的詳細配置,包括:

  • 安裝方法(如網絡安裝、本地安裝等)。

  • 網絡設置(如 IP 地址、網關、DNS 等)。

  • 分區信息(如分區大小、文件系統類型等)。

  • 軟件包選擇(如安裝哪些軟件包或組)。

  • 預安裝和安裝后腳本(用于執行自定義操作)。

配置流程

由于system-config-kickstart在redhat7.9以上就不再提供了,所以建議選擇7.9以下的版本或centos7.9以下

邏輯思路:通過一臺服務器httpd服務分享我們之后需要安裝的主機提供光盤文件,和我們使用system-config-kickstart 生成的kickstart配置文件。新主機在安裝的時候不從硬件啟動,先通過DHCP獲取到IP地址和根據下一步的IP去找獲取共享資源的tftp服務器,這個服務器共享一個引導文件pxelinux.0,用于網絡啟動的引導程序文件。讓系統去找pxelinux.cfg/default文件,并定義內核文件、啟動參數,其中就含有我們httpd服務分享的那些資源。然后根據kickstart實現自動化安裝和配置

為了省事兒我們把DHCP、kickstart、httpd和tftp服務都放在一臺主機上提供。主機IP地址為:192.168.118.134

環境準備

由于kickstart它是有界面的,所以我們需要下載界面。如果讀者安裝rhel7是帶有界面的,這一步跳過。

yum group list
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Repository 'baseos' is missing name in configuration, using id
Installed Environment Groups:
? ?Server with GUI
Available Environment Groups:
? ?Minimal Install
? ?Infrastructure Server
? ?File and Print Server
? ?Basic Web Server
? ?Virtualization Host
Available Groups:
? ?Compatibility Libraries
? ?Console Internet Tools
? ?Development Tools
? ?Graphical Administration Tools
? ?Legacy UNIX Compatibility
? ?Scientific Support
? ?Security Tools
? ?Smart Card Support
? ?System Administration Tools
? ?System Management
Done

查看好我們需要的Server with GUI這個包之后,我們直接安裝,順便安裝上DHCP,httpd,system-config-kickstart這幾個包

yum group install "Server with GUI" -y
yum install system-config-kickstart dhcp httpd -y

準備提供服務的系統盤?

為了避免不必要的麻煩,請事先關閉selinux和防火墻:setenforce 0 && systemctl stop firewalld

我們先將系統盤掛載的目錄創建一個軟連接到httpd服務的目錄下面

ln -s /mnt /var/www/html
[root@localhost ~]# ll /var/www/html/
total 0
lrwxrwxrwx. 1 root root 4 Feb 22 09:19 mnt -> /mntsystemctl start httpd

?啟動之后自己用瀏覽器查看一下

配置kickstart

咱要先進入到GUI界面,然后才能啟動kickstart:init 5進入

然后自己隨便配置一下,找到terminal。在里面輸入system-config-kickstart

?下圖中的Reboot system after installation不能勾上,要不然它之后安裝好重啟又會鏈接到DHCP,然后反復重裝系統

下一步installation method選擇HTTP,寫上server地址,和目錄即可

?第三步的boot loader options保持默認即可

第四步是磁盤分區的,我們不想安裝master那樣分區,選擇Clear Master Boot Recoed,磁盤的標簽也要初始化Initial the disk label

我們需要給上面的Layout添加一個boot分區,一個/分區和一個swap內存分區

把剩下的全部給根分區好了

?

配置好之后,第五步,是配置網絡的,這一步需要添加一塊網卡,要DHCP的

?跳過Authentication Configuration(配置驗證方式的,默認就可以),第六步配置防火墻,關閉就好

?第七步把那個Install a graphicial environment關掉,這個是安裝圖形化界面的

最后一步,可以編寫自己安裝好了系統之后執行的腳本,我們跳過了Package Selection這一步,這一步是可以選擇裝系統是安裝的軟件包,這里沒法配置。我們可以之后在生成的ks.cfg文件中添加上。

我們在Post-Installation Scrpt中寫個腳本,要求它自動掛載

cat > /etc/yum.repo.d/rhel7.repo << EOF
[rhel]
basename=rhel
baseurl=http://192.168.118.134/mnt
gpgcheck=0
enabled=1
EOFyum clean all && yum makecache

?編輯好之后保存即可,我這里不是以root用戶啟動界面的,所以我沒法保存到root目錄下,就保存到Redhat用戶目錄下

init 3回到終端模式

將創建好的ks.cfg給移動到http服務目錄下:mv /home/redhat/ks.cfg /var/www/html/

回到終端模式之后需要重新啟動一下httpd:systemctl start httpd

參考桌面的anaconda.cfg我們在里面添加上需要安裝到軟件包:

%packages

@base #示安裝系統的基礎軟件包組,它提供了一個最小化的、功能完備的 Linux 系統

net-tools

vim

tree

tar

%end

使用syslinux作為引導安裝

這里會帶著大家一步步從官方文檔中找到配置syslinux的方法

yum install syslinux -y

rpm -ql命令用于列出指定 RPM 包中包含的所有文件及其安裝路徑:rpm -ql syslinux

?先看看README這個文件:?more /usr/share/doc/syslinux-4.05/README

?由于我們是使用的pxelinux這個功能,這里要我們去尋找pxelinux.txt文檔

[root@localhost ~]# rpm -ql syslinux | grep pxelinux.txt
/usr/share/doc/syslinux-4.05/pxelinux.txt

?文中提到了需要使用到tftp服務,和需要創建/tftpboot/pxelinux.cfg,并且里面需要存放pxelinux.0文件和任何需要引導的內核和initrd鏡像

?我們下載tftp-server:yum install tftp-server -y,默認情況下/var/lib/tftpboot就是它服務器的默認根目錄。

根據上面圖片提到的信息,我們把pxelinu.0和我們本臺主機的ISO 鏡像或光盤引導系統移動到這個目錄下面

rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /mnt/isolinux/* /var/lib/tftpboot/

?注釋:isolinux是專門用于從 ISO 鏡像或光盤引導系統,就是咱們在安裝系統時的初始那個引導界面

最后創建好/var/lib/tftpboot/pxelinux.cfg這個目錄,在這個目錄中的的配置可以從根據syslinux.txt中查看(地址為rpm -ql syslinux | grep syslinux.txt)。

不過可以偷懶: [root@localhost tftpboot]# cp isolinux.cfg ./pxelinux.cfg/default

我們修改一下里面的參數

default vesamenu.c32
timeout 30#3秒鐘,選擇系統的時候不用等默認的60秒

...

label linux
? menu label ^Install Red Hat Enterprise Linux 7.9
? menu default
? kernel vmlinuz
? append initrd=initrd.img repo=http://192.168.118.134/mnt/ ks=http://192.168.118.134/ks.cfg quiet

label check
? menu label Test this ^media & install Red Hat Enterprise Linux 7.9
? kernel vmlinuz
? append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.9\x20Server.x86_64 rd.live.check quiet

....

?

默認進入安裝引導的時候是:Test this ^media & install Red Hat Enterprise Linux 7.9

改為直接安裝:^Install Red Hat Enterprise Linux 7.9? #這個標簽可以內容可以改,自定義的。然后修改源為我們自己配置的repo=http://192.168.118.134/mnt/ ks=http://192.168.118.134/ks.cfg ,quite表示靜默安裝

配置完之后:wq!退出

systemctl enable --now tftp

配置DHCP服務

這一步是為了需要自動安裝的主機,自動獲取IP之后指定其下一步的行為。讓他通過tftpboot里面的pxelinux.0進行后續的安裝

yum install dhcp -y
[root@localhost pxelinux.cfg]# rpm -ql dhcp
/etc/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/12-dhcpd
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/dhcp/scripts
/etc/dhcp/scripts/README.scripts
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-4.2.5
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example

顯然/etc/dhcp/dhcpd.conf就是我們需要配置的文件,其中/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example是提供給我們的示例

cp -f /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

進入到這個配置文件中刪除掉dhcp功能之后的所有配置,和bootp功能

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;default-lease-time 600;
max-lease-time 7200;# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.#subnet 10.152.187.0 netmask 255.255.255.0 {
#}# This is a very basic subnet declaration.
# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.# A slightly different configuration for an internal subnet.
subnet 192.168.118.0 netmask 255.255.255.0 {range 192.168.118.140 192.168.118.180;option domain-name-servers 114.114.114.114;option routers 192.168.118.2;next-server 192.168.118.134;filename "pxelinux.0";
}

當需要安裝的主機在獲取到了IP地址,之后,會通過tftp到192.168.118.134這個主機去找pxelinux.0引導程序。?

以上DHCP就配置好了,在啟動之前需要關閉VMware的DHCP功能,選擇虛擬網絡編輯器

?找到118網段的網卡,關閉DHCP

啟動dhcpd

systemctl enable --now dhcpd

以上就全部配置好了,現在進行測試

測試

先創建一臺虛擬機殼子,直接移除掉CD/DVD,這一步可以不做,為了凸顯效果,我直接移除了

右擊新創建的虛擬機,點擊"打開電源時進入固件"

選擇從網絡啟動,使用shift加+將選項向上移動。之后保存退出

?然后在Exit選擇Exiting Saving?Changes退出即可。正在自動部署

?等待安裝好了之后,重復上面的步驟把我們的從網絡啟動改回到從硬件啟動。進入到"打開電源時進入固件",然后 選擇Hard Drive硬件啟動,再次啟動之后就是我們定制好的系統了

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70683.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70683.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70683.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么合并主從分支,要注意什么

在 Git 中合并主從分支&#xff08;例如將 feature 分支合并到 main 分支&#xff09;是一個常見操作。以下是具體步驟和注意事項&#xff1a; 合并分支的步驟 切換到主分支 git checkout main確保當前在 main 分支。 拉取最新代碼 git pull origin main確保 main 分支是最…

Java數據結構第十二期:走進二叉樹的奇妙世界(一)

專欄&#xff1a;數據結構(Java版) 個人主頁&#xff1a;手握風云 目錄 一、樹型結構 1.1. 樹的定義 1.2. 樹的基本概念 1.3. 樹的表示形式 二、二叉樹 2.1. 概念 2.2. 兩種特殊的二叉樹 2.3. 二叉樹的性質 2.4. 二叉樹的存儲 三、二叉樹的基本操作 一、樹型結構 1.…

匹配算法:向下就近原則,向下沒有就向上

匹配算法&#xff1a;向下就近原則&#xff0c;向下沒有就向上 實現方式一實現方式二總結 實現方式一 private static List<Integer> findMatches(List<Integer> sourceList, List<Integer> searchValues) {List<Integer> sortedList sourceList.stre…

基于 Python Django 的校園互助平臺(附源碼,文檔)

博主介紹&#xff1a;?Java徐師兄、7年大廠程序員經歷。全網粉絲13w、csdn博客專家、掘金/華為云等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&#x1f3fb; 不…

IP地址 vs 域名:分布式系統中的服務尋址之爭

在分布式系統中&#xff0c;服務之間的通信是核心問題之一。如何高效、穩定地找到目標服務&#xff0c;是每個開發者都需要面對的挑戰。常見的服務尋址方式有兩種&#xff1a;IP地址 和 域名。這兩種方式各有優劣&#xff0c;適用于不同的場景。本文將從性能、穩定性、動態性、…

【技術筆記】Cadence 創建元器件 Pin 引腳的創建與設置

【技術筆記】Cadence 創建元器件 Pin 引腳設置 一、管腳 Pin 放置方式1. 直接放置&#xff08;快捷鍵【Shift】【G】&#xff09;2. 按照Pin陣列放置引腳&#xff08;快捷鍵【Shift】【J】&#xff09;3. 通過Excel表格創建元器件 二、引腳屬性設置1. 創建Pin設置&#xff0c;E…

java面試場景問題

還在補充&#xff0c;這幾天工作忙&#xff0c;閑了會把答案附上去&#xff0c;也歡迎各位大佬評論區討論 1.不用分布式鎖如何防重復提交 方法 1&#xff1a;基于唯一請求 ID&#xff08;冪等 Token&#xff09; 思路&#xff1a;前端生成 一個唯一的 requestId&#xff08;…

Windows11安裝GPU版本Pytorch2.6教程

1: 準備工作 針對已經安裝好的Windows11系統&#xff0c;先檢查Nvidia驅動和使用的CUDA版本情況。先打開Windows PowerShell&#xff0c;通過nvidia-smi命令查看GPU的情況&#xff0c;結果如下圖1所示&#xff0c;從結果中可知使用的CUDA版本為12.8。 圖1&#xff1a;檢測安裝…

深入了解Text2SQL開源項目(Chat2DB、SQL Chat 、Wren AI 、Vanna)

深入了解Text2SQL開源項目&#xff08;Chat2DB、SQL Chat 、Wren AI 、Vanna&#xff09; 前言 1.Chat2DB2.SQL Chat3.Wren AI4.Vanna 前言 在數據驅動決策的時代&#xff0c;將自然語言查詢轉化為結構化查詢語言&#xff08;SQL&#xff09;的能力變得日益重要。無論是小型…

go 環境準備

配置路徑&#xff1a; GOROOT&#xff1a;D:\GoGOPATH&#xff1a;go的工作目錄 D:\workspacego 驗證版本&#xff1a;go version 配置第三方倉庫&#xff1a; GO111MODULE&#xff1a;開啟mod模式GOPROXY&#xff1a;go語言三方庫地址GOSUMDB&#xff1a;go語言軟件包的M…

Qt/C++項目積累:3.日志管理系統 - 3.1 項目介紹

在實際工程項目中&#xff0c;日志系統無疑是比較重要地分析問題的手段&#xff0c;常用的一般是將其寫入到日志文件中&#xff0c;或者寫入數據庫文件&#xff0c;進行分析&#xff0c;而工程人員或者開發人員需要實時查看日志&#xff0c;可能不太方便&#xff0c;于是就需要…

netty十八羅漢之——挖耳羅漢(Decoder)

佛教中除不聽各種淫邪聲音之外&#xff0c;更不可聽別人的秘密。因他論耳根最到家&#xff0c;故取挖耳之形&#xff0c;以示耳根清凈。 來看看netty的核心組件解碼器Decoder Decoder的作用半包&#xff0c;粘包問題從模板和裝飾器模式看Decoder解碼原理 1.Decoder作用 最根本…

51單片機學習之旅——定時器

打開軟件 1與其它等于其它&#xff0c;0與其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000進行與操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定時器1&#xff0c;低四位定時器0 TMODTMOD|0x01;//0x010000 0…

內容中臺重構智能服務:人工智能技術驅動精準決策

內容概要 現代企業數字化轉型進程中&#xff0c;內容中臺與人工智能技術的深度融合正在重構智能服務的基礎架構。通過整合自然語言處理、知識圖譜構建與深度學習算法三大技術模塊&#xff0c;該架構實現了從數據采集到決策輸出的全鏈路智能化。在數據層&#xff0c;系統可對接…

【redis】redis內存管理,過期策略與淘汰策略

一&#xff1a;Redis 的過期刪除策略及處理流程如下&#xff1a; 1. 過期刪除策略 Redis 通過以下兩種策略刪除過期鍵&#xff1a; 1.1 惰性刪除 觸發時機&#xff1a;當客戶端訪問某個鍵時&#xff0c;Redis 會檢查該鍵是否過期。執行流程&#xff1a; 客戶端請求訪問鍵。…

tp6上傳文件大小超過了最大值+驗證文件上傳大小和格式函數

問題&#xff1a; 最近用tp6的文件上傳方法上傳文件時報文件過大錯誤。如下所示&#xff1a; $file $this->request->file(file);{"code": 1,"msg": "上傳文件大小超過了最大值&#xff01;","data": {"code": 1,&q…

Kreuzberg:本地OCR+多格式解析!Kreuzberg如何用Python暴力提取30+文檔格式?程序員看完直呼內行!

嗨&#xff0c;大家好&#xff0c;我是小華同學&#xff0c;關注我們獲得“最新、最全、最優質”開源項目和高效工作學習方法 我們經常需要從各種不同類型的文檔中提取文本內容&#xff0c;無論是辦公文檔、圖像還是PDF文件。而Kreuzberg這個Python庫的出現&#xff0c;為我們提…

Windows程序設計29:對話框之間的數據傳遞

文章目錄 前言一、父子對話框之間的數據傳遞1.父窗口獲取子窗口數據2.子窗口獲取父窗口數據 二、類外函數調用窗口的操作1.全局變量方式2.參數傳遞方式 總結 前言 Windows程序設計29&#xff1a;對話框之間的數據傳遞。 在Windows程序設計28&#xff1a;MFC模態與非模態對話框…

【C語言】第八期——指針

目錄 1 初始指針 2 獲取變量的地址 3 定義指針變量、取地址、取值 3.1 定義指針變量 3.2 取地址、取值 4 對指針變量進行讀寫操作 5 指針變量作為函數參數 6 數組與指針 6.1 指針元素指向數組 6.2 指針加減運算&#xff08;了解&#xff09; 6.2.1 指針加減具體數字…

為 Power Automate 注冊 Adobe PDF Services

前言 最近&#xff0c;再測試如何將HTML轉換成PDF&#xff0c;然后發現Adobe有一個免費的操作可以用&#xff0c;好開心&#xff0c;趕緊注冊一下。 正文 1.先注冊一個賬號&#xff0c;然后登錄到Adobe Developer 注冊鏈接&#xff1a;https://www.adobe.com/go/getstarted_pow…