深入了解 PXE:定義、架構、原理、應用場景及常見命令體系

引言

PXE(Preboot Execution Environment,預啟動執行環境)是一種允許計算機通過網絡啟動操作系統而無需本地存儲設備的技術。本文將詳細介紹 PXE 的定義、架構、原理、應用場景及常見命令體系,特別是以 CentOS 為例,展示如何配置和使用 PXE。

一、PXE 的定義

? ? ? ?PXE 是一種基于網絡的啟動技術,最初由 Intel 開發,旨在提供一種在沒有本地存儲設備的情況下通過網絡啟動操作系統的標準。PXE 集成在計算機的 BIOS 或 UEFI 中,允許計算機從網絡服務器下載并啟動操作系統或其他軟件。

1.1 背景

? ? ? ?隨著計算機網絡的發展和虛擬化技術的普及,PXE 成為一種流行的啟動方式。它廣泛應用于無盤工作站、服務器部署和系統恢復等場景,簡化了大規模系統管理和維護的復雜性。

二、PXE 的架構

? ? ? ?PXE 的架構包括客戶端和服務器兩部分,依賴于多種網絡協議和服務。以下是 PXE 架構的主要組成部分。

2.1 客戶端

? ? ? ?PXE 客戶端是啟用了 PXE 的計算機,通常集成在 BIOS 或 UEFI 中。當計算機啟動時,如果啟用了 PXE,網絡接口卡(NIC)會嘗試通過網絡啟動操作系統。

2.2 服務器

PXE 服務器提供啟動文件和相關服務,通常包括以下組件:

  1. DHCP 服務器:為 PXE 客戶端分配 IP 地址,并提供啟動文件的位置信息。
  2. TFTP 服務器:用于傳輸啟動文件,如 PXE 引導程序和內核鏡像。
  3. HTTP/FTP 服務器:在某些情況下,用于傳輸更大的文件或提供額外服務。
  4. NFS/SMB 服務器:用于提供網絡文件系統,支持 PXE 客戶端訪問操作系統文件。

三、PXE 的工作原理

? ? ? ?PXE 的工作原理涉及多個步驟和網絡協議的協同工作。以下是 PXE 啟動過程的詳細步驟。

3.1 PXE 啟動過程

  1. PXE 客戶端啟動:當計算機啟動時,PXE 客戶端通過 BIOS 或 UEFI 啟動,并向網絡發送 DHCP 請求,尋找 DHCP 服務器。
  2. DHCP 服務器響應:DHCP 服務器響應 DHCP 請求,為客戶端分配 IP 地址,并提供 TFTP 服務器的位置和引導文件名。
  3. 下載引導文件:PXE 客戶端通過 TFTP 下載引導文件,通常是一個小型的 PXE 引導程序(如 pxelinux.0)。
  4. 執行引導文件:PXE 客戶端執行下載的引導文件,該引導文件進一步下載操作系統內核和初始化文件系統。
  5. 啟動操作系統:PXE 客戶端加載內核和初始化文件系統,最終啟動操作系統。

3.2 網絡協議

PXE 啟動過程中涉及多個網絡協議:

  1. DHCP:用于分配 IP 地址和提供 TFTP 服務器信息。
  2. TFTP:用于傳輸引導文件。
  3. HTTP/FTP:用于傳輸更大的文件或提供額外服務(可選)。
  4. NFS/SMB:用于提供網絡文件系統(可選)。

四、PXE 的應用場景

PXE 廣泛應用于各種 IT 環境,以下是一些典型的應用場景。

4.1 無盤工作站

? ? ? ?在教育和科研機構中,無盤工作站通過 PXE 啟動操作系統,從網絡服務器獲取所有需要的文件和應用程序。這樣,系統管理和維護變得更加集中和簡便。

4.2 服務器部署

? ? ? ?在數據中心,PXE 被廣泛用于自動化服務器部署。管理員可以通過 PXE 大規模部署操作系統和應用程序,顯著提高部署效率和一致性。

4.3 系統恢復

? ? ? ?PXE 也被用于系統恢復和應急啟動。當計算機的本地存儲設備故障時,可以通過 PXE 啟動應急操作系統,進行數據恢復和系統修復。

