网络启动一:之IPXE:企业应用


前几天写了IPXE简单应用内容,今天详细介绍使用IPXE在企业中的应用,部署Linux系统和Windows系统。


操作步骤:


一、搭建环境

1.1.操作系统:CentOS6.9 Min  /CentOS7.4 Min  172.16.30.57

    安装文件存放服务器  http://172.16.30.121  目录有centos6.9 centos7.3 ubuntu16 eg..

    配置菜单服务器地址  http://172.16.30.57/ipxe 或其它服务器地址。

    建议与tftp服务器在一起,这样简化安装和配置过程。

       

安装过程略


1.2.安装依赖包

官方指定的依赖包

yum install gcc binutils make perl liblzma mtools mkisofs xz-devel


1.3.官方网站ipxe

 http://ipxe.org/download

下载最新版本即可,目前为ipxe-79e81f8.tar.gz


文件下载位置 /usr/local/src


1.4. 解压并编译

cd /usr/local/src

tar zxvf ipxe-79e81f8.tar.gz

cd ipxe-79e81f8

编译:


make

make 不加参数代表编译所有类型。

待ftp-server 安装完毕后,复制ipxe-version/bin/undionly.kpxe /var/lib/tftpboot/undionly.kpxe


1.5 安装 tftp+dhcp+xinetd+httpd

yum install dhcp tftp-server xinetd


二、配置环境

2.1.修改tftp配置。

sed -i '/disable/s/yes/no/' /etc/xinetd.d/tftp


2.2 修改dhcpd配置

--------------------------

# DHCP Server Configuration file.

#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

#   see 'man 5 dhcpd.conf'

#

#option space ipxe;

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.60 172.16.30.70;

  option routers 172.16.30.57;


 class "pxeclients" {

        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";


        next-server 172.16.30.57;

        if option client-arch != 00:00 {

           filename "ipxe/ipxe.efi";

        } else {

           filename "ipxe/undionly.kpxe";

        }

   }

   server-name "TestIPXE";

}

-----------------------------------

以上为dhcp配置


2.3 修改httpd.conf

sed -i 's/#ServerName www.example.com:80/ServerName *:80/g' /etc/httpd/conf/httpd.conf


2.4 配置ipxe目录

mkdir /var/lib/tftpboot/ipxe

mkdir /var/www/html/ipxe


2.5 定制 undionly.kpxe


说明:默认undionly.kpxe 循环启动,如果要使用自己的ipxe菜单,则需要定制编译才可以。


2.5.1.编译定制文件


cd /usr/local/src/ipxe-79e81f8


touch demo.ipxe


vi demo.ipxe

-----------------------

#!ipxe

dhcp

#此处的地址为菜单的位置,可以为本机也可以为外网地址。

chain http://172.16.30.57/ipxe/ipxe.html

#make bin/undionly.kpxe EMBED=demo.ipxe

-----------------------

make bin/undionly.kpxe EMBED=demo.ipxe


2.5.2.拷贝文件到tftp目录

cp bin/undionly.kpxe /var/lib/tftpboot/ipxe/


如果要使用UEFI启动,则需要下载ipxe.efi,测试可以使用,但是慢的无法忍受,所以暂时不推荐。


2.6制作ipxe菜单

费了几番功夫研究菜单事宜,最终使用以下配置成功。


vi /var/lib/tftpboot/ipxe.html


------------

#!ipxe

#自定义变量

set dirpath http://172.16.30.121

set kspath ${dirpath}/kickstarts


#定义菜单

#clear custom_choice

#菜单名称

menu My First Menu Test

#菜单明细

item --gap Linux series

item centos7 --CentOS 7.4

item centos6 --CentOS 6.9

item --gap Windows series

item win10x64 --Windows 10 x64

item win10x32 --Windows 10 x32

item HardDisk --From hard disk

item custom_exit --Exit

#定义选择参数

choose --default custom_exit --timeout 30000 custom_choice || goto custom_exit

echo ${cls}

goto ${custom_choice}

goto custom_exit


#引导Label

:centos7

kernel ${dirpath}/centos7.4/isolinux/vmlinuz ip=dhcp ks=${kspath}/Centos-7.x-min.cfg repo=${dirpath}/centos7.4

initrd ${dirpath}/centos7.4/isolinux/initrd.img

boot || goto custom_exit


:centos6

#略...


:win10x64

kernel ${dirpath}/win10/memdisk raw iso

initrd ${dirpath}/win10/W10X32_CN_PE.iso

boot || goto custom_exit


:win10x32

#略...


:custom_exit

chain utils.ipxe

exit


------------

###注意 ###

以上配置可以自动安装,如果不熟悉或没有对应kickstarts文件,请在kernel后面把参数去掉,那样的话就是手动安装系统了,

kickstarts不在此讨论。





ln -s /var/lib/tftpboot/ipxe/ipxe.html /var/www/html/ipxe/ipxe.html


[root@localhost tftpboot]# tree

.

└── ipxe

    ├── ipxe.html

    └── undionly.kpxe



3.防火墙放行

添加53、69、80等端口,

步骤略...


-A INPUT -s 172.16.10.0/16 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT


如有其它安全设置,请依次放行.



配置基本完成,


启动服务

centos6

service xinetd start

service dhcpd start

service httpd start


centos7 

systemctl start xinetd

systemctl start dhcpd

systemctl start httpd


开机启动

centos6

chkconfig --level 345 xinetd on

... ...


centos7

systemctl enable xinetd

... ...


客户端开机pxe引导

网络启动一:之IPXE:企业应用_ Linux

网络启动一:之IPXE:企业应用_ Linux_02


网络启动一:之IPXE:企业应用_IPXE_03




网络启动一:之IPXE:企业应用_ Linux_04


网络启动一:之IPXE:企业应用_IPXE_05