個人做企業(yè)網站制作要多少錢推廣服務公司
HTTP boot與傳統PXE的主要差異
HTTP不再需要使用UDP協議的tftp服務(連接不可靠、不支持大文件)了,只需要dhcp 和http 兩個服務即可,支持較穩(wěn)定的大文件傳輸。
實驗環(huán)境
ThinkSystem服務器SR650V2 SR660V2 通過HTTP boot安裝CentOS8.1
基本步驟
HTTP boot三劍客
劍眼?制作http boot 的NBP文件
劍魂?HTTP boot服務器的搭建
劍靈?服務器端開啟http boot
制作http boot 的NBP文件
使用ipxe編譯制作支持http boot的NBP文件(根據了解,目前CentOS自帶的NBP不支持http boot,網絡上的其他tips,基本上都是使用SLES的NBP文件,對于使用者來說,很難理解其內部的文件嵌套調用情況,所以本文描述的實驗是基于ipxe自己編譯NBP文件,這樣的話我們能很清楚地了解文件調用情況,便于根據實際需求制定方案)
獲取ipxe源
從ipxe.org官網獲取ipxe的源碼
git clone?https://github.com/ipxe/ipxe.git
創(chuàng)建ipxe自定義腳本
切換目錄到ipxe/src/, 然后創(chuàng)建自定義ipxe腳本myipxe.script
#ipxe
:retry\_dhcp
dhcp || goto retry\_dhcp
chain http://${next-server}/ipxe.txt
內容說明:
上述例子中文件名可以自己定義,第一行是ipxe腳本的語法,中間的兩行是實現“當dhcp沒獲取到ip時,不斷重試dhcp,直到獲取到ip”,最后一行是指定調用的文件,其中變量${next-server}是由dhcp服務傳遞過來的(這個調用的機制與CentOS7.X官方ISO中的NBP文件BOOTX64.EFI默認調用grub.cfg文件的原理類似)
ipxe是一個強大的工具,如果需要ipxe支持https,nfs等其他文件傳輸方式,可以在編譯前修改ipxe/src/config/general.h文件,將對應協議前的#undef替換為#define
編譯基于ipxe的NBP文件
編譯ipxe的NBP文件,因為http boot只支持UEFI啟動模式,所以我們需要編譯uefi版本的NBP文件,編譯完成后,我們將生成的ipxe.efi文件拷貝到網絡部署服務器上待用。
make bin-x86\_64-efi/ipxe.efi EMBED=myipxe.script
HTTP boot服務器的搭建
dhcp配置文件準備
以下是本實驗中用到的dhcp配置文件,以下例子中dhcp會根據客戶端發(fā)送請求的標志區(qū)分其發(fā)送的是pxe請求還是http boot請求,指定不同的NBP文件。
cat /etc/dhcp/dhcpd.conf
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16;
allow booting;
allow bootp;
subnet 172.20.0.0 netmask 255.255.0.0 {
range 172.20.0.101 172.20.200.240;
default-lease-time 36000;
max-lease-time 36000;
next-server 172.20.0.1;
option routers 172.20.0.11;
option domain-name-servers 208.67.222.222,8.8.8.8;
class "pxeclients"{
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
filename "bootx64.efi";
}
class "httpclients" {
match if substring (option vendor-class-identifier, 0, 10) = "HTTPClient";
option vendor-class-identifier "HTTPClient";
filename "http://172.20.0.1/ipxe.efi";
}
}
內容說明
根據上面的dhcp服務的配置文件,http boot的機器會嘗試獲取http://172.20.0.1/ipxe.efi這個NBP文件,所以我們需要將前面編譯好的ipxe.efi文件放到http服務相應的目錄(本測試用的是默認的/var/www/html/目錄)
在前面創(chuàng)建ipxe自定義腳本時,我們指定了NBP文件啟動后會調用的腳本http://${next-server}/ipxe.txt,所以我們需要編輯這個文件,并放到http服務相應的目錄/var/www/html/
ipxe 內容
cat ipxe.txt
#!ipxe?
:start
menu HTTP Boot CentOS8.1
item --key 1 http\_boot\_centos\_installer
:http\_boot\_centos\_installer
echo CentOS8.1 Installer
set server\_ip 172.20.0.1
kernel http://${server\_ip}/centos81/images/pxeboot/vmlinuz initrd=initrd.img inst.ks=http://${server\_ip}/dxl-ks.cfg rd.net.timeout.carrier=30 inst.ksdevice=link inst.ip=dhcp
initrd http://${server\_ip}/centos81/images/pxeboot/initrd.img
boot || goto failed
內容說明
上面的定義實際上類似于pxe部署時對grub.cfg文件的定義,按上面定義的路徑在httpd服務的根/var/www/html/下創(chuàng)建好centos81目錄并掛載CentOS8.1的安裝鏡像, 將kickstart文件(本實驗中指定的kickstart文件是dxl-ks.cfg)復制到/var/www/html/目錄。
總的來說,在ipxe中指定的kernel、initrd、ks文件要能被訪問。
服務器端開啟http boot
服務器端開啟http boot,本實驗中測試了聯想服務器SR650V2和SR660V2,對應的設置項分別如下:
Thinkserver SR660V2的設置項
Bios.IPv4HTTPSupport=Enable
Thinksystem SR650V2的設置項
NetworkStackSettings.IPv4HTTPSupport=Enabled
HTTP Boot 驗證
將服務器開機,根據提示按F12,然后選擇“HTTP IP4”(注意不是PXE IP4)的啟動項即可http boot
如果需要將http boot加入到啟動項中,請參考如下鏈接的第19頁
Using HTTP Boot to Install an Operating System on Lenovo ThinkSystem servers > Lenovo Press
ipxe引導成功
圖片
更多技術文檔請訪問365文檔