天天看點

Ironic Key Technologies--PXE網絡引導一,什麼是PXE二,pxe相關的服務三,PXE要求四,PXE工作流程五,Ironic配置PXE

    實際工作中,對計算機、伺服器安裝作業系統,除了使用光驅、USB接口引導鏡像,還可以通過PXE網絡引導的方式安裝。通過PXE引導的方式,可以批量操作,效率高,也容易維護。

一,什麼是PXE

  PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel設計的協定,它可以使計算機通過網絡啟動。協定分為client和server兩端,PXE client在網卡的ROM中,當計算機引導時,BIOS把PXE client調入記憶體執行,并顯示出指令菜單,經使用者選擇後,PXE client将放置在遠端的作業系統通過網絡下載下傳到本地運作。

   PXE可實作無盤啟動。

二,pxe相關的服務

1、DHCP服務

        DHCP(Dynamic Host Configration Protocol動态主機配置協定),是一種 C/S 服務架構。作用是讓用戶端向服務端租約一個 IP 位址。使用UDP 協定傳輸,服務端監聽的端口号是 67,用戶端監聽的端口号是 68。

Ironic Key Technologies--PXE網絡引導一,什麼是PXE二,pxe相關的服務三,PXE要求四,PXE工作流程五,Ironic配置PXE

    第一步:在網卡的裡面有一個BIOSRom的晶片,在開機時會向區域網路裡發出 DHCP DICOVER 廣播請求,索取IP位址

    第二步:DHCP 服務端收到用戶端的廣播請求會發出一個DHCP OFFER的廣播資料包,配置設定ip位址

    第三步:用戶端在接收到封包後,會在向服務端發出 DHCP REQUEST 的廣播封包。來确定此ip位址是否可以使用,以免沖突

    第四步:服務端在接受到此封包後會發出一個 DHCP ACK的确認封包,此時用戶端就可以租約使用這個ip位址了

    安裝:使用 yum install dhcp -y即可安裝

    啟動、關閉:/etc/init.d/dhcpdstart|stop

    開機自啟動:chkconfig dhcpd on

    DHCP服務的作用:

    向PXE用戶端分發IP位址、子網路遮罩、網關等,并指定啟動引導檔案所在伺服器(TFTP伺服器)的位址和PXE啟動檔案(pxelinux.0)

2、TFTP服務

    TFTP(Trivial File Transfer Protocol簡單檔案傳輸協定),實際上是一個簡單的檔案伺服器,提供檔案下載下傳服務,一般是檔案數目較少時使用。也是一種 C/S 架構,伺服器工作于 UDP 的69 端口。

    安裝:yum install tftp-server tftp -y

    此服務是由超級程序 xinetd來控制,實作“随叫随到”的狀态。 服務的開啟在 /etc/xinetd.d/tftp 檔案設定

    啟動,關閉:/etc/init.d/xinetd start|stop

    開機自啟動:chkconfig tftp on

    安裝tftp伺服器:需要安裝xinetd、tftp、tftp-server 

    TFTP服務的作用:

    向PXE用戶端傳輸PXE啟動檔案、PXE引導配置檔案、linux核心vmlinuz,以及系統啟動檔案initrd.img

三,PXE要求

        實體機的網卡支援pxe、主機闆支援網絡引導。

    PXE不是一種安裝方式,而是一種引導的方式。pxe方式要求安裝的計算機中必須包含一個支援PXE 的網卡,且主機闆支援網絡引導,PXE (Pre-boot Execution Environment)協定使計算機可以通過網絡啟動。

    PXE協定通過client來server上下載下傳檔案。

    PXE協定分為 client 和 server 端,PXE client 在網卡Rom中,

    當計算機引導時,cpu通過加載bios映射到記憶體中的片段,然後檢查計算機的健康狀況(如cpu風扇,網卡等)繼而把網卡Rom中的PXE client 調入記憶體引導執行,由 PXE client 将放置在遠端的檔案通過網絡下載下傳到本地運作.

