IPXE初识及其简单应用

    

  最近迷上了网络启动这回事,查询了部分文档,做了基本测试和总结,以供以后参考。


   

   概述:

PXE(preboot execute environment,预启动执行环境)是由 Intel公司开发的技术,工作于Client/Server的网络模式,支持 工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求DHCP服务器分配IP地址,再用 TFTP(trivial file transfer protocol)或 MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows" style="-webkit-font-smoothing: antialiased; font-family: arial, 宋体, sans-serif; margin: 0px; padding: 0px; color: rgb(19, 110, 194); text-decoration-line: none; text-indent: 28px; background-color: rgb(255, 255, 255);"> 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

网络启动一:之IPXE初识及其简单应用_PXE


2.获取ip

dhcp net0

3.访问http服务器上的目录

chain  http://172.16.30.121/win10/boot/boot.ipxe

网络启动一:之IPXE初识及其简单应用_PXE_02


速度还是很快的,就进入了PE

网络启动一:之IPXE初识及其简单应用_PXE_03


如需自己测试,请根据自己的环境修改主机地址和http服务器地址及其windows启动目录位置即可。