
本文將實踐通過燒錄iPXE到相應的VMware虛擬機中,來模擬一個無PXE的自動化安裝環境。
在閲讀本文前,請確保您有足夠瞭解iPXE和PXE的情情愛愛恩恩怨怨。
0x00 相關背景
iPXE有以下的使用方法,不像PXE那麽死板:
- pxe(網卡) -> ipxe -> pxelinux.bin -> menu.c32
- pxe -> ipxelinux.0 -> menu.c32
- pxe -> syslinux.bin -> ipxe -> pxelinux.bin -> menu.c32
- pxe -> syslinux.bin -> ipxelinux.0 -> menu.c32
- pxe -> ipxe.lkrn(ipxe.efi/undionly.kpxe) -> boot.ipxe
- grub -> ipxe.lkrn(ipxe.efi/undionly.kpxe) -> pxelinux.bin -> menu.c32
- grub -> ipxelinux.lkrn -> menu.c32
- ipxe(燒入網卡) -> pxelinux.bin
- ipxe(燒入網卡) -> boot.ipxe
- …
本文實踐的則是最後一種方法。ipxe(燒入網卡) -> boot.ipxe,相較於前文,你將會看見Dnsmasq日志的明顯區別。
0x01 創建VM
VMware虛擬機的vmx文件,支持自定義rom及mrom,這些固件的替換,使其具有ipxe的功能。
下載並編譯
1 | # git clone git://git.ipxe.org/ipxe.git |
啓用iPXE固件
圖形化創建一個無CD的空VM,並確保其與iPXE主機相同LAN。
隨後移動相關固件到該空VM目錄下。
1 | # mv bin/{8086100f.mrom,808610d3.mrom,10222000.rom,15ad07b0.rom} /mnt/g/Virtual Machines/iPXE-test-7 |
然後修改.vmx文件增加以下:
1 | # cd /mnt/g/Virtual Machines/iPXE-test-7 |
0x02 搭建iPXE环境
0x03 檢查日誌
從日誌中可以清晰看到僅調用了boot.ipxe,相較於上篇文章,少了iPXE引導程序的加載。
0x04 結語
本文簡單嘗試了iPXE的加載順序,模擬驗證了iPXE的硬件條件。現在是容器大行其道的時代,批量部署環境只是幾秒鐘的事。但是在與之對應的物理機時代,iPXE仍有它的地位與話語權。