九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Network 之十一 詳解 PXE 原理、工作流程、服務(wù)端(Tiny PXE Server、Serva、Ubuntu)搭建

??最近,正在學(xué)習(xí) iPXE 的源代碼,于是開始各種 Google 查找 iPXE 的資料進(jìn)行學(xué)習(xí)。由于之前完全沒有接觸過 PXE,因此從基本概念開始一點(diǎn)點(diǎn)學(xué)習(xí),以下為學(xué)習(xí)中的一些總結(jié)。

背景

??網(wǎng)絡(luò)啟動(dòng)一直都沒有一個(gè)事實(shí)標(biāo)準(zhǔn)。早在 1993 年,網(wǎng)卡就已經(jīng)在其擴(kuò)展卡上包含了啟動(dòng) ROM,每個(gè)擴(kuò)展卡都遵循自己的專有協(xié)議來加載和執(zhí)行引導(dǎo)程序。Jamie Honan 非正式發(fā)布的 “Net Boot Image Proposal” 是標(biāo)準(zhǔn)化的第一次努力,很快兩個(gè)開源項(xiàng)目 Etherboot(1995)和 Netboot(1996)提供了具有可插拔驅(qū)動(dòng)程序支持的通用 ROM 映像。

??與此同時(shí),英特爾從一個(gè)更商業(yè)的角度來研究無磁盤引導(dǎo):它應(yīng)該整合資源,使管理更容易。很快,他們發(fā)布了預(yù)啟動(dòng)執(zhí)行環(huán)境(PXE)規(guī)范,作為其 Wired for Management 的一部分。此后,PXE 逐漸成為了一種廣泛應(yīng)用的規(guī)范,并成為了計(jì)算機(jī)的標(biāo)配。

PXE

??PXE(Preboot eXecution Environment,預(yù)啟動(dòng)執(zhí)行環(huán)境)通常也被稱為 PXE Boot、Network Boot,最初是由 Intel 公司開發(fā)的一種技術(shù),該技術(shù)旨在提供了一種使用網(wǎng)絡(luò)接口(Network Interface)啟動(dòng)計(jì)算機(jī)的機(jī)制。

??原始的 PXE 規(guī)范是由 Intel 和 Systemsoft 于 1999 年 9 月 20 日公布 2.1 版本,至今沒有再更新過。后來,Intel 直接將 PXE 引入到統(tǒng)一可擴(kuò)展固件接口 (UEFI) 標(biāo)準(zhǔn)中,被稱為 PXE Boot。

??PXE 規(guī)范描述了一個(gè)標(biāo)準(zhǔn)化的 客戶端 ? 服務(wù)器 環(huán)境,通信過程使用的是 UDP/IP、DHCP、TFTP 等多個(gè)標(biāo)準(zhǔn)互聯(lián)網(wǎng)協(xié)議。在這個(gè)環(huán)境中,計(jì)算機(jī)啟動(dòng)時(shí)可以通過與服務(wù)器交互,來動(dòng)態(tài)獲取啟動(dòng)需要的資源,從而讓計(jì)算機(jī)的啟動(dòng)可以不依賴本地?cái)?shù)據(jù)存儲(chǔ)設(shè)備(如硬盤)。


??PXE 的主要用途是在新的或出現(xiàn)故障的計(jì)算機(jī)上安裝新的操作系統(tǒng)。最為常見的一個(gè)用途就是批量裝機(jī),大大簡(jiǎn)化計(jì)算機(jī)的大型部署。此外,PXE 還可用于托管故障排除和維護(hù)工具,例如,一個(gè)簡(jiǎn)單的 Linux 發(fā)行版或者 Windows PE,當(dāng)系統(tǒng)無法啟動(dòng)時(shí),可以通過 PE 進(jìn)行維護(hù)。

客戶端

??PXE 客戶端的實(shí)現(xiàn)方法就是在博文 Network 之十 BIOS + MBR、UEFI + GPT、GRUB、BOOTMGR、SYSLINUX 中介紹的 Option ROM 機(jī)制。PXE 客戶端(通常也稱為 PXE 固件)是網(wǎng)卡固件的一部分,被網(wǎng)卡廠商固化在了網(wǎng)卡的 ROM 中。

有些資料中說,也可以在 UEFI 固件中實(shí)現(xiàn) PXE,這個(gè)沒怎么見過

??PXE 固件提供了基本的通用網(wǎng)絡(luò)設(shè)備接口(UNDI)、極簡(jiǎn)的 UDP/IP 堆棧、預(yù)啟動(dòng)(DHCP)客戶端模塊和 TFTP 客戶端等功能模塊。這些功能模塊共同構(gòu)成了 PXE 應(yīng)用程序編程接口(API), 網(wǎng)絡(luò)引導(dǎo)程序(Network Bootstrap Program,NBP )在需要與 PXE 環(huán)境的服務(wù)器對(duì)等端提供的服務(wù)進(jìn)行交互時(shí)使用這些接口。


