企业级基于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交換機配置項如下(思科三層交換機):
若局域網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,個人習慣罷了。
注:如果你發現根本不存在 /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。
注:
[windows] 用于存放各類操作系統鏡像,方便在PE下掛載,無需賬號密碼,只讀
[data] 用于存放臨時文件,需賬號密碼(samba/samba),讀寫權限
啟動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),如:
其中名為system.iso是自己客制化的一個PE系統,后面也會提到,如何通過IPXE配置文件調用這些PE文件(即default配置文件)
啟動HTTP并設置開機自啟
systemctl start httpdsystemctl enable httpd4.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目錄,如:
以上是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 --list-ports重新載入
firewall-cmd --reload刪除
firewall-cmd --zone=public --remove-port=80/tcp --permanent2.自定義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方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运算放大器设计注意
- 下一篇: 【软件】电脑店U盘启动盘v7.01(DI