云計算【第一階段(31)】PXE高效批量網絡裝機

一、系統安裝

1.1、系統裝機的三種引導方式

1. 硬盤
2. 光驅( u 盤)
3. 網絡啟動 pxe

1.2、系統安裝過程

  • 加載boot loader

Boot Loader 是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。

  • 加載啟動安裝菜單

在加載了Boot Loader之后,用戶通常會看到一個啟動安裝菜單,允許用戶選擇不同的啟動選項,如進入安裝程序、進入安全模式等。這個菜單可能是由Boot Loader提供的,也可能是由安裝程序的一部分預先準備的

  • 加載內核和initrd系統(文件才能使用文件)
  • 加載根系統() 運行anaconda的安裝向導

根文件系統包含了操作系統運行所需的所有文件和目錄。

某些Linux發行版的安裝過程中,可能會使用到類似Anaconda的安裝向導來配置系統環境。

1.3、Linux安裝光盤的安裝相關文件

在系統光盤的 isolinux 目錄下有和安裝相關的文件
  • boot.cat: 相當于grub的第一階段
  • isolinux.bin:光盤引導程序,在mkisofs的選項中需要明確給出文件路徑,這個文件屬于 SYSLINUX項目
  • isolinux.cfg:啟動菜單的配置文件,當光盤啟動后(即運行isolinux.bin),會自動去找 isolinux.cfg文件
  • vesamenu.c32:是光盤啟動后的啟動菜單圖形界面,也屬于SYSLINUX項目,menu.c32提供純文本的菜單
  • memtest:內存檢測程序
  • splash.png:光盤啟動菜單界面的背景圖
  • vmlinuz:是內核映像
  • initrd.imgramfs文件(精簡版的linux系統,文件系統驅動等)

二、PXE 原理和概念

2.1、PXE簡介

PXE(Preboot eXecution Environment,預啟動執行環境)技術的網絡裝機方法。
PXE 是由 Intel 公司開發的網絡引導技術,工作在 Client/Server 模式。

允許客戶機通過網絡從遠程服務器上下載引導鏡像,并加載安裝文件或者整個操作系統。pxe是通過網卡引導啟動。

若要搭建PXE網絡體系,必須要滿足一下幾個前提條件:

客戶機的網卡支持PXE協議(集成BOOTROM芯片),且主板支持網絡引導;

網卡支持,bios支持
網絡中有一臺DHCP服務器以便于為客戶機自動分配IP地址、指定引導文件位置;
服務器通過TFTP(簡單文件傳輸協議)提供引導鏡像文件的下載。

PXE 嚴格來說并不是一種安裝方式,而是一種引導的方式

進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協議使計算機可以通過網絡啟動。

協議分為 client 和 server 端,PXE client 在網卡的 ROM 中,當計算機引導時,BIOS 把 PXE?client 調入內存執行,由 PXE client 將放置在遠端的文件通過網絡下載到本地運行。
運行 PXE 協議需要設置 DHCP 服務器 和 TFTP 服務器。DHCP 服務器用來給 PXE client(將
要安裝系統的主機)分配一個 IP 地址,由于是給 PXE client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。
此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協議到 TFTP Server 上下載所需的文件。

2.2、PXE優點

規模化:同時裝配多臺服務器;?
自動化:安裝系統、配置各種服務;?
遠程實現:不需要光盤、U 盤等安裝介質。

2.3、使用PXE需要的服務

  • dhcp:必須有dhcp服務分配ip,裸機無ip地址。網卡功能,自動獲取ip地址,配置dhcp時告訴tftp服務器地址給裸機客戶端。
  • TFTP:UDP協議,通過此協議將需要的文件下載到網卡,網卡自帶功能。因為網卡不支持ftp。tFtp ?69
  • FTP:裝軟件包時數據過大,tftp不能保證傳輸。
  • SYSLINUX-EXTLINUX.X86_64:小型的grub引導程序。
  • SYSTEM-CONFIG-KICKSTART:KICKSTART無人值守安裝
    ?

2.4、實現過程

?1.PXE客戶機(需要安裝的機器)發出DHCP請求,向DHCP服務器申請IP地址。

?2.DHCP服務器響應PXE客戶機的請求,