??最初的 PXE 客戶端固件由英特爾編寫(功能比較單一,支持協(xié)議較少),并且是作為可鏈接的 IA32 目標(biāo)代碼格式模塊免費(fèi)提供的,包含在其產(chǎn)品開發(fā)套件(PDK)中。后來,開源世界也產(chǎn)生了非標(biāo)準(zhǔn)衍生項(xiàng)目(如 gPXE / iPXE),提供開源的 PXE 客戶端固件。

??PXE 客戶端固件與 BIOS 密切相關(guān),可以分為傳統(tǒng) PXE 客戶端 和 EFI PXE 客戶端。傳統(tǒng) PXE 客戶端與傳統(tǒng) BIOS 一起工作,工作在 16 位 8086 的實(shí)地址模式;EFI PXE 客戶端則是工作在 32 位或 64 位的保護(hù)地址模式下。


??傳統(tǒng) Option ROM 代碼生成文件的大小不能太大,BIOS 文件預(yù)留的空間不多(通常是 0xC000 ~ 0xE000)。UEFI Option ROM 的限制則在 UEFI 規(guī)范的 4.4.2 PCI Option ROMs 章節(jié)有詳細(xì)說明。

服務(wù)端

??PXE 服務(wù)端就是互聯(lián)網(wǎng)中標(biāo)準(zhǔn)的提供 DHCP、TFTP 等服務(wù)的服務(wù)器,可能是功能齊全的一臺(tái)服務(wù)器,也可能是互相獨(dú)立的提供不同服務(wù)的多臺(tái)服務(wù)器。其中,DHCP 服務(wù)端用于提供適當(dāng)?shù)目蛻舳司W(wǎng)絡(luò)參數(shù)及 TFTP 信息;TFTP 服務(wù)端提供引導(dǎo)鏡像文件的下載。由于服務(wù)端通常是功能強(qiáng)大的服務(wù)器,因此,其具有完整的協(xié)議棧及應(yīng)用功能。


??支持 PXE 的服務(wù)器與普通服務(wù)器的區(qū)別就是其中的 HDCP 服務(wù)端增加了 PXE 相關(guān)配置,它能夠解析 DHCP 中 Option 60 的內(nèi)容(客戶端標(biāo)識(shí)符 PXEClient ),并在應(yīng)答中給出 Option 66(引導(dǎo)服務(wù)器主機(jī)名) 和 Option 67(引導(dǎo)文件名)。其他 TFTP 等服務(wù)端并不需要特殊配置。

??除此之外,PXE 還提出了 proxyDHCP 的概念,用在無法修改現(xiàn)有 DHCP 服務(wù)器的情況(即不允許在現(xiàn)有 DHCP 服務(wù)器上配置 PXE 的情況)。使用 proxyDHCP 就可以實(shí)現(xiàn)與已有 DHCP 服務(wù)器的網(wǎng)絡(luò)兼容。PXE 和 DHCP 可以由單獨(dú)的服務(wù)器提供,互不干擾。

  1. 原有的 DHCP 服務(wù)器為所有 DHCP 客戶端提供 IP 地址、IP 掩碼等。
  2. proxyDHCP 服務(wù)器僅向 PXE 標(biāo)識(shí)的引導(dǎo)客戶端提供 TFTP 服務(wù)器的 IP 地址和 NBP 的名稱。

網(wǎng)絡(luò)引導(dǎo)程序

??網(wǎng)絡(luò)引導(dǎo)程序(Network Bootstrap Program,NBP ) 是引導(dǎo)鏈過程中的第一個(gè)環(huán)節(jié),它們通常通過 TFTP 請(qǐng)求一小組補(bǔ)充文件,以便運(yùn)行一個(gè)極簡(jiǎn)的操作系統(tǒng)執(zhí)行器(例如,Windows PE 或基本的 Linux 內(nèi)核 + initrd)。

常見的 NBP:iPXE、PXELINUX

??小型操作系統(tǒng)執(zhí)行器加載自己的網(wǎng)絡(luò)驅(qū)動(dòng)程序和 TCP/IP 堆棧,然后進(jìn)一步完成安裝操作系統(tǒng)。此時(shí),引導(dǎo)或安裝完整操作系統(tǒng)所需的其余文件通常不是通過 TFTP 提供的,而是使用可靠的傳輸協(xié)議(如 HTTP、CIFS 或 NFS)提供的。

HTTP Boot