4.4 虛擬化環境

? ? ? ?在虛擬化環境中,PXE 被用于啟動虛擬機,使其可以從網絡加載操作系統和應用程序,簡化虛擬機的管理和配置。

五、PXE 的常見命令體系(以 CentOS 為例)

? ? ? ?PXE 的命令體系主要涉及配置和管理 PXE 服務器和客戶端的命令。以下是一些在 CentOS 上常見的命令和配置步驟。

5.1 DHCP 服務器配置

? ? ? ?在 CentOS 系統中,配置 DHCP 服務器的常用工具是 dhcpd。

安裝 DHCP 服務器

sudo yum install dhcp

配置 DHCP 服務器

編輯 /etc/dhcp/dhcpd.conf 文件,添加以下內容:

subnet 192.168.1.0 netmask 255.255.255.0 {

??? range 192.168.1.100 192.168.1.200;

??? option routers 192.168.1.1;

??? option broadcast-address 192.168.1.255;

??? next-server 192.168.1.10;

??? filename "pxelinux.0";

}

啟動 DHCP 服務器

sudo systemctl start dhcpd

sudo systemctl enable dhcpd

5.2 TFTP 服務器配置

在 CentOS 系統中,配置 TFTP 服務器的常用工具是 tftp-server。

  1. 安裝 TFTP 服務器

sudo yum install tftp-server

  1. 配置 TFTP 服務器 編輯 /etc/xinetd.d/tftp 文件,確保以下內容:

service tftp

{

??? socket_type???? = dgram

??? protocol??????? = udp

??? wait??????????? = yes

??? user??????????? = root

??? server????????? = /usr/sbin/in.tftpd

??? server_args???? = -s /var/lib/tftpboot

??? disable???????? = no

??? per_source????? = 11

??? cps???????????? = 100 2

??? flags?????????? = IPv4

}

  1. 啟動 TFTP 服務器

sudo systemctl start xinetd

sudo systemctl enable xinetd

5.3 配置 PXE 引導程序

在 PXE 服務器上,需要配置引導程序(如 pxelinux.0)和相關文件。

  1. 安裝 syslinux

sudo yum install syslinux

  1. 配置引導程序 將 pxelinux.0 文件復制到 TFTP 服務器目錄中:

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

  1. 創建配置文件 在 TFTP 服務器目錄中創建 pxelinux.cfg 目錄,并在其中創建默認配置文件:

sudo mkdir /var/lib/tftpboot/pxelinux.cfg

sudo nano /var/lib/tftpboot/pxelinux.cfg/default

添加以下內容:

DEFAULT vesamenu.c32

PROMPT 0

TIMEOUT 50

LABEL linux

??? KERNEL vmlinuz

??? APPEND initrd=initrd.img

5.4 NFS 服務器配置

在某些情況下,PXE 客戶端需要從 NFS 服務器加載操作系統文件。

  1. 安裝 NFS 服務器

sudo yum install nfs-utils

  1. 配置 NFS 服務器 編輯 /etc/exports 文件,添加以下內容:

/var/lib/tftpboot 192.168.1.0/24(ro,sync,no_subtree_check)

  1. 啟動 NFS 服務器

sudo systemctl start nfs

sudo systemctl enable nfs

六、PXE 模擬場景操作

以下是一個典型的 PXE 模擬操作場景,展示如何通過 PXE 部署操作系統。

6.1 準備工作

  1. 設置網絡環境
    • 配置一個專用的網絡子網(如 192.168.1.0/24),包括 PXE 服務器和 PXE 客戶端。
    • 確保 PXE 客戶端可以通過網絡訪問 PXE 服務器。
  2. 安裝必要軟件
    • 在 PXE 服務器上安裝 DHCP 服務器、TFTP 服務器和 NFS 服務器。

在這一部分,我們將詳細介紹如何在 CentOS 上配置 PXE 服務器,并通過 PXE 部署一個 CentOS 操作系統。

6.2 配置 PXE 服務器

  1. 配置 DHCP 服務器 首先,我們需要確保 DHCP 服務器正確配置,以便為 PXE 客戶端分配 IP 地址并提供引導文件的位置。

安裝 DHCP 服務器:

sudo yum install dhcp

