概述
PXE是Intel提出的,用以網卡啟動。通過DHCP獲取IP以及TFTP獲取啟動文件。
gPXE/iPXE是PXE的擴展版,支持HTTP等多種獲取手段。iPXE由gPXE分支而來(fork),功能更豐富。
iPXE的使用
之前我們使用PXE的時候,要在DHCP配置中設置啟動文件為pxelinux.0
-
# Subnet for new 100 subnetsubnet 172.16.100.0 netmask 255.255.254.0 {range 172.16.101.230 172.16.101.240;option subnet-mask 255.255.254.0;option routers 172.16.100.1;next-server 172.16.10.31;filename "pxelinux.0";}
如果使用的是gpxe,那么這個文件名就是 gpxelinux.0
這兩個文件都可以在你syslinux的安裝包中找到。
iPXE就沒那么好了,需要自己下載。
下載鏈接是 http://boot.ipxe.org/undionly.kpxe
然后設定DHCP配置文件
-
next-server 172.16.10.31;filename "undionly.kpxe";
But… 問題來了,你會發現iPXE的啟動界面是一個死循環。
如何打破這個死循環呢?
官方提供了2個辦法,一個是改DHCP的配置,貌似很麻煩,我們還是采用第二種辦法,重新編譯。
-
git clone git://git.ipxe.org/ipxe.gitcd ipxe/srccat <<EOF >> demo.ipxe#!ipxedhcpchain http://boot.ipcpu.comEOFmake bin/undionly.kpxe EMBED=demo.ipxe
其中的chain需要填寫啟動網址。
生成新的undionly.kpxe,我們把它覆蓋掉原先的文件。
接下來,我們就要處理啟動網站了。
啟動網站的處理
啟動網站需要http服務器,這里我們使用了nginx。
首先我們寫入首頁文件index.html
-
#!ipxeechoecho Booting boot.oskarcz.net for ${hostname}set 210:string http://boot.ipcpu.com/set 209:string pxelinux.cfg/defaultset 208:hex f1:00:74:7eset filename ${210:string}pxelinux.0chain ${filename} ||echo Booting ${filename} failed, dropping to shellshell#@加載http://boot.ipcpu.com/pxelinux.0文件#@加載http://boot.ipcpu.com/pxelinux.cfg/default 配置
然后這里就和普通的PXE一樣了,唯一不同的是協議全部是HTTP。
配置文件pxelinux.cfg/default
-
#######################################使用vesamenu.c32菜單DEFAULT res/vesamenu.c32PROMPT 0MENU TITLE PXE NETBOOT TOOLKITS#背景圖片MENU BACKGROUND res/back.png#字體設定FONT res/myfont.psf#超時設定TIMEOUT 300MENU VSHIFT 6#超時默認啟動hardbootONTIMEOUT hardboot#####custom6.6LABEL centos66MENU LABEL ^1 -- Custom CentOS6.6 64bit Setuplinux http://boot.ipcpu.com/pxe/centos6/isolinux/vmlinuzappend initrd=http://boot.ipcpu.com/pxe/centos6/isolinux/initrd.img ks=http://boot.ipcpu.com/secret/ks/centos66.cfg ksdevice=bootif ip=172.1.30.250 netmask=255.255.0.0 gateway=172.1.1.1 dns=172.1.10.1,172.1.10.2 hostname=IPCPU-30-250######boot from harddiskLABEL hardbootMENU LABEL ^H -- Boot from the first Hard Diskkernel res/chain.c32 hd0
界面截圖
QA
QA-1
Q:如何實現公網上的安裝服務?
A:我們看到iPXE配置里寫的是一個網址,將網站發布出去就可以利用公網安裝了。http://boot.oskarcz.net/ 以及 https://netboot.xyz/boot-ipxe/index.html 就是這樣一種服務
QA-2
Q:如何使用公網上的安裝服務
A:在iPXE啟動界面中按下Ctrl+B,中斷默認啟動方式,然后輸入以下內容,即可使用。
-
iPXE> dhcpiPXE> chain http://boot.oskarcz.net
QA-3
Q:如何實現http://boot.oskarcz.net/這種方式呢,瀏覽器訪問時顯示幫助文件。
A:這里是采用nginx對UserAgent進行判斷,UA為iPXE時,根目錄是腳本目錄,其他UA時,根目錄是幫助文件。
QA-4
Q:gPXE有什么缺點呢?
A:gPXE已經停止開發,沒有技術支持了,並且在實際使用中,發現VMWARE ESXi使用gpxe后,下載配置文件特別慢,無法忍受。
