企业级基于Centos8.5配置IPXE服务批量部署windows方案
一.目的
无需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并设置开机自启
- TFTP服务配置
- 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方案相关推荐
- 基于Cobbler实现多版本系统批量部署
前言 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的.记得前面我们探究了基于PXE实现系统全自动 ...
- 企业实战|基于Cobbler实现多版本系统批量部署
前言 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的.记得前面我们探究了基于PXE实现系统全自动 ...
- Centos7配置Samba服务实现与Windows文件共享
一.安装samba软件包 yum insatll samba -y 二.关闭selinux和防火墙,开启samba服务,开机启动samba服务 setenforce 0 sed -i 's/SELIN ...
- 基于ansible role实现LAMP平台批量部署 - 推酷
基于ansible role实现LAMP平台批量部署 - 推酷 基于ansible role实现LAMP平台批量部署 - 推酷 posted on 2016-04-07 17:17 lexus 阅读( ...
- apollo 配置中心 支持php,apollo配置中心服务端部署
apollo配置中心服务端部署 木某人 • 2020 年 05 月 07 日 Apollo服务端安装部署 apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象 ...
- Win2008server 环境部署 WDS,用来批量部署 windows 系统
1.WDS的介绍 1.1什么是WDS WDS,即WindowsDeployment Services的缩写,中文含义为Windows部署服务,类似于Linux系统的PXE,可以用来批量部署Window ...
- WDS批量部署Windows系统
1.WDS的介绍 1.1什么是WDS WDS,即WindowsDeployment Services的缩写,中文含义为Windows部署服务,类似于Linux系统的PXE,可以用来批量部署Window ...
- 五、MDT 2013 Update 1批量部署-WINDOWS 7样本机镜像部署
五.MDT 2013 Update 1批量部署-WINDOWS 7样本机镜像部署 5.1 样本机镜像导入 这里选custom p_w_picpath file 选择样本机镜像 不需要复制安装文件 设置 ...
- 基于华为云区块链服务快速部署和搭建链上应用
华为云区块链服务的整体架构 华为云区块链服务BCS是面向企业及开发者的高性能.高可用和高安全的区块链技术平台服务,可以帮助企业和开发人员在华为云上快速.低成本的创建.部署和管理区块链应用. BCS基于 ...
最新文章
- 通过反射执行get、set方法
- 597个智慧城市相关试点将临大考
- PlaneTR:一种用于提取场景中3D平面特征的Transformer(ICCV 2021)
- 你应该知道的青否小程序第三方平台
- Wireshark抓包与常见问题解决
- input不可编辑属性_谁不喜欢图文并茂呢:基于多模态信息的属性抽取
- SELECT语句,去除某个字段的重复信息
- r psm倾向性匹配_南瓜香料指标psm如何规划季节性广告
- Mac selenium调试已经存在的Chrome浏览器
- Android 封装handler,Android 异步通信原理机制-- handler
- 好几个div(元素)找到最后一个
- NS2仿真过程中需要的语言及基本组件
- 为什么acdsee服务器怎在运行,ACDSee 启动时报错的解决方法
- 【机器学习-周志华】学习笔记-第十章
- Apache commons digester简介说明
- 手机蓝牙绑定pc,离开电脑自动锁屏
- 有没有不用加班的程序员?如何衡量程序员的工作量?
- 一个典型业务系统卡顿故障分析
- Solved ERROR: Could not build wheels for hdbscan which use PEP 517 and cannot be installed directly
- Onenote无法登录报错显示0xE000078D解决方法
热门文章
- AI版女网红“半藏森林”上线,服务项目让人意想不到
- 苹果计算机音乐谱大全,【B型】Bad Apple!五分钟完整版 新人第一次扒谱
- 在数智化时代,寻找发光的你!——2022大数据能力提升项目宣讲会成功举行
- 桩基础资料竣工图系列软件
- 红外弱小目标检测之“Asymmetric Contextual Modulation for Infrared Small Target Detection“阅读笔记
- utorrent开机自启动
- android studio 3.0以后主moudle无法调用依赖moudle里的jar包问题
- 联想服务器开机引导,联想服务器怎么进入bios
- EDA软件_Cadence软件使用教程视频学习笔记
- ubantu-20.04.3安装OTRS