編輯 /etc/dhcp/dhcpd.conf 文件,添加以下內容:

subnet 192.168.1.0 netmask 255.255.255.0 {

??? range 192.168.1.100 192.168.1.200;

??? option routers 192.168.1.1;

??? option broadcast-address 192.168.1.255;

??? next-server 192.168.1.10; # PXE服務器的IP地址

??? filename "pxelinux.0"; # 引導文件

}

啟動并啟用 DHCP 服務器:

sudo systemctl start dhcpd

sudo systemctl enable dhcpd

  1. 配置 TFTP 服務器 TFTP 服務器用于傳輸引導文件。我們將使用 tftp-server 來配置 TFTP 服務。

安裝 TFTP 服務器:

sudo yum install tftp-server

編輯 /etc/xinetd.d/tftp 文件,確保以下內容:

service tftp

{

??? socket_type???? = dgram

??? protocol??????? = udp

??? wait??????????? = yes

??? user??????????? = root

??? server????????? = /usr/sbin/in.tftpd

??? server_args???? = -s /var/lib/tftpboot

??? disable???????? = no

??? per_source????? = 11

??? cps???????????? = 100 2

??? flags?????????? = IPv4

}

啟動并啟用 TFTP 服務器:

sudo systemctl start xinetd

sudo systemctl enable xinetd

  1. 配置 PXE 引導程序 安裝 syslinux:

sudo yum install syslinux

將 pxelinux.0 文件復制到 TFTP 服務器目錄中:

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

創建 pxelinux.cfg 目錄,并在其中創建默認配置文件:

sudo mkdir /var/lib/tftpboot/pxelinux.cfg

sudo nano /var/lib/tftpboot/pxelinux.cfg/default

添加以下內容:

DEFAULT menu.c32

PROMPT 0

TIMEOUT 300

ONTIMEOUT local

LABEL linux

??? MENU LABEL Install CentOS 7

??? KERNEL vmlinuz

??? APPEND initrd=initrd.img

  1. 配置 NFS 服務器(可選) 在某些情況下,PXE 客戶端需要從 NFS 服務器加載操作系統文件。配置 NFS 服務器如下:

安裝 NFS 服務器:

sudo yum install nfs-utils

編輯 /etc/exports 文件,添加以下內容:

/var/lib/tftpboot 192.168.1.0/24(ro,sync,no_subtree_check)

啟動并啟用 NFS 服務器:

sudo systemctl start nfs

sudo systemctl enable nfs

6.3 準備啟動文件

  1. 下載 CentOS 安裝鏡像 從 CentOS 官方網站下載 CentOS 的 netinstall 鏡像,并將其掛載到 /mnt 目錄:

sudo mount -o loop CentOS-7-x86_64-NetInstall-xxxx.iso /mnt

  1. 復制必要的引導文件 將 vmlinuz 和 initrd.img 文件復制到 TFTP 服務器目錄:

sudo cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/

sudo cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

6.4 配置 PXE 菜單

編輯 default 配置文件,以便 PXE 客戶端可以從 TFTP 服務器下載并啟動 CentOS 安裝程序:

DEFAULT menu.c32

PROMPT 0

TIMEOUT 300

ONTIMEOUT local

LABEL linux

??? MENU LABEL Install CentOS 7

??? KERNEL vmlinuz

??? APPEND initrd=initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/

6.5 測試 PXE 環境

  1. 啟動 PXE 客戶端 將一臺計算機配置為 PXE 啟動,并連接到同一網絡子網。啟動計算機并進入 BIOS 或 UEFI 設置,選擇 PXE 啟動。
  2. 驗證 PXE 啟動過程 觀察 PXE 客戶端的啟動過程,確認其能通過 DHCP 獲取 IP 地址,并從 TFTP 服務器下載引導文件和啟動 CentOS 安裝程序。

七、總結

? ? ? ?PXE(Preboot Execution Environment)是一種強大的網絡啟動技術,允許計算機通過網絡啟動操作系統而無需本地存儲設備。通過本文的介紹,我們詳細了解了 PXE 的定義、架構、原理、應用場景及常見命令體系,并通過具體的操作步驟展示了如何在 CentOS 上配置和使用 PXE。

