一.目的

无需U盘,通过网络PXE启动,实现快速安装操作系统!

二.实验环境(皆依托于实际生产环境)

实验拓扑如下,规划出两个网段:生产(10.142.184.0/24)、办公(10.157.208.0/24),把IPXE服务器网络放于办公网络下,当然也可置于产线网,也可以双网卡(办公、产线网络分别接入IPXE服务器,只是双网卡违背了网络隔离的初衷,存在安全隐患),这里把IPXE服务器接入办公网络,通过acl控制,让生产网络下设备也能访问IPXE服务器。

三.安装步骤

  • centos系统安装
  • 办公、产线交换机配置
  • IPXE相关服务安装配置
    • TFTP服务配置

      • 启动TFTP服务并设置开机自启
    • Samba服务配置
      • 启动Samba并设置开机自启
    • HTTP服务配置
      • 启动HTTP并设置开机自启
  • IPXE配置

1.centos系统安装

系统安装没有特别需要注意的地方,正常安装即可,本实验使用centos8.5

2.办公、产线交换机配置

这很重要,请耐心看完!很多教程直接在IPXE服务器上安装DHCP,然后配置地址池等,这样做不是不行,但是,实际的局域网中(交换机或DHCP服务器)已经配置了DHCP,IPXE再配置DHCP,会有地址抢占,冲突的风险(退一万步讲,即使不考虑地址冲突问题,假如网络开机时,客户机从交换机的DHCP获取到地址,而不是从IPXE的DHCP获取到地址,那它还能抓取到lpxelinux.0,实现网络开机吗?)
我的应对方法:
因我公司局域网DHCP是使用三层交换机(Cisco)来做的,我直接在DHCP交换机里指定PXE服务器启动文件及IP地址。
例:办公DHCP交换机配置项如下(思科三层交换机):

 ip dhcp pool office                      # DHCP地址池名称为officenetwork 10.157.208.0 255.255.255.0    # DHCP可分配的IP地址范围bootfile lpxelinux.0                  # IPXE的启动文件next-server 10.157.208.188            # IPXE服务器的IP地址

若局域网DHCP是windows server搭建的,则在每个地址池的66与67项添加指向即可,即 bootfile 与 next-server

注:
lpxelinux.0是IPXE的启动文件,PXE启动文件只能通过TFTP方式传输,需要把他存放到TFTP的家目录,即后面说的/tftpboot/下;
next-server指向IPXE服务器的IP地址;
在产线DHCP三层交换机添加指向的方法一样,这么指,默认是不通的(因为产线、办公网隔离),需在路由器添加一条ACL,将产线去往办公UDP:69流量放行(TFTP使用UDP:69)
另外本实验还需HTTP,samba,相应的产线去往办公的TCP:80(HTTP)、TCP:445(samba)流量也要放行,即产线若要访问办公PXE,需要3条ACL

3.IPXE相关服务安装配置

一个命令安装所有:

yum -y install  tftp-server tftp  httpd samba xinetd

注:xinetd是tftp-server的托管服务;

(1).TFTP服务配置

TFTP作用:IPXE启动文件只能基于TFTP传输,如压缩内核vmlinuz与系统初始化文件initrd.img等启动文件
TFTP服务需要由xinetd服务来托管,修改 /etc/xinetd.d/tftp 文件,编辑disable = yes这一行,修改为 disable = no(如行9),在/下创建名为tftpboot目录,并把tftp目录指向/tftpboot(如行8),当然也可以默认TFTP的工作目录为/var/lib/tftpboot,个人习惯罢了。

service tftp
{socket_type             = dgram
protocol                = udp
wait                    = yes
user                    = root
server                  = /usr/sbin/in.tftpd
server_args             = -s /tftpboot
disable                 = no
per_source              = 11
cps                     = 100 2
flags                   = IPv4
}

注:如果你发现根本不存在 /etc/xinetd.d/tftp 这个文件,那就手动创建它,并赋权755

启动TFTP服务并设置开机自启

systemctl start xinetd
systemctl start tftp
systemctl enable xinetd
systemctl enable tftp

(2).samba服务配置

Samba作用:通过PXE启动进入PE后,挂载samba里的镜像文件,实现装机
Samba服务的主要配置文件为:/etc/sambs/smb.conf