? a.自動從IP地址池中分配一個IP地址給PXE客戶機,
? b.并且告知PXE客戶機:TFTP服務器的IP地址

3.PXE客戶機向TFTP服務器發起獲取pxelinux.0引導程序文件的請求。

默認在TFTP共享目錄/var/lib/tftpboot/下】

?4.TFTP服務器響應PXE客戶機的請求,將其共享的pxelinux.0文件傳輸給PXE客戶機。


?5.PXE客戶機通過網絡來啟動到系統安裝主界面。


?6.PXE客戶機向文件共享服務器(ftp、http、nfs等)發起獲取centos或windows系統安裝文件的請求。
?7.文件共享服務響應PXE客戶機的請求,將共享的系統安裝文件傳輸給PXE客戶機。
?8.PXE客戶機進入到安裝提示向導界面,用戶需要手動來完成系統安裝的操作。

三、PXE批量部署

PXE服務器192.168.77.79
客戶端未安裝任何系統(裸機)

首先下載四個服務配置

yum install tftp-server vsftpd syslinux dhcp -y

網卡ens37

3.1、安裝并啟用 DHCP 服務

將配置文件模板復制到dhcp目錄下

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

編輯

vim /etc/dhcp/dhcpd.conf

subnet 192.168.77.0 netmask 255.255.255.0 {range 192.168.77.100  192.168.77.200;option routers 192.168.77.2;next-server 192.168.77.79;filename "pxelinux.0";
}

systemctl start dhcpd

systemctl enable dhcpd

3.2、安裝并啟用 TFTP 服務

TFTP:(Trivial File Transfer Protocol)是一個小而易于實現的文件傳送協議。TFTP是基于UDP數據報,需要有自己的差錯改正措施。TFTP只支持文件傳輸,不支持交互,沒有龐大的命令集。也沒有目錄列表功能,以及不能對用戶進行身份鑒別。但它的代碼所占內存較小,不需要硬盤就可以固化TFTP代碼,很適合較小的計算機和特殊用途的設備。

1.需要xinetd配置

vim /etc/xinetd.d/tftp

tftp被xinet所托管,xinetd默認沒有安裝 配置文件,xinetd是新一代的網絡守護進程服務程序,又叫超級Internet服務器

yum install xinetd -y

2.需要pxelinux.0引導程序

syslinux 使用引導程序文件 放到tfpt的根目錄下,系統引導

pxelinux.0是個二進制文件,主要作用相當于一個系統安裝步驟的指引,引導客戶端如何安裝系統

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

注,只有安裝了 system-config-kickstart 軟件包,才會有/usr/share/syslinux/目錄及目錄中的文件

3.需要系統初始化文件和內核文件

切換到有鏡像的文件(昨天拷貝的,要不就掛載)

mount /dev/cdrom /mnt

cd /mnt/images/pxeboot/

拷貝系統初始化文件 內核文件 ,因為要裝機

cp initrd.img vmlinuz /var/lib/tftpboot/

systemctl start xinetd

systemctl enable xinetd

systemctl start tftp

systemctl enable tftp

4.創建啟動菜單文件default

至于為什么要是/var/lib/tftpboot/pxelinux.cfg/default文件,因為是由pxelinux.0這個文件決定好的

先創建目錄而非文件雖然是以.cfg結尾

創建mkdir /var/lib/tftpboot/pxelinux.cfg

cd /var/lib/tftpboot/pxelinux.cfg

vim default

內容(后面需要改,1變0默認無人值守安裝)

default auto //指定默認入口名稱 ,對應下面的label auto
prompt 1 //設置是否等待用戶選擇,1 表示等待用戶控制,0表示不等待用戶控制,安裝時會出現boot:如果按回車表示選擇auto模式label auto   //默認的圖形安裝kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7    //method必須指定網絡路徑label linux text    //文本安裝模式,出現boot:時輸入linux textkernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue    //救援模式,出現boot:時輸入linux rescuekernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

3.3、安裝ftp服務

準備 CentOS 7 安裝源

yum -y install vsftpd

mount /dev/cdrom /mnt

mkdir /var/ftp/centos7