??HTTP Boot 是 UEFI 規(guī)范版本 2.5 中引入的另一個(gè)網(wǎng)絡(luò)引導(dǎo)方案,可用作 PXE 的高性能替代品。HTTP Boot 結(jié)合了動(dòng)態(tài)主機(jī)配置協(xié)議 (DHCP)、域名系統(tǒng) (DNS) 和超文本傳輸協(xié)議 (HTTP),以通過網(wǎng)絡(luò)提供系統(tǒng)部署和配置功能。

??HTTP Boot 的引入主要是解決安全問題。PXE 在設(shè)計(jì)時(shí)沒有考慮加密或身份驗(yàn)證機(jī)制,容易受到中間人攻擊,無法在本地網(wǎng)絡(luò)之外擴(kuò)展,并且存在與 TFTP 超時(shí)和 UDP 數(shù)據(jù)包丟失相關(guān)的可靠性問題。

工作流程

??首先,確保網(wǎng)絡(luò)中必須具有已配置的動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)服務(wù)器和普通文件傳輸協(xié)議(TFTP)服務(wù)器,其次,通過 BIOS 或 UEFI 提供的自主選擇啟動(dòng)位置的選項(xiàng)選擇從網(wǎng)絡(luò)啟動(dòng)(如果支持 PXE,通常就會(huì)專門有一項(xiàng)是從網(wǎng)絡(luò)啟動(dòng))。


??PXE 固件程序就是網(wǎng)卡固件的一部分,選擇從網(wǎng)絡(luò)啟動(dòng)后,BIOS 或 UEFI 就會(huì)將網(wǎng)卡中的 PXE 固件加載到內(nèi)存中去執(zhí)行。根據(jù) PXE 固件的不同,流程稍有不同。如果網(wǎng)卡中的 PXE 固件本身就是 iPXE 或 gPXE,就可以簡(jiǎn)化流程(直接去引導(dǎo)系統(tǒng))。

??如果網(wǎng)卡中的 PXE 固件是舊版本的,通常的做法是先去加載一個(gè) NBP,由 NBP 再去引導(dǎo)系統(tǒng)。這里的 NBP 可以是 iPXE、PXELINUX 等。注意,如果使用的是 iPXE,則注意避免遞歸請(qǐng)求。因?yàn)?,iPXE 運(yùn)行后又會(huì)再次發(fā)起 DHCP 請(qǐng)求。

傳統(tǒng) PXE 固件

??傳統(tǒng)的 PXE 固件就是指的最初由 Intel 實(shí)現(xiàn)的 PXE 固件,運(yùn)行在 8086 實(shí)地址模式,主要指的是與傳統(tǒng) BIOS 一起工作的固件。它通常僅支持通過 TFTP 傳輸文件,現(xiàn)在,很多網(wǎng)卡中的固件還都是傳統(tǒng)的 PXE 固件。PXE 固件啟動(dòng)后會(huì)在屏幕上輸出 PXE + 版本 類似的字符串。


??傳統(tǒng)的 PXE 固件可以直接去加載操作系統(tǒng)引導(dǎo)文件,但是由于 NBP 通常可以支持靈活的配置腳本,在多數(shù)情況下,傳統(tǒng)的 PXE 固件會(huì)優(yōu)先加載一個(gè) NBP,由 NBP 通過配置腳本靈活的安裝系統(tǒng)。為此,iPXE 提供了一個(gè)被稱為鏈?zhǔn)郊虞d的方案:PXE 固件可以先請(qǐng)求一個(gè) iPXE 固件,后續(xù)交由 iPXE 固件執(zhí)行。

  1. 第一個(gè)階段:PXE Client 通過 DHCP 獲取 IP 地址。這一個(gè)階段就是標(biāo)準(zhǔn)的 DHCP 過程:DORA。與標(biāo)準(zhǔn) DHCP 不同的是,客戶端和服務(wù)端支持了 PXE 后,會(huì)在通信報(bào)文中添加一些額外內(nèi)容。
    1. 由于客戶端使用啟用了 PXE 的網(wǎng)卡通過網(wǎng)絡(luò)引導(dǎo)請(qǐng)求 IP 地址,因此客戶端發(fā)出的 DHCP Discover 包括 DHCP Option 60,其中包含字符串 PXEClient:Arch:xxxxxUNDI:yyyzz。用于告訴服務(wù)端,客戶機(jī)的具體架構(gòu)及引導(dǎo)方式(rfc4578)。
      • 00000 - Intel x86PC (BIOS boot)
      • 00001 - NEC/PC98
      • 00002 - EFI Itanium
      • 00003 - DEC Alpha
      • 00004 - Arc x86
      • 00005 - Intel Lean Client
      • 00006 - EFI IA32 (x86 EFI boot)
      • 00007 - EFI BC(x64 EFI boot)
      • 00008 - EFI Xscale
      • 00009 - EFI x86-64
    2. 支持 PXE 的 DHCP 服務(wù)端會(huì)識(shí)別 Option 60 的內(nèi)容,根據(jù)識(shí)別的架構(gòu)及引導(dǎo)方式,在 DHCP Offer 添加 Option 66(Next server IP address) 和 Option 67(Boot file name) 的內(nèi)容,否則系統(tǒng)不能正常安裝及啟動(dòng)。
    3. 后續(xù)的 DHCP Request 和 Ack 均包含 Option 60、Option 66、Option 67。
    4. 此階段結(jié)束之后,PXE 客戶端會(huì)獲得 自身可用的 IP 地址相關(guān)信息(your IP address),TFTP 服務(wù)器地址(Next server IP address),啟動(dòng)文件名(Boot file name) 這三個(gè)關(guān)鍵要素。
  2. 第二個(gè)階段:PXE 客戶端向 DHCP 給的 TFTP 服務(wù)器請(qǐng)求 DHCP 給的 Boot File。這一階段就是標(biāo)準(zhǔn)的 TFTP 傳輸過程。通常,這里的 Boot File 會(huì)是一個(gè)網(wǎng)絡(luò)引導(dǎo)程序(NBP),例如,我這里的是 iPXE。
    1. 在 TFTP 中,傳輸由發(fā)出讀取或?qū)懭敕?wù)器上特定文件的請(qǐng)求的客戶端啟動(dòng)。
    2. 獲取到網(wǎng)絡(luò)引導(dǎo)程序(NBP)后,后續(xù)就會(huì)由網(wǎng)絡(luò)引導(dǎo)程序(NBP)繼續(xù)運(yùn)行。例如我這里接下來就是一個(gè)完成的 iPXE 固件的執(zhí)行流程。