? ? ? ?PXE 的應用場景非常廣泛,尤其是在無盤工作站、服務器部署和系統恢復等領域中,能夠極大地簡化系統管理和維護的復雜性。通過配置 DHCP 服務器、TFTP 服務器和 PXE 引導程序,我們可以輕松實現大規模的網絡啟動和操作系統部署。

? ? ? ?希望本文能幫助您更好地理解和應用 PXE 技術,提高您的系統管理和維護效率。如果您有任何問題或建議,歡迎在評論區留言討論。

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

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

相關文章

【MindSpore學習打卡】應用實踐-計算機視覺-深入解析 Vision Transformer(ViT):從原理到實踐

在近年來的深度學習領域,Transformer模型憑借其在自然語言處理(NLP)中的卓越表現,迅速成為研究熱點。尤其是基于自注意力(Self-Attention)機制的模型,更是推動了NLP的飛速發展。然而&#xff0c…

歐拉openEuler 22.03 LTS-部署k8sv1.03.1

1.設置ip # vi /etc/sysconfig/network-scripts/ifcfg-ens32 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno #IPV6INITyes #IPV6_AUTOCONFyes #IPV6_DEFROUTEyes #IPV6_FAILURE_FATALno #IPV6_ADDR_GEN_MODEeui64 NAMEens1…

物聯網數據解析實戰:掌握CJSON庫核心函數,精準處理JSON數據

物聯網數據解析實戰:掌握CJSON庫核心函數,精準處理JSON數據 CJSON庫是一個輕量級的JSON解析庫,專為C語言設計,適用于嵌入式系統和物聯網應用。它提供了簡單易用的API,使得開發者能夠輕松地解析和生成JSON數據。在本教…

部署Gunicorn + Flask應用到Docker

部署Gunicorn Flask應用到Docker中涉及幾個步驟,下面是一個基本的指南: 1. 創建Flask應用 首先,確保你有一個可用的Flask應用。這里有一個簡單的示例: from flask import Flask app Flask(__name__)app.route(/) def hello_w…

pandas,dataframe使用筆記

目錄 新建一個dataframe不帶列名帶列名 dataframe添加一行內容查看dataframe某列的數據類型新建dataframe時設置了列名,則數據類型為object dataframe的保存保存為csv文件保存為excel文件 dataframe屬于pandas 新建一個dataframe 不帶列名 df pd.DataFrame() 帶…

GuLi商城-商品服務-API-品牌管理-效果優化與快速顯示開關

<template><div class"mod-config"><el-form :inline"true" :model"dataForm" keyup.enter.native"getDataList()"><el-form-item><el-input v-model"dataForm.key" placeholder"參數名&qu…

華為交換機 LACP協議

華為交換機支持的LACP協議&#xff0c;即鏈路聚合控制協議&#xff0c;是一種基于IEEE 802.3ad標準的動態鏈路聚合與解聚合的協議。它允許設備根據自身配置自動形成聚合鏈路并啟動聚合鏈路收發數據。 在LACP模式下&#xff0c;鏈路聚合組能夠自動調整鏈路聚合&#xff0c;維護…

java集合(1)

目錄 一.集合概述 二. 集合體系概述 1. Collection接口 1.1 List接口 1.2 Set接口 2. Map接口 三. ArrayList 1.ArrayList常用方法 2.ArrayList遍歷 2.1 for循環 2.2 增強for循環 2.3 迭代器遍歷 一.集合概述 我們經常需要存儲一些數據類型相同的元素,之前我們學過…

Java 基礎語法

Java 是一種面向對象的編程語言&#xff0c;具有簡單、健壯、安全、跨平臺等特點。下面是Java基礎語法的詳細介紹&#xff0c;并附帶一些示例說明&#xff1a; ### 1. 變量和數據類型 Java 中的變量用于存儲數據&#xff0c;必須先聲明后使用。Java 的數據類型分為基本數據類…

C++ 仿QT信號槽二

// 實現原理 // 每個signal映射到bitset位&#xff0c;全集 // 每個slot做為signal的bitset子集 // signal全集觸發&#xff0c;標志位有效 // flip將觸發事件隊列前置 // slot檢測智能指針全集觸發的標志位&#xff0c;主動運行子集綁定的函數 // 下一幀對bitset全集進行觸發清…

