IPXE初识及其简单应用
最近迷上了网络启动这回事,查询了部分文档,做了基本测试和总结,以供以后参考。
概述:
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求DHCP服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。
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启动目录位置即可。
其它设置待续... ...