iPXE 固件

??iPXE 對(duì) PXE 功能進(jìn)行了擴(kuò)展,是先前的 PXE 實(shí)現(xiàn)的超集,支持更多協(xié)議。iPXE 固件主要針對(duì) UEFI 模式的引導(dǎo)。最為主要的是,iPXE 支持靈活的配置腳本。iPXE 固件啟動(dòng)后會(huì)在屏幕上輸出 iPXE + 版本 類似的字符串。


??iPXE 不僅僅是一個(gè) PXE 固件,而且還是一個(gè)功能強(qiáng)大的 NBP。因此,可以直接使用 iPXE 來引導(dǎo)操作系統(tǒng)。相比于傳統(tǒng) PXE,iPXE 可以使用更多協(xié)議來獲取操作系統(tǒng)的文件。

  1. 第一個(gè)階段:iPXE 固件通過 DHCP 獲取 IP 地址。這一個(gè)階段就是標(biāo)準(zhǔn)的 DHCP 過程:DORA。與標(biāo)準(zhǔn) DHCP 不同的是,客戶端和服務(wù)端支持了 PXE 后,會(huì)在通信報(bào)文中添加一些額外內(nèi)容。
    1. 支持 PXE 的 DHCP 服務(wù)端需要識(shí)別 Option 77 的內(nèi)容,然后返回對(duì)應(yīng)的配置文件。
    2. 此階段結(jié)束之后,iPXE 固件會(huì)獲得 自身可用的 IP 地址相關(guān)信息(your IP address),TFTP 服務(wù)器地址(Next server IP address),啟動(dòng)文件名(Boot file name) 這三個(gè)關(guān)鍵要素。這里的 Boot File 就是 iPXE 的配置腳本文件。
  2. 第二個(gè)階段:iPXE 固件向 DHCP 給的 TFTP 服務(wù)器請(qǐng)求 DHCP 給的 Boot File。這一階段就是標(biāo)準(zhǔn)的 TFTP 傳輸過程。

系統(tǒng)安裝

??第二個(gè)階段結(jié)束之后,NBP 就會(huì)加載獲得的配置腳本文件。配置腳本文件通常會(huì)提供一個(gè)菜單界面,可以選擇各種操作系統(tǒng)或者工具。選擇相應(yīng)菜單后才是真正請(qǐng)求操作系統(tǒng)文件。

配置服務(wù)端

Windows

??Windows 系統(tǒng)下有一些 All-In-One 的 PXE 服務(wù)端軟件,例如,Tiny PXE ServerServa,只用這些工具,我們就無需再單獨(dú)安裝及配置 DHCP、TFTP 等服務(wù)端。

Tiny PXE Server

??Tiny PXE Server 是完全免費(fèi)的,它自帶了很多配置,且提供了更為完整的引導(dǎo)文件示例(根目錄下的 files 文件夾),直接啟動(dòng) pxesrv.exe 就可以使用了。它已經(jīng)預(yù)先配置好了一些在線安裝,啥也不用配置就可以安裝一個(gè)系統(tǒng)。