[global]workgroup = WORKGROUPserver string = Samba Server Version %vlog file = /var/log/samba/log.%mmax log size = 50map to guest = Bad Userpassdb backend = tdbsamsecurity = USERguest account = nobodypublic = Yesdns proxy = Nont acl support = Nokernel oplocks = no[windows]comment = Windows Imagelevel2 oplocks = Nolocking = Nooplocks = Nopath = /samba/windowsread only = No[data]comment = Windows datapath = /samba/data/public = noadmin users = sambavalid users = @sambabrowseable = yeswritable = yescreate mask = 0777directory mask = 0777force directory mode = 0777force create mode = 0777

注:
[windows] 用于存放各类操作系统镜像,方便在PE下挂载,无需账号密码,只读
[data] 用于存放临时文件,需账号密码(samba/samba),读写权限

创建samba账户命令:
[root@localhost ~]# smbpasswd -a samba    #创建一个名为samba的账户
New SMB password:                         #输入samba账户的密码
Retype new SMB password:                  #确认密码

启动samba并设置开机自启

 systemctl start smbsystemctl enable smb

(3).HTTP服务配置

HTTP作用:客户机网络启动,进入PXE菜单后,例如要进入U启通(或Win PE),客户端需要透过网络下载U启通文件到缓存,默认是通过TFTP传输,过程非常非常缓慢,若改用HTTP传输,传输速率可提升N倍
HTTP无需做任何特殊配置,把你需要的Win PE iso放到HTTP工作目录即可(/var/www/html),如:

[root@DRBL html]# pwd
/var/www/html
[root@DRBL html]# ll
总用量 5507176
drwxrwxrwx. 2 root root        66 12月 15 2021 clonezilla
-rw-r--r--  1 root root 320864256 12月 25 2021 clonezilla-live-2.7.3-19-amd64.iso
-rwxrwxrwx  1 root root 780918784 11月 30 2021 EasyU_v3.5.iso
-rwxrwxrwx  1 root root     25756 11月 30 2021 memdisk
-rw-r--r--  1 root root 424443904 12月 27 2021 system.iso
drwxrwxrwx  2 root root        73 4月  18 10:24 test
drwxrwxrwx  2 root root        43 12月  2 2021 uqitong
-rwxrwxrwx. 1 root root 219451392 11月 24 2021 WePE_64_V2.1.iso
-rwxrwxrwx  1 root root 431263744 12月  6 2021 WinPE.iso

其中名为system.iso是自己客制化的一个PE系统,后面也会提到,如何通过IPXE配置文件调用这些PE文件(即default配置文件)

启动HTTP并设置开机自启

 systemctl start httpdsystemctl enable httpd

4.IPXE配置

首先需要理清楚几个概念:pxe, ipxe, pxelinux,以及几个名词:pxelinux.0, ipxelinux.0

  • pxe是一个协议,跟mbr是一个性质的东西,它规定了CPU启动后通过什么方式获取引导代码并执行。
  • pxe的实现有许多,不同的厂商有不同的实现。并且pxe的实现代码主要有两种存放位置,一种是存在主板上,一种是存在网卡里,现在新的网卡一般都自带了pxe的实现代码。(去mbr查找引导代码的实现是在主板上的。)
  • 由于pxe协议比较“落后”,仅支持tftp传输数据,性能差,灵活性也差,于是有了gpxe这个项目。gpxe是一种兼容pxe的实现,并且在pxe之上增加了许多特性,例如通过http/ftp等协议传输数据。
  • gpxe原先使用的域名的拥有者突然收回了该域名的使用权,于是这些人fork出去做了ipxe,gpxe现在已经不再开发,ipxe开发非常活跃。
  • 一些较新的intel的网卡里都带了gpxe的实现代码,最新的可能会带ipxe代码。
  • pxelinux是syslinux项目的一个部分,syslinux主要有三个产出,syslinux、isolinux、pxelinux,分别用于硬盘、光盘、网络启动,它的角色与grub相同。
    ​* 由于大多数网卡、主板都不自带gpxe/ipxe的代码,所以通常引导时需要这样的途径: pxe -> ipxe -> pxelinux.bin,后面这两步可以合并,于是大家就把ipxe与pxelinux.bin​的代码合体,做成了 ipxelinux.0 (gpxe+pxelinux.bin = gpxelinux.0)。一般习惯上裸的pxelinux镜像用.bin后缀,加上gpxe/ipxe之后用.0后缀。此外还会有.lkrn后缀,这是ipxe的东西,ipxe的代码默认只能通过pxe协议的方式加载,他们搞了另外一个代码入口,使得可以通过像linux kernel的方式一样加载(就是可以通过grub引导),这种镜像的后缀是lkrn.
  • 所以可行的引导过程可以有这些:
    • 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
    • grub -> ipxe.lkrn -> pxelinux.bin -> menu.c32
    • grub -> ipxelinux.lkrn -> menu.c32
    • ipxe(烧入网卡) -> pxelinux.bin