cp -rf /mnt/* /var/ftp/centos7 #將鏡像復制其中

systemctl start vsftpd

最后

重新(記得關閉防火墻和增強)

systemctl start dhcpd

systemctl start tftp

systemctl start vsftpd

systemctl start xinetd

四、kickstart 無人值守安裝

4.1、kickstart概念

KickStart 是一種無人職守安裝方式。KickStart 的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,并生成一個名為 ks.cfg 的文件;在其后的安裝過程中(不只局限于生成 KickStart 安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找 KickStart 生成的文件,當找到合適的參數時,就采用找到的參數,當沒有找到合適的參數時,才需要安裝者手工干預。
這樣,如果 KickStart 文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取 ks.cfg 文件,然后去忙自己的事情。等安裝完畢,安裝程序會根據 ks.cfg 中設置的重啟選項來重啟系統,并結束安裝。

4.2、部署過程

yum install system-config-kickstart -y

或者

或者

網卡

安裝后腳本的運行,害怕沒有網,用ftp

mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo "[local]
name=local
baseurl=ftp://192.168.77.79/centos7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo

保存,自動生成ks.cfg(不要改名字)應答文件

檢查

/var/ftp/ks.cfg文本內容

可選則性添加軟件包

添加至最后%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony%end

配置解讀表和內容

kickstart的生成應答文件ks.cfg主要包括三個部分:命令段,程序包段,腳本段

Kickstart部分

子項/命令

描述

命令段

keyboard

設定鍵盤類型

lang

設置系統語言

zerombr

清除MBR(主引導記錄)

clearpart

清除所有分區或指定分區

part

創建新分區

rootpw

設置root用戶的密碼

timezone

設置系統時區

text

使用文本模式安裝界面

network

配置網絡接口

firewall

配置防火墻設置

selinux

啟用/禁用SELinux

reboot

安裝完成后自動重啟

安裝服務

dhcp, tftp-server, vsftp, syslinux

安裝網絡服務和引導加載器

修改配置文件

dhcp

設置next-server IP 和filename

tftp-server

修改/etc/xinetd.d/tftp配置,設置服務目錄

開啟服務

確保dhcp, tftp-server, vsftp等服務運行

user

安裝后創建新用戶

url

指定安裝源(如網絡倉庫)

程序包段

%packages

開始程序包列表

@^environment group

安裝環境包組

@group_name

安裝特定包組

package

安裝單個包

-package

不安裝特定包

%end

結束程序包列表

腳本段

%pre

安裝前的腳本,如網絡配置

%post

安裝后的腳本,如系統配置、用戶設置等

# Install OS instead of upgrade
install                 //全新安裝
# Keyboard layouts
keyboard 'us'  //英文鍵盤
# Root password
rootpw --iscrypted $1$9Rn8W7vF$npbKh8CeIbTxjwHUlcW4n0    //root密碼
# Use network installation
url --url="ftp://192.168.100.100/centos7"  //網絡安裝路徑
# System language
lang en_US       //系統語言,zh_CN表示中文
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text       //字符模式安裝,graphical表示圖形化安裝
firstboot --disable
# SELinux configuration
selinux --disabled         //禁用selinux
# Firewall configuration
firewall --disabled        //禁用防火墻
# Network information
network  --bootproto=dhcp --device=ens33        //網卡配置
# Reboot after installation
reboot               //安裝完重啟
# System timezone
timezone Asia/Shanghai                  // 時區:上海
# System bootloader configuration
bootloader --location=mbr                //mbr引導 
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel                //清除所有分區信息和初始化分區標簽
# Disk partitioning information
part / --fstype="xfs" --grow --size=1            //分區配置
part swap --fstype="swap" --size=2048
part /boot --fstype="xfs" --size=300最小安裝%packages
@base                    //安裝基礎軟件包
@^gnome-desktop-environment     //安裝桌面環境
%end
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$d7Ivo70y$R6meNEYHLhc6/gb8OeLOd1
# System language
lang zh_CN
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled# Use NFS installation media
nfs --server=ftp://192.168.77.79 --dir=centos7
# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens33
# Halt after installation
halt
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="xfs" --grow --size=1%post --interpreter=/bin/bash
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo "[local]
name=local
baseurl=ftp://192.168.77.79/centos7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo
%end
%packages
@base
@^gnome-desktop-environment
%end

重新修改引導菜單文件,添加 ks 引導參數

vim /var/lib/tftpboot/pxelinux.cfg/default

prompt 0 值為“0”時表示自動執行ks.cfg文件(無人值守,默認)、為“1”時表示手動配置(有人值守)

default auto
timeout=600
label autokernel vmlinuzappend initrd=initrd.img method=ftp://192.168.77.79/centos7  ks=ftp://192.168.77.79/ks.cfglabel linux textkernel vmlinuzappend text initrd=initrd.img method=ftp://192.168.77.79/centos7  ks=ftp://192.168.77.79/ks.cfglabel linux rescuekernel vmlinuzappend rescue initrd=initrd.img method=ftp://192.168.77.79/centos7  ks=ftp://192.168.77.79/ks.cfg

五、

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

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

相關文章

【CSS in Depth 2 精譯】3.1.2 邏輯屬性 + 3.1.3 用好邏輯屬性的簡寫形式

當前內容所在位置(可進入專欄查看其他譯好的章節內容) 第一章 層疊、優先級與繼承(已完結) 1.1 層疊1.2 繼承1.3 特殊值1.4 簡寫屬性1.5 CSS 漸進式增強技術1.6 本章小結 第二章 相對單位(已完結) 2.1 相對…

深入探討:CPU問題的深度分析與調優

引言 你是否曾經遇到過這樣的情況:系統運行突然變慢,用戶抱怨不斷,檢查后發現CPU使用率居高不下?這時候,你會如何解決?本文將詳細解析CPU問題的分析與調優方法,幫助你在面對類似問題時游刃有余。 案例分析:一次CPU性能瓶頸的解決過程 某知名互聯網公司在一次促銷活動…

《Python數據科學之一:初見數據科學與環境》

《Python數據科學之一:初見數據科學與環境》 歡迎來到“Python數據科學”系列的第一篇文章。在這個系列中,我們將通過Python的鏡頭,深入探索數據科學的豐富世界。首先,讓我們設置和理解數據科學的基本概念以及在開始任何數據科學項…

實變函數精解【4】

文章目錄 說明點集與測度可數集定義性質示例與有限集的關系應用 可列集定義種類不可列集性質應用與意義 有限集性質示例與無限集的區別應用 可數集(Countable set)和可列集(Countably infinite set 或 Enumerable set)可數集可列集…

怎樣把pptx課件轉換成word文檔

如果你還沒有安裝python-pptx和python-docx,請先運行以下命令: pip install python-pptx python-docx from pptx import Presentation from docx import Document import re# 函數:清理文本,移除特殊字符和控制字符 def clean…

每日Attention學習11——Lightweight Dilated Bottleneck

模塊出處 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模塊名稱 Lightweight Dilated Bottleneck (LDB) 模塊作用 改進的編碼器塊 模塊結構 模塊代碼 import torch import torch.nn as nn import to…

qt 添加一個圖片控件

在Qt中,要添加一個圖片控件,你通常會使用QLabel或者QGraphicsView來顯示圖片。下面是使用QLabel來顯示圖片的一種方法: 使用 QLabel 顯示圖片 在Qt Designer中添加QLabel 打開你的Qt Designer。從工具箱中找到QLabel控件,并將其拖…

C#如何進行深度學習對行人進行識別?

C#通常不是用于深度學習的主要語言,但是通過一些庫和框架,你可以輕松地在C#中實現深度學習。以下是使用C#進行深度學習的一些更詳細的步驟: 選擇合適的庫: ML.NET:這是微軟推出的一個機器學習庫,它很容易集成到.NET應用程序中。ML.NET支持廣泛的機器學習任務,包括深度學…

使用DeepWalk 和Word2Vec實現單詞Embedding

0、準備“邊”數據集Wiki_edgelist import pandas as pddf pd.read_csv(./data/wiki/Wiki_edgelist.txt, sep , headerNone, names["source", "target"]) df.head() 1、讀入 起點-終點 邊數據,構建圖 # 1、讀入 起點-終點 邊數據&#xff0c…

GIS就業相關問題快問快答

目錄 前言1.現在處于經濟下行期,GIS就業崗位是否減少了?2.我未來的打算是進體制內研發崗,這方面需要掌握哪些技能呢?3.GIS前端需要掌握哪些知識?4.GIS后端需要掌握哪些知識?5.不論是前端還是后端&#xff0…

編程語言都是哪些人開發出來的?為什么都是國外較小國家的人

編程語言都是哪些人開發出來的? 編程語言的開發者通常是來自計算機科學、軟件工程、數學、物理學等領域的專家、學者和工程師。這些開發者具備深厚的編程技能、算法知識、系統設計能力以及創新思維,他們致力于創造出能夠解決特定問題或滿足特定需求的編…

Docker入門(清晰認識)

為什么學習Docker? 再學完linux后,我們需要遠程對Linux虛擬機下載一些軟件,如果在Linux里直接用命令下載軟件會十分麻煩,所以我們需要通過使用Docker將軟件直接下載到Docker中,這樣更方便下載和卸載等操作。 一張圖弄…

javaScript的面試重點--預解析

目錄 一.前言 二.預解析案例 一.前言 關于預解析,我們通過今天學習就能夠知道解析器運行JS分為哪兩步;能夠說出變量提升的步驟和運行過程;能夠說出函數提升的步驟和運行過程。 二.預解析案例 預解析,簡而言之,也就是…

7.13實訓日志

上午 學習網絡安全的過程中,我們深入了解了網絡的不同層面和技術,從表層網絡到深網再到暗網,以及涉及的產業分類和技術工具。這些知識不僅幫助我們理解網絡的復雜性,還揭示了如何應對和防范各種網絡威脅。 首先,我們…

簡易秒表的實現

目錄 描述 輸入描述: 輸出描述: 參考代碼 描述 請編寫一個模塊,實現簡易秒表的功能:具有兩個輸出,當輸出端口second從1-60循環計數,每當second計數到60,輸出端口minute加一,一直…

當在多線程環境中使用 C++進行編程時,怎樣確保線程安全以及如何處理線程之間的同步和通信?

在C中確保線程安全性和處理線程之間的同步和通信有多種方法。下面是一些常用的技術和技巧: 互斥鎖:使用互斥鎖可以確保只有一個線程可以訪問共享資源。在訪問共享資源之前獲取鎖,在完成后釋放鎖。這可以防止多個線程同時訪問同一份數據&#…

007-端口隔離

端口隔離配置 端口隔離簡介 為了實現報文之間的二層隔離,可以將不同的端口加入不同的VLAN,但會浪費有限的VLAN資源。采用端口隔離特性,可以實現同一VLAN內端口之間的隔離。 設備支持以下方式進行端口隔離: 基于隔離組的端口隔…

中介子方程五十七

XXFXXaXnXaXXαXLXyXXWXuXeXKXXiXyXΣXXΣXXVXuXhXXWXηXXiXhXXpXiXXpXXbXXiXOXWXyXkXXeXpXXαXXpXeXXkXyXWXOXiXXbXXpXXiXpXXhXiXXηXWXXhXuXVXXΣXXΣXyXiXXKXeXuXWXXyXLXαXXaXnXaXXFXXaXnXaXXαXLXyXXWXuXeXKXXiXyXΣXXΣXXVXuXhXXWXηXXiXhXXpXiXXpXXbXXiXOXWXyXkXXeXpXXα…

理解JavaScript中的對象傳遞與賦值操作

在JavaScript中,對象傳遞和賦值操作是兩個非常重要的概念。它們在日常開發中扮演著關鍵角色,但也常常會讓人感到困惑。本文將通過兩個簡單的例子,更好地理解它們的區別和實際應用。 示例代碼1:修改對象屬性 我們先來看第一段示例…

【數據結構】順序表的應用

目錄 一.引言 二.順序表概念 三.順序表的實現 1.定義順序表 2.順序表初始化 ?編輯 3.檢查空間,如果滿了,進行增容 4.順序表尾插 5.順序表尾刪 6.順序表頭插 7.順序表頭刪 ?編輯 8.順序表查找 9.順序表在pos位置插入x 10.順序表刪…