??當(dāng)然,pxesrv.exe 是個(gè)獨(dú)立的程序,使用它完全可以自己重新搭建一個(gè)服務(wù)端。接下來,我就使用它從頭搭建一下安裝 Ubuntu 22.04 LTS 的服務(wù)端。

  1. 新建一個(gè)目錄(我這里是 D:/PXE/TinyPXE),用于存放 PXE 服務(wù)端所需要的各種文件。各目錄及文件的來源及作用見下圖的說明即可。
  2. 直接運(yùn)行 pxesrv.exe,然后根據(jù)自己的實(shí)際環(huán)境進(jìn)行修改。注意,最后一定要在右鍵菜單中保存配置,然后關(guān)閉重新啟動(dòng)后配置才會(huì)生效(暫時(shí)不用選擇 Online,等后續(xù)配置完后在啟動(dòng)即可)。

    ??在選擇了 ipxe.pxe 并保存之后,Tiny PXE Server 就會(huì)自動(dòng)將 ipxe.pxe 所在的目錄作為引導(dǎo)的根目錄。如果選擇了頂部的 HTTPd 然后啟動(dòng)服務(wù)端之后,那么就可以直接在瀏覽器中使用 http://你的 IP 地址 訪問根目錄下的文件。
  3. 在 os-images 下新建一個(gè)目錄(我這里是 ubuntu-22.04-desktop-amd64),然后將我們的系統(tǒng) iso 文件內(nèi)容解壓到新建的目錄下。注意,每個(gè)子目錄下存放一個(gè)操作系統(tǒng),這樣可以允許我們選擇安裝不同的系統(tǒng)。
  4. 新建 menu.ipxe 純文本文件,然后編輯其中的內(nèi)容。注意,根據(jù)自己的情況稍作修改。
    #!ipxe
    
    #============== Set Variables ===============
       set menu-timeout 16000
       set menu-default ubuntu-22.04-desktop-amd64
       isset ${ip} || dhcp
       isset ${next-server} || set next-server 192.168.100.214
       set boot-url http://${next-server}
    
    #============== Menu ===============
    :start
      menu iPXE Boot Menu
      item --gap --             -------------------------------- System Operation ---------------------------
      item ubuntu-22.04-desktop-amd64         Install Ubuntu Desktop 22.04 LTS
      item --gap --             -------------------------------- Advanced -----------------------------
      item --key s shell             [S] Drop to iPXE Shell
      item --key r reboot            [R] Reboot the Computer
      item --key x exit              [X] Exit iPXE and Continue BIOS Booting
      choose --timeout ${menu-timeout} --default ${menu-default} selected
      goto ${selected}
     
    #============ Main Menu Options =============
    :ubuntu-22.04-desktop-amd64
    set os_root os-images/ubuntu-22.04-desktop-amd64
    kernel  ${boot-url}/os-images/ubuntu-22.04-desktop-amd64/casper/vmlinuz
    initrd  ${boot-url}/os-images/ubuntu-22.04-desktop-amd64/casper/initrd
    imgargs vmlinuz initrd=initrd boot=casper maybe-ubiquity netboot=nfs ip=dhcp nfsroot=${next-server}:/D/PXE/TinyPXE/iPXE/os-images/ubuntu-22.04-desktop-amd64 quiet splash ---
    boot
    
    :shell
      echo Type 'exit' to go back to the menu.
      shell
      goto start
     
    :reboot
      reboot
     
    :exit
      exit
    
  5. 使用 windfsd.exe 將 iPXE 這個(gè)目錄共享。共享的原因是系統(tǒng)文件的獲取依賴于 NFS。在 TinyPXE 中單獨(dú)開啟一個(gè)命令行工具(cmd,不能用 Powershell),然后輸入 winnfsd.exe -id 0 0 D:\PXE\TinyPXE\iPXE。注意,不要關(guān)閉命令行,關(guān)閉后將停止共享。
  6. 選擇 Online 就可以啟動(dòng)服務(wù)端了(Tiny PXE Server 將自動(dòng)啟動(dòng) DHCP 和 TFTP 的服務(wù)端),此時(shí)服務(wù)端準(zhǔn)備好了,接下來就是啟動(dòng)客戶端了。

Serva