【C++】 解決 C++ 語言報錯:Segmentation Fault

文章目錄 引言 段錯誤&#xff08;Segmentation Fault&#xff09;是 C 編程中常見且令人頭疼的錯誤之一。段錯誤通常發生在程序試圖訪問未被允許的內存區域時&#xff0c;導致程序崩潰。本文將深入探討段錯誤的產生原因、檢測方法及其預防和解決方案&#xff0c;幫助開發者在…

Lex Fridman Podcast with Andrej Karpathy

我不太喜歡Lex Fridman的聲音&#xff0c;總覺得那讓人昏昏欲睡&#xff0c; 但無奈他采訪的人都太大牌了&#xff0c;只能去聽。但是聽著聽著&#xff0c;就會覺得有深度的采訪這些人&#xff0c;似乎也只有他這種由研究員背景的人能干&#xff0c; 另&#xff0c;他提的問題確…

4.2 投影

一、投影和投影矩陣 我們以下面兩個問題開始&#xff0c;問題一是為了展示投影是很容易視覺化的&#xff0c;問題二是關于 “投影矩陣”&#xff08;projection matrices&#xff09;—— 對稱矩陣且 P 2 P P^2P P2P。 b \boldsymbol b b 的投影是 P b P\boldsymbol b Pb。…

android的dump_processe中anon和swap字段的含義是什么?計算進程占用內存大小是否可以用這兩個字段相加?

在Android系統中&#xff0c;dump_processes 命令或類似機制&#xff08;如通過 adb shell dumpsys&#xff09;的輸出中&#xff0c;可能會包含與進程內存使用相關的信息&#xff0c;但通常不直接以 anon 和 swap 作為字段名。不過&#xff0c;基于您的提問&#xff0c;我可以…

嵌入式學習——硬件(Linux內核驅動編程LED、蜂鳴器、按鍵)——day59

1. 編寫LED驅動&#xff08;初始化所有子設備號&#xff09; #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <asm/uaccess.h> #include <asm/io.h>#define GPBCON (0x5…

2024年7月5日 (周五) 葉子游戲新聞

老板鍵工具來喚去: 它可以為常用程序自定義快捷鍵&#xff0c;實現一鍵喚起、一鍵隱藏的 Windows 工具&#xff0c;并且支持窗口動態綁定快捷鍵&#xff08;無需設置自動實現&#xff09;。 卸載工具 HiBitUninstaller: Windows上的軟件卸載工具 《樂高地平線大冒險》為何不登陸…

江漢大學劉春萌同學整理的wifi模塊 上傳mqtt實驗步驟

一.固件燒錄 1.打開安信可官網 2.點擊wifi模組系列的ESP8266 3.點擊各類固件后選擇固件號1471下載 4.打開燒錄工具將下載的二進制文件導入并將后面的起始地址寫為0x00000,下面勾選40mhz QIO 8Mbit點擊start下載即可 二.本地部署mqtt服務器(windows) 1.下載mosquitto后有一個m…

Java并發編程知識整理筆記

目錄 ?1. 什么是線程和進程&#xff1f; 線程與進程有什么區別&#xff1f; 那什么是上下文切換&#xff1f; 進程間怎么通信&#xff1f; 什么是用戶線程和守護線程&#xff1f; 2. 并行和并發的區別&#xff1f; 3. 創建線程的幾種方式&#xff1f; Runnable接口和C…

微博視頻下載

video_urls 獲取xpath://video/src|//video/autoplay # !/usr/bin/python3 # -*- coding:utf-8 -*- """ author: JHC000abcgmail.com file: demo1.py time: 2024/6/3 18:00 desc:""" import os import re import requests from urllib.parse im…

Qt實現流動的管道效果代碼示例

在現代圖形用戶界面&#xff08;GUI&#xff09;應用程序中&#xff0c;動態效果可以顯著增強用戶體驗。本文將介紹如何使用Qt框架實現一個流動的管道效果。我們將通過自定義QWidget來繪制管道&#xff0c;并使用定時器來實現流動效果。 1. 準備工作 首先&#xff0c;確保你已…