Ironic Key Technologies--PXE網絡引導一,什麼是PXE二,pxe相關的服務三,PXE要求四,PXE工作流程五,Ironic配置PXE

        client通過tftp協定下載下傳server上的檔案,前提是必須有相應的dhcp為其分發ip位址。

    PXE 協定需要設定 DHCP 伺服器 和 TFTP 伺服器。

    DHCP 伺服器用來給 PXE client配置設定一個 IP 位址,由于是給 PXE client 配置設定 IP 位址,是以在配置 DHCP 伺服器時需要增加相應的設定。

    在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協定到 TFTP Server 上下載下傳所需的檔案。

四,PXE工作流程

Ironic Key Technologies--PXE網絡引導一,什麼是PXE二,pxe相關的服務三,PXE要求四,PXE工作流程五,Ironic配置PXE

PXE工作原理圖說明

    1. Client向PXE Server上的DHCP_Server發送IP位址請求消息(廣播一個dhcp請求包,此時若有多個DHCP_Server,則可能擷取的IP不是預想的網段),DHCP檢測Client是否合法(主要是檢測Client的網卡MAC位址),如果合法則傳回Client的IP位址,同時将啟動檔案pxelinux.0的位置資訊一并傳送給Client。

    2. Client向PXE Server上的TFTP發送擷取pxelinux.0請求消息,TFTP接收到消息之後再向Client發送pxelinux.0大小資訊,試探Client是否滿意,當TFTP收到Client發回的同意大小資訊之後,正式向Client發送pxelinux.0。

    3. Client執行接收到的pxelinux.0檔案。

    4. Client向TFTP發送針對本機的配置資訊(記錄在TFTP的pxelinux.cfg目錄下),TFTP将配置檔案發回Client,繼而Client根據配置檔案執行後續操作。

    5. Client向TFTP發送Linux核心請求資訊,TFTP接收到消息之後将核心檔案發送給Client。

    6. Client向TFTP發送根檔案系統請求資訊,TFTP接收到消息之後傳回Linux根檔案系統。

    7. Client啟動Linux核心(啟動參數已經在4中的配置檔案中設定好了)。

    8. Client通過NFS下載下傳鏡像檔案,讀取autoyast自動化安裝腳本。

    至此,Client正式進入自動化安裝模式開始安裝系統直到完成。

    pxelinux.0(pxe啟動文檔):/tftpboot/pxelinux.0就是Bootstrap檔案,提供調用啟動菜單的作用

五,Ironic配置PXE

1,建立tftp boot目錄,修改權限使得ironic使用者可寫入

sudo mkdir -p /tftpboot

sudo chown -R ironic /tftpboot

2,安裝tftp服務和用于pxe引導鏡像的syslinux包

RHEL7/CentOS7:

sudo yum install tftp-server syslinux-tftpboot xinetd

3,使用xinetd提供tftp服務,設定第一步建立的tftp引導目錄/tftpboot

編輯修改配置檔案:/etc/xinetd.d/tftp

service tftp

{

  protocol        = udp

  port            = 69

  socket_type     = dgram

  wait            = yes

  user            = root

  server          = /usr/sbin/in.tftpd

  server_args     = -v -v -v -v -v --map-file /tftpboot/map-file /tftpboot

  disable         = no

  # This is a workaround for Fedora, where TFTP will listen only on

  # IPv6 endpoint, if IPv4 flag is not used.

  flags           = IPv4

}

之後,重新開機服務:sudo systemctl restart xinetd

4,複制PXE鏡像到/tftpboot

RHEL7/CentOS7/SUSE:

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

5,若是whole鏡像,需要通過PXE-netboot部署,則需要複制chain.c32到/tftpboot

RHEL7/CentOS7/SUSE:

sudo cp /usr/share/syslinux/chain.c32 /tftpboot/

6,若syslinux版本大于4,則還要複制一些模闆到/tftpboot

for Ubuntu run:

sudo cp /usr/lib/syslinux/modules/*/ldlinux.* /tftpboot

7,在/tftpboot建立map檔案

echo 're ^(/tftpboot/) /tftpboot/\2' > /tftpboot/map-file

echo 're ^/tftpboot/ /tftpboot/' >> /tftpboot/map-file

echo 're ^(^/) /tftpboot/\1' >> /tftpboot/map-file

echo 're ^([^/]) /tftpboot/\1' >> /tftpboot/map-file

參考:

https://docs.openstack.org/ironic/latest/install/configure-pxe.html

http://blog.51cto.com/lavenliu/1629922

繼續閱讀