??Serva 分專業(yè)版和社區(qū)版,社區(qū)版支持的功能很少(例如,不支持 UEFI),官網(wǎng)有很多應(yīng)用示例可以參考。使用 Serva 的好處就是,他會(huì)在自動(dòng)生成相關(guān)目錄文件。

  1. 新建一個(gè)目錄(我這里是 D:/PXE/ServaPXE),用于存放 PXE 服務(wù)端所需要的各種文件。各目錄及文件的來源及作用見下圖的說明即可。
  2. 直接運(yùn)行 Serva64.exe,然后進(jìn)行配置。配置后重啟,Serva 就會(huì)在我們指定的根目錄(Boot)下自動(dòng)生成各種目錄及文件。我們需要做的就是按照 Serva 的要求把系統(tǒng)放到指定的文件夾下。
    • BM: 存放 Serva 的 Boot Manager 文件,包括 Windows 和 Linux 的 BIOS、EFI32、EFI64 文件。其中部分文件 Serva 已經(jīng)自動(dòng)生成了。
    • NWA_PXE: 存放 Linux 系統(tǒng)的映像文件
    • WIA_RIS: 存放只支持 RIS 安裝的早期 Windows 版本,比如 Windos XP、Windows2000 等
    • WIA_WDS: 存放支持 WDS 安裝的 Windows 版本,比如 Win10、Windows Server 2016 等
  3. NWA_PXE 下新建一個(gè)目錄(我這里是 ubuntu-22.04-desktop-amd64),然后將我們的系統(tǒng) iso 文件內(nèi)容解壓到新建的目錄下。注意,每個(gè)子目錄下存放一個(gè)操作系統(tǒng),這樣可以允許我們選擇安裝不同的系統(tǒng)。
  4. 在每個(gè)系統(tǒng)文件目錄下(例如,我這里的 NWA_PXE/ubuntu-22.04-desktop-amd64)新建一個(gè)名為 ServaAsset.inf 的純文本文件,然后添加以下內(nèi)容。注意,如果有多個(gè)系統(tǒng)目錄,每個(gè)都需要添加。
    [PXESERVA_MENU_ENTRY]
    asset = Ubuntu 22.04 LTS
    platform = amd64
    kernel_bios = /NWA_PXE/$HEAD_DIR$/casper/vmlinuz
    append_bios = showmounts toram root=/dev/cifs initrd=/NWA_PXE/$HEAD_DIR$/casper/initrd boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,sec=ntlmv2,vers=2.0,ro ip=dhcp ro ipv6.disable=1
    kernel_efi64 = /NWA_PXE/$HEAD_DIR$/casper/vmlinuz
    append_efi64 = showmounts toram root=/dev/cifs initrd=/NWA_PXE/$HEAD_DIR$/casper/initrd boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,sec=ntlm,vers=1.0,ro ip=dhcp ro ipv6.disable=1
    
  5. 共享 NWA_PXE。直接在 NWA_PXE 上右鍵,選擇 屬性->共享,將目錄共享即可。
  6. 再次重新啟動(dòng) Serva64.exe,此時(shí)服務(wù)端準(zhǔn)備好了,接下來就是啟動(dòng)客戶端了。

Linux

??Linux(我使用的是 Ubuntu 22.04 LTS)下的配置需要手動(dòng)單獨(dú)安裝組件:DHCP SERVER、TFTP SERVER、HTTP SERVER、NFS SERVER、DNS SERVER(可選)。以下就簡(jiǎn)單介紹每個(gè)服務(wù)端的安裝及配置。同時(shí),注意以下幾個(gè)問題:

  1. 很多文章推薦使用 dnsmasq ,dnsmasq 是一個(gè) Linux工具,它結(jié)合了 DNS 服務(wù)器、DHCP 服務(wù)器、TFTP 服務(wù)器和 PXE 服務(wù)器。我并沒有使用它。
  2. 現(xiàn)在 Linux 的服務(wù)端的守護(hù)進(jìn)行都是服務(wù)化了。常見的命令:
    1. sudo service xxx start:?jiǎn)?dòng) xxx 服務(wù)
    2. sudo service xxx stop:停止 xxx 服務(wù)
    3. sudo service xxx restart:重啟 xxx 服務(wù)
    4. sudo systemctl enable xxx:開機(jī)自動(dòng)啟動(dòng) xxx 服務(wù)
    5. sudo systemctl disable xxx:禁用 xxx 服務(wù)
    6. sudo systemctl status xxx:查看 xxx 服務(wù)的狀態(tài)
    7. journalctl -u xxx:查看服務(wù)信息
  3. 網(wǎng)絡(luò)的修改可能還需要對(duì)應(yīng)的修改防火墻:sudo ufw status。
  4. 服務(wù)端安裝后默認(rèn)就啟動(dòng),電腦重啟后有可能需要再次開啟。

TFTP SERVER 安裝及配置

??在 Ubuntu 下,TFTP SERVER 對(duì)應(yīng)的軟件包是 tftpd-hpatftpd-hpa 是 BSD TFTP 客戶端和服務(wù)器的增強(qiáng)版本。與原始版本相比,它擁有許多錯(cuò)誤修正和增強(qiáng)),因此,直接使用命令 sudo apt install tftpd-hpa 進(jìn)行安裝。