由于pxe代码是主板、网卡自带的,所以兼容性最好(至少本机的代码兼容本机的设备)。而ipxe兼容性略差(只是相对来说,因为我们编译时可能会漏掉一些网卡,或者一些特殊问题不好解决),曾经尝试过直接一步 pxe -> ipxelinux.0,但是发现有一些机器无法启动,加载ipxe之后就停住了。所以后来退而求其次,用两步加载,对于ipxe不支持的设备,可以在第一步pxe->pxelinux.bin之后手快一些按任意键中断,然后仍然可以使用pxe,不过之后我们一直没有维护通过tftp加载的pxelinux以及配置文件,所以那部分内容其实现在都已经严重过时了。通过论坛查看详细说明
废话不多说,回到正题!
下载所需IPXE启动文件:点击这里下载

里面包括有 lpxelinux.0,menu.c32,ldlinux.c32,libutil.c32,memdisk 等PXE引导需要用的文件。也可以自己安装centos8,然后安装syslinux,把以上几个内核文件拷贝下来(centos7版本自带的syslinux版本号还是4.05,所以如果要6.04版本,最好从centos8里提取)
把提取的文件存放到/tftpboot/下赋权777,并创建pxelinux.cfg目录,如:

[root@DRBL tftpboot]# pwd
/tftpboot
[root@DRBL tftpboot]# ll
总用量 36012
-rwxrwxrwx. 1 root root 264945664 11月 24 15:16 filesystem.squashfs  #再生龙启动文件
-rwxrwxrwx. 1 root root  29770260 11月 24 15:16 initrd.img           #再生龙镜像文件
-rwxrwxrwx. 1 root root   6821216 11月 24 15:16 vmlinuz              #再生龙内核
-rwxrwxrwx. 1 root root     74907 11月 24 15:16 lpxelinux.0          #IPXE预启动
-rwxrwxrwx. 1 root root    116096 11月 24 15:16 ldlinux.c32          #IPXE预启动依赖
-rwxrwxrwx. 1 root root     22804 11月 24 15:16 libutil.c32          #IPXE预启动依赖
drwxrwxrwx. 2 root root        21 11月 24 15:16 pxelinux.cfg         #IPXE配置文件目录
-rwxrwxrwx. 1 root root     25756 11月 24 15:16 memdisk              #window PE预启动
-rwxrwxrwx. 1 root root     26272 11月 24 15:16 menu.c32             #默认蓝色背景预启动菜单(不可自定义菜单背景等)
-rwxrwxrwx. 1 root root     26788 11月 24 15:16 vesamenu.c32         #标准菜单(可自定义菜单背景、颜色等)
-rwxrwxrwx. 1 root root    180668 11月 24 15:16 libcom32.c32         #标准菜单依赖
-rwxrwxrwx. 1 root root    259251 11月 24 15:15 background.png       #自定义的菜单背景(只支持640x480)

以上是IPXE全部的预启动文件,而启动配置文件存放在pxelinux.cfg/default里(名字只能是default),vim /pxelinux.cfg/default编辑启动菜单配置文件:

default vesamenu.c32  #标准菜单(默认是menu.c32蓝色菜单)
prompt 0
timeout 600           #菜单等待时间(60秒)
ontimeout local       #超时本地启动
display boot.msg      #显示描述信息(有描述信息的话)menu clear
menu background background.png             #自定义背景
menu title FOXCONN Ems2 IPXE Boot Menu     #启动菜单抬头menu color screen   37;40               #80ffffff #00000000 stdmenu color border   30;44               #400060 #00000000 stdmenu color title   1;36;44              #20ff00 #00000000 stdmenu color unsel   37;44                #ffff00 #00000000 stdmenu color hotkey   1;37;44             #ffffffff #00000000 stdmenu color sel      7;37;40             #ff0000 #20ff8000 allmenu color hotsel   1;7;37;40           #e0400000 #20ff8000 allmenu color disabled   1;30;44           #60cccccc #00000000 stdmenu color scrollbar   30;44            #20ff00 #00000000 stdmenu color tabmsg   31;40               #2000ff #00000000 stdmenu color cmdmark   1;36;40            #c000ffff #00000000 stdmenu color cmdline   37;40              #c0ffffff #00000000 stdmenu color pwdborder   30;47            #80ffffff #20ffffff stdmenu color pwdheader   31;47            #80ff8080 #20ffffff stdmenu color pwdentry   30;47             #80ffffff #20ffffff stdmenu color timeout_msg   37;40          #600000 #00000000 stdmenu color timeout   1;37;40            #40ffff #00000000 stdmenu color help      37;40              #c0ffffff #00000000 stdmenu color msg07   37;40                #90ffffff #00000000 std#本地启动#
label local
menu label 1. Boot from local disk
localboot 0xffff#U启通3.5自定义修改#
label EasyU_v3.5
menu label 2. Custom EasyU_v3.5_PE
kernel http://10.157.208.188/uqitong/MEMDISK
append initrd=http://10.157.208.188/uqitong/EASYU_V3.5.iso iso raw#自己做的PE#
label Install System
menu default
menu label 3. Install System
kernel http://10.157.208.188/memdisk
append initrd=http://10.157.208.188/system.iso iso raw#微PE#
label WePE_64_V2.1
menu label 4. WinPE
kernel memdisk
append initrd=http://10.157.208.188/WePE_64_V2.1.iso iso raw#再生龙#
label clonezilla-live-2.7.3-19-amd64
menu label 5. clonezilla-live
kernel http://10.157.208.188/clonezilla/vmlinuz
append initrd=http://10.157.208.188/clonezilla/initrd.img boot=live union=overlay noswap noeject nolocales vga=788 locales=zh_CN.UTF-8 keyboard-layouts=NONE fetch=tftp://10.157.208.188/filesystem.squashfs#硬盘检测#
label hdat2cd_lite_74.iso
menu label 6. HDD Test
kernel memdisk
append initrd=http://10.157.208.188/test/hdat2cd_lite_74.iso iso raw#内存检测#
label mt531b.iso
menu label 7. Memory Check
kernel memdisk
append initrd=http://10.157.208.188/test/mt531b.iso iso raw

四.效果展示


五. 扩展说明

1.添加防火墙白名单

用于现网中,还是建议开启防火墙,以添加防火墙白名单方式运作
TFTP,HTTP,samba添加防火墙白名单(永久生效),提示 success 表示成功

 firewall-cmd  --zone=public --add-port=69/udp--permanentfirewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=445/tcp --permanent

查看已开放的端口

firewall-cmd --zone=public --list-ports

重新载入

firewall-cmd --reload

删除

firewall-cmd --zone=public --remove-port=80/tcp --permanent

2.自定义PE

对于公司装机,PE需有以下要求
1.体积小(通过网络加载时间短)
2.必须内置网卡驱动(挂载samba共享)
目前市面上比较好用的PE推荐微PE(体积只有200MB左右)与U启通(3.5以上版本内置网卡驱动),但遗憾的是微PE未内置网卡驱动,U启通3.5以上版本体积700MB以上,很难满足个性化需求,综上,需要自定义PE。但是,对于新手来说,从iso提取install.wim文件来新做PE,似乎不那么容易。选用一款跟当前业务匹配较高的PE,去修改它,话题较敏感,只能大概说一下流程
<1>.使用UltraISO解开匹配的PE,并提取出里面的.wim文件

<2>.使用Wim Tool解开.wim文件即可自定义程序,例如解到C:\temp


<3>.定义完成后,新制.wim文件

<4>.将新制.wim文件与PE里的旧.wim文件替换,另存即可
可以看到,定义的PE大小仅400M左右,符合预期

3.PE下挂载samba共享盘批处理

我是这么做的

@echo off
chcp 65001
color 9F
ping 10.157.208.188 > nul
if %errorlevel% leq 0 (echo 网络正常,可以连接到10.157.208.188服务echostart net use p: \\10.157.208.188\windowsstart X:\PESOFT\EasyImageX2\EasyImageX2.exe
) else (echo 网络异常,无法连接到10.157.208.188,请等待网络加载完成后再试......pause
)

注:
chcp 65001防乱码
color 9F蓝色窗口
ping 10.157.208.188 > nul简单检测是否能与IPXE通信,若能,则回复“网络正常,可以连接到10.157.208.188服务”,并自动挂载samba,打开EasyImageX2装机程序;若不能,则回复“网络异常,无法连接到10.157.208.188,请等待网络加载完成后再试…”
若想让此批处理看起来更高大尚一些,可利用Bat To Exe Converter工具,将批处理转换成exe程序
例如:

——其他文档——
再生龙部署教程
其他大神写的部署教程

企业级基于Centos8.5配置IPXE服务批量部署windows方案相关推荐

  1. 基于Cobbler实现多版本系统批量部署

    前言 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的.记得前面我们探究了基于PXE实现系统全自动 ...

  2. 企业实战|基于Cobbler实现多版本系统批量部署

    前言 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的.记得前面我们探究了基于PXE实现系统全自动 ...

  3. Centos7配置Samba服务实现与Windows文件共享

    一.安装samba软件包 yum insatll samba -y 二.关闭selinux和防火墙,开启samba服务,开机启动samba服务 setenforce 0 sed -i 's/SELIN ...

  4. 基于ansible role实现LAMP平台批量部署 - 推酷

    基于ansible role实现LAMP平台批量部署 - 推酷 基于ansible role实现LAMP平台批量部署 - 推酷 posted on 2016-04-07 17:17 lexus 阅读( ...

  5. apollo 配置中心 支持php,apollo配置中心服务端部署

    apollo配置中心服务端部署 木某人 • 2020 年 05 月 07 日 Apollo服务端安装部署 apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象 ...

  6. Win2008server 环境部署 WDS,用来批量部署 windows 系统

    1.WDS的介绍 1.1什么是WDS WDS,即WindowsDeployment Services的缩写,中文含义为Windows部署服务,类似于Linux系统的PXE,可以用来批量部署Window ...

  7. WDS批量部署Windows系统

    1.WDS的介绍 1.1什么是WDS WDS,即WindowsDeployment Services的缩写,中文含义为Windows部署服务,类似于Linux系统的PXE,可以用来批量部署Window ...

  8. 五、MDT 2013 Update 1批量部署-WINDOWS 7样本机镜像部署

    五.MDT 2013 Update 1批量部署-WINDOWS 7样本机镜像部署 5.1 样本机镜像导入 这里选custom p_w_picpath file 选择样本机镜像 不需要复制安装文件 设置 ...

  9. 基于华为云区块链服务快速部署和搭建链上应用

    华为云区块链服务的整体架构 华为云区块链服务BCS是面向企业及开发者的高性能.高可用和高安全的区块链技术平台服务,可以帮助企业和开发人员在华为云上快速.低成本的创建.部署和管理区块链应用. BCS基于 ...

最新文章

  1. 通过反射执行get、set方法
  2. 597个智慧城市相关试点将临大考
  3. PlaneTR:一种用于提取场景中3D平面特征的Transformer(ICCV 2021)
  4. 你应该知道的青否小程序第三方平台
  5. Wireshark抓包与常见问题解决
  6. input不可编辑属性_谁不喜欢图文并茂呢:基于多模态信息的属性抽取
  7. SELECT语句,去除某个字段的重复信息
  8. r psm倾向性匹配_南瓜香料指标psm如何规划季节性广告
  9. Mac selenium调试已经存在的Chrome浏览器
  10. Android 封装handler,Android 异步通信原理机制-- handler
  11. 好几个div(元素)找到最后一个
  12. NS2仿真过程中需要的语言及基本组件
  13. 为什么acdsee服务器怎在运行,ACDSee 启动时报错的解决方法
  14. 【机器学习-周志华】学习笔记-第十章
  15. Apache commons digester简介说明
  16. 手机蓝牙绑定pc,离开电脑自动锁屏
  17. 有没有不用加班的程序员?如何衡量程序员的工作量?
  18. 一个典型业务系统卡顿故障分析
  19. Solved ERROR: Could not build wheels for hdbscan which use PEP 517 and cannot be installed directly
  20. Onenote无法登录报错显示0xE000078D解决方法

热门文章

  1. AI版女网红“半藏森林”上线,服务项目让人意想不到
  2. 苹果计算机音乐谱大全,【B型】Bad Apple!五分钟完整版 新人第一次扒谱
  3. 在数智化时代,寻找发光的你!——2022大数据能力提升项目宣讲会成功举行
  4. 桩基础资料竣工图系列软件
  5. 红外弱小目标检测之“Asymmetric Contextual Modulation for Infrared Small Target Detection“阅读笔记
  6. utorrent开机自启动
  7. android studio 3.0以后主moudle无法调用依赖moudle里的jar包问题
  8. 联想服务器开机引导,联想服务器怎么进入bios
  9. EDA软件_Cadence软件使用教程视频学习笔记
  10. ubantu-20.04.3安装OTRS