網絡啟動一:之IPXE初識及其簡單應用
最近迷上了網絡啟動這回事,查詢了部分文檔,做了基本測試和總結,以供以後參考。
概述:
PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的技術,工作於Client/Server的網絡模式,支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啟動操作系統,在啟動過程中,終端要求DHCP服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件包完成終端(客戶端)基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。PXE可以引導多種操作系統,如:
IPXE 官方網址 http://ipxe.org/
gPXE/iPXE是PXE的擴展版,支持HTTP協議,可以通過http、ISCSI SAN、Fibre Channel SAN via FCoE AoE SAN wireless network Infiniband network等方式啟動。
iPXE由gPXE分支而來(fork),功能更豐富。
iPXE is free, open-source software licensed under the GNU GPL (with some portions under GPL-compatible licences)
使用過程:winboot網絡啟動windows系列PE
環境:PXE主機:Centos6.9 min + dhcp + tftp 主機IP 172.16.30.73
http主機 http://172.16.30.121/win10/boot window10PE目錄/opt/nfsdata/win10/boot
源碼下載
源碼下載位置統一放置到/usr/local/src目錄。
http://git.ipxe.org/ipxe.git
IPXE:
1.依賴包安裝,具體安裝方式略過。
yum install gcc binutils make perl liblzma mtools mkisofs xz-devel
2.解包
cp ipxe-79e81f8.tar.gz /usr/local/src
cd /usr/local/src
tar zxvf ipxe-79e81f8.tar.gz
cd ipxe-79e81f8
3.編譯
make
具體編譯參數,請參考buliding介紹 http://ipxe.org/buildcfg
4.Wimboot:
http://git.ipxe.org/releases/wimboot/wimboot-latest.zip
cd /usr/local/src
unzip wimboot-latest.zip
5.安裝dhcp tftp xinetd 服務
yum install dhcp tftp-server xinetd
5.1配置dhcp服務。
vi /etc/dhcp/dhcpd.conf
------------------
option client-arch code 93 = unsigned integer 16;
default-lease-time 600;
max-lease-time 7200;
#ddns-update-style interim;
subnet 172.16.30.0 netmask 255.255.255.0 {
range 172.16.30.50 172.16.30.70;
option routers 172.16.30.73;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 172.16.30.73;
if option client-arch != 00:0 {
filename "ipxe.efi";
} else {
#filename "pxelinux/pxelinux.0";
filename "undionly.kpxe";
}
}
server-name "BobWong";
}
-----------------
5.2修改tftp配置
sed -i '/disable/s/yes/no/' /etc/xinetd.d/tftp
啟動相關服務
service dhcpd restart
service xinetd restart
加入開機啟動
chkconfig dhcpd --level 345 on
5.3防火墻添加放行策略
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 67:69 -j ACCEPT
5.6
掛載windows10安裝盤ISO文件到/mnt/share目錄
mount -o loop windows10-mul-x64.iso /mnt/share
拷貝啟動文件及其boot.wim 到http主機制定目錄
說明:可以直接拷貝win10安裝盤裏面的boot.wim,也可以使用windows ADK 裏面的winpe.wim。
具體定制過程略過,本文用的是win10安裝盤裏面的boot.wim 文件,刪除了鏡像2裏面的setup.exe 並添加了exsi主機網卡驅動。
http windows啟動目錄如下
---------------------------
├── boot
│ ├── bcd
│ ├── bootfix.bin
│ ├── boot.sdi
│ ├── bootsect.exe
│ ├── etfsboot.com
│
├── boot.ipxe
├── bootmgr
├── bootmgr.efi
├── efi
│ ├── boot
│ │ └── bootia32.efi
│ └── microsoft
│ └── boot
│ ├── bcd
│ ├── cdboot.efi
│ ├── cdboot_noprompt.efi
│ ├── efisys.bin
│ ├── efisys_noprompt.bin
│ ├── fonts
│ │ ├── chs_boot.ttf
│ │ ├── cht_boot.ttf
│ │ ├── jpn_boot.ttf
│ │ ├── kor_boot.ttf
│ │ ├── malgun_boot.ttf
│ │ ├── malgun_console.ttf
│ │ ├── malgunn_boot.ttf
│ │ ├── meiryo_boot.ttf
│ │ ├── meiryo_console.ttf
│ │ ├── meiryon_boot.ttf
│ │ ├── msjh_boot.ttf
│ │ ├── msjh_console.ttf
│ │ ├── msjhn_boot.ttf
│ │ ├── msyh_boot.ttf
│ │ ├── msyh_console.ttf
│ │ ├── msyhn_boot.ttf
│ │ ├── segmono_boot.ttf
│ │ ├── segoen_slboot.ttf
│ │ ├── segoe_slboot.ttf
│ │ └── wgl4_boot.ttf
│ ├── memtest.efi
│ ├── resources
│ │ └── bootres.dll
│ └── winsipolicy.p7b
├── sources
│ └── boot.wim
└── wimboot
------------------------------
5.7
在http服務器windows10啟動目錄創建boot.ipxe文件,內容如下。
-------------
#!ipxe
#Windows BOIS
kernel wimboot
initrd boot/bcd BCD
initrd boot/boot.sdi boot.sdi
initrd sources/boot.wim boot.wim
boot
-----------------
說明:以上支持bois啟動,如需支持uefi啟動,只需添加bootmgr.efi文件即可。
6.開機測試。
1.開機,選擇網卡啟動,按ctrl+b 進入cmdline
2.獲取ip
dhcp net0
3.訪問http服務器上的目錄
chain http://172.16.30.121/win10/boot/boot.ipxe
速度還是很快的,就進入了PE
如需自己測試,請根據自己的環境修改主機地址和http服務器地址及其windows啟動目錄位置即可。
其它設置待續... ...
網絡啟動一:之IPXE初識及其簡單應用