??tftp-hpa 的配置文件為 /etc/default/tftpd-hpa,可以不用修改。默認(rèn)情況下,tftp-hpa 的根目錄是 /srv/tftp,將 PXE 的啟動(dòng)配置文件放到該目錄即可。這樣 PXE 客戶端就可以直接獲取到這些文件。隨便找個(gè)客戶端:tftp 192.168.100.63 -c get ipxe.pxe 進(jìn)行測(cè)試。

DHCP SERVER 安裝及配置

??在 Ubuntu 下,DHCP SERVER 對(duì)應(yīng)的軟件包是 isc-dhcp-serverInternet Systems Consortium 開發(fā)的,目前主流的開源 DHCP 實(shí)現(xiàn)),因此,直接使用命令 sudo apt install isc-dhcp-server 進(jìn)行安裝。


??正常安裝之后,需要編輯 DHCP SERVER 默認(rèn)的配置文件 /etc/dhcp/dhcpd.conf 才可以正常工作。修改之后使用命令 sudo service isc-dhcp-server restart 重啟 DHCP SERVER。詳細(xì)介紹可以參考 ISC-DHCP 官方文檔。針對(duì) PXE,在 /etc/dhcp/dhcpd.conf 的最后追加如下內(nèi)容(注意根據(jù)自己的網(wǎng)絡(luò)環(huán)境更改):

option routers 192.168.100.1;
#option broadcast-address 192.168.100.255;
subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.215 192.168.100.230;
}

#option client-system-arch code 93 = unsigned integer 16;
class 'pxeclients' {
    match if substring(option vendor-class-identifier, 0, 9) = 'PXEClient';
    next-server 192.168.100.214;
    if exists user-class and option user-class = 'iPXE' {
        filename 'menu.ipxe';
    } else {
        filename 'ipxe.pxe';
    }
}
  1. IPv4 和 IPv6 的 DHCP SERVER 是相互獨(dú)立的(例如,IPv6 的服務(wù)名為 isc-dhcp-server6,配置文件名為 /etc/dhcp/dhcpd.conf),上面說的僅針對(duì) IPv4。
  2. DHCP SERVER 要綁定的網(wǎng)卡,編輯 /etc/default/isc-dhcp-server
  3. 最好將網(wǎng)卡配置為使用靜態(tài) IP

NFS SERVER 安裝及配置

??在 Ubuntu 下,NFS SERVER 對(duì)應(yīng)的軟件包是 nfs-kernel-server,因此,直接使用命令 sudo apt install nfs-kernel-server 進(jìn)行安裝。正常安裝時(shí),會(huì)進(jìn)行一系列的配置。感興趣的的話,可以自行去學(xué)習(xí)。


??這里我們需要做的就是在 /etc/export 中添加需要共享的目錄。例如,我這里的是 /home/zcshou/PXE/os-images *(rw,sync,no_root_squash,no_subtree_check)。注意配置后需要重啟 sudo service nfs-kernel-server restartsudo exportfs -ar 生效。使用 showmount -e [ip] 可以查看共享的目錄。

隨便找個(gè)客戶端,進(jìn)行測(cè)試 sudo mount -t nfs -o vers=4 192.168.100.63:/home/zcshou/PXE/os-images /mnt/nfs。

HTTP SERVER 安裝及配置

??在 Ubuntu 下,HTTP SERVER 對(duì)應(yīng)的軟件包是 apache2,因此,直接使用命令 sudo apt install apache2 進(jìn)行安裝。安裝完成之后,我們就可以直接從瀏覽器進(jìn)行訪問,看到如下頁面。


??apache 的 HTTP SERVER 默認(rèn)使用的根目錄是 /var/www/html,默認(rèn)的說明頁面中有介紹它的配置文件。Apache2 Web Server 在 Ubuntu 下的配置有些特殊(與上游不同),詳細(xì)介紹參見 Ubuntu 的專題頁面 HTTPD - Apache2 Web Server。

??默認(rèn)情況下,Ubuntu 不允許通過 web 訪問 /var/www、public_thml/usr/share 之外的目錄。如果您的站點(diǎn)使用的是位于其他地方的 web 文檔根目錄,您可能需要在 /etc/apache2/apache2.conf 中將文檔根目錄指定為白名單。

DNS SERVER 安裝及配置

??在 Ubuntu 下,HTTP SERVER 對(duì)應(yīng)的軟件包是 bind9Internet Systems Consortium 開發(fā)的,目前主流的開源 DNS 實(shí)現(xiàn)),因此,直接使用命令 sudo apt install bind9 進(jìn)行安裝。


??此外,DNS SERVER 還有個(gè)測(cè)試工具 dnsutils,一般也會(huì)一起安裝 sudo apt install dnsutils。需要注意,bind9 默認(rèn)的服務(wù)名字為 named.service,在 Ubuntu 上有個(gè)別名叫 bind9.service,我一般直接使用 named.service 即可。

??BIND 的主要配置文件是 /etc/bind/named.conf,每當(dāng) BIND 啟動(dòng)時(shí),就會(huì)讀取這個(gè)配置文件!不過,現(xiàn)在 BIND 的配置文件結(jié)構(gòu)化了,/etc/bind/named.conf 只用于引入 /etc/bind/named.conf.options/etc/bind/named.conf.local、/etc/bind/named.conf.default-zones,因此,我們需要修改也是引入的這三個(gè)文件。

  • /etc/bind/named.conf.options:這個(gè)文件是全局配置項(xiàng),比如定義解析文件的位置(directory)、DNS 上游服務(wù)器(forwarders)、以及一些安全性格的參數(shù)配置等。基本修改是配置轉(zhuǎn)發(fā) DNS,表示如果我們的 DNS SERVER 有解析不了的,就轉(zhuǎn)發(fā)給這里指定的 DNS 去解析。
  • /etc/bind/named.conf.local:添加自定義的域名信息(zone)及對(duì)應(yīng)的解析文件(file)。例如,將 xxx.com 和 192.168.xx.xx 關(guān)聯(lián)起來。
  • /etc/bind/named.conf.default-zones:默認(rèn)的正/反解記錄清單文件

相關(guān)參考:

  1. https://linuxhint.com/configure-dns-server-ubuntu/
  2. https://jingwei.link/2019/04/26/dns-server-setup-on-ubuntu.html
  3. https://www.cnblogs.com/pied/archive/2013/04/09/3010286.html
  4. https://blog.kuoe0.tw/posts/2013/08/11/install-dns-server-on-ubuntu/
  5. https://blog.csdn.net/evanyanglibo/article/details/123484424
  6. https://www.2daygeek.com/start-stop-restart-enable-reload-bind-dns-named-server-service-in-linux/

SYSLOG SERVER 安裝及配置

??在 Ubuntu 下,SYSLOG SERVER 對(duì)應(yīng)的軟件包是 rsyslog,因此,直接使用命令 sudo apt install rsyslog 進(jìn)行安裝。貌似 Ubuntu 好像默認(rèn)就已經(jīng)安裝了 rsyslog,我在安裝時(shí)提示已經(jīng)安裝了,但不記得安裝過!

??安裝之后,必須要修改配置文件 /etc/rsyslog.conf,以定義 SYSLOG SERVER 使用的協(xié)議及端口號(hào)。具體就是找到如下部分,去掉注釋,保存即可。使用命令 sudo service rsyslog restart 重啟服務(wù)后生效,使用命令 ss -4altunp | grep 514 查看監(jiān)聽狀態(tài)。默認(rèn)日志位置是 /var/log。


??客戶端也需要稍作配置,在客戶端的 /etc/rsyslog.conf 文件最后添加 cron.none;*.info;mail.none;authpriv.none @SYSLOG SERVER IP 地址:514,其中,一個(gè) @ 表示使用 UDP,兩個(gè) @ 表示使用 TCP。

參考

  1. https://linuxhint.com/pxe_boot_ubuntu_server/
  2. https://uwnthesis.wordpress.com/2014/07/24/pxe-booting-how-network-booting-works/
  3. https://linuxhit.com/pxe-boot-what-is-pxe-how-does-it-work/
  4. https://net.co.at/doc/howto/docs/pxe_howto/ch06.html
  5. https://blog.51cto.com/u_15545168/5220003
  6. http://mistyprojects.co.uk/documents/TinyPXEServer/index.html
  7. https://www.aresgalaxy.org/system-administration/how-to/boot-ubuntu-live-over-network-pxe-using-serva-on-windows-7-8-10
  8. https://www.bilibili.com/read/cv12076448
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Ubuntu 10.04下PXE跨局域網(wǎng)自動(dòng)安裝的方法
VLOG | 全網(wǎng)首發(fā)菲傭級(jí)PXE打造無盤系統(tǒng)ESXI配合群暉ISCSI安裝教程
安卓版的tiny-pxe-server(pxe-http-nfs) iscsi-target
TinyPXEServer下載 Tiny PXE Server(pxe服務(wù)器軟件) v1.0.0.2...
用PXE方式安裝Ubuntu系統(tǒng) DHCP+PXE配置文件
PXE引導(dǎo)RamOS內(nèi)存系統(tǒng)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服