PXE批量安裝CentOS7操作系統
批量部署前首先應該擁有一台部署完成的系統,也就是Server端。
PXE_Server部署DHCP、TFTP、Xinetd、Kickstart、(HTTP/FTP/NFS任選其一,本次部署采用FTP),用來提供安裝所需要的系統文件以及所要安裝的軟件。
關閉Firewalld/SElinux(為實驗方便,減少麻煩,生產環境不推薦)
PXE批量部署原理:
- PXE Client 從自己的PXE網卡啟動,向本網絡中的DHCP服務器請求IP;
- DHCP 服務器返回分配給客戶機的IP 以及PXE文件的放置位置
(該文件一般是放在一台TFTP服務器上); - PXE Client 向本網絡中的TFTP服務器索取pxelinux.0 文件
(在 PXE Client 的 ROM 中,已經存在 TFTP Client); - PXE Client 取得pxelinux.0 文件后之執行該文件;
- 根據pxelinux.0 的執行結果,通過TFTP服務器加載內核和文件系統 ;
- 進入安裝畫面, 此時可以通過選擇HTTP、FTP、NFS 方式之一進行安裝;
1、DHCP服務器:為 PXE-client 分配 IP ,獲得安裝程序文件位置
2、TFTP服務器:傳輸安裝文件、內核、菜單文件等給 PXE-client
3、Xinetd: TFTP服務超級守護進程, 用於喚醒TFTP服務;
4、Kickstart:生成的ks.cfg配置文件 本文沒有介紹Kickstart 安裝
5、HTTP/NFS/FTP 服務中的任意一種,用於傳送安裝源文件給 PXE-client
;:
安裝DHCP服務
yum install dhcp -y
修改配置文件
#vim /etc/dhcp/dhcpd.conf
#———可用最簡配置——————-
網絡和子網掩碼(根據自己實際情況編寫)
subnet 192.168.2.0 netmask 255.255.255.0 { option routers 192.168.2.11; range 192.168.2.3 192.168.2.25; # 指定DHCP地址池 next-server 192.168.2.11; # 指定tftp服務器地址 filename "pxelinux.0"; #指定pxelinux.0文件 }
如果是在多網卡的情況下需要指定某塊網卡啟動DHCP服務,復制文件,修改配置文件,重新注冊服務
cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/ vi /etc/systemd/system/dhcpd.service ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>(我要使用的網卡是ens192) systemctl --system daemon-reload
啟動服務
systemctl start dhcpd.service
systemctl enable dhcpd.service
安裝TFTP服務(無需認證,小文件傳輸)
安裝xinetd、tftp-server和syslinux服務
#syslinux 會在 /usr/share/syslinux/pxelinux.0 生成pxelinux.0文件 ,需要手動復制到/var/lib/tftpboot/ 目錄中,后面詳細介紹。
syslinux文件解析
isolinux.bin 注:光盤鏡像引導文件 isolinux.cfg 注:啟動菜單的配置文件;自編輯 memdisk 注:引導IMG鏡像的文件 vesamenu.c32(或menu.c32) 注:官方提供的二種窗口模塊 chain.c32 注:指定分區啟動 如:chain.c32 hd0,1 (或chain.c32 hd0,2) reboot.c32 注:重新啟動計算機的文件 m16-640x640-syslinux.jpg(或syslinux_splash.jpg) 注:自己可以定義新的圖片作為背景,圖圖片格式 640*480 jpg/png) yum install xinetd -y yum install tftp-server syslinux -y
配置xinetd,由xinetd管理tftp
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no #默認disable是yes的,把它改為no即可 per_source = 11 cps = 100 2 flags = IPv4 }
啟動服務
systemctl enable tftp
systemctl enable xinetd
systemctl start tftp
systemctl start xinetd
安裝FTP服務
yum install vsftp -y
啟動服務
systemctl enable vsftpd.service && systemctl start vsftpd.service
復制內核文件
內核文件、虛擬根文件以及菜單文件,我們都是通過tftp服務來提供的,由於系統及版本的不同,對於一個比較復制機群來說,我們需要准備不同系統,不同版本的內核文件,initrd.img文件。菜單文件只需要一份即可。
掛載光驅
mount /dev/cdrom /mnt #掛載 # cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ #vmlinuz文件,在鏡像文件images/pxeboot/目錄中, vmlinuz是可引導的、壓縮的內核文件,vmlinuz是vmlinux的壓縮文件。是可執行的Linux內核 # cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ #initrd.img文件,在鏡像文件images/pxeboot/目錄中, initrd是“initial ram disk”的簡寫。initrd用來臨時的引導硬件到實際內核vmlinuz能夠接管並繼續引導的狀態
復制pxelinux.0文件到tftp目錄下
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
復制一個菜單功能文件到/var/lib/tftpboot/
#cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
創建pxelinux.cfg/default 文件
mkdir -p /var/lib/tftpboot/pxelinux.cfg/default
編寫default文件
default vesamenu.c32 menu tabmsg XiaoNan NIUBI menu title XiaoNan auto-install system timeout 300 label install Centos7 kernel vmlinuz append initrd=initrd.img inst.repo=ftp://192.168.2.11/centos7
當然這還需要人工點擊開始安裝並配置才能安裝,如想實現無人值守安裝參照小白都能玩轉的COBBLER無人值守安裝https://blog.csdn.net/qq_37242520/article/details/100545758
或者搜索kickstart實現無人值守安裝!
PXE批量安裝windows操作系統
在之前的環境下我們需要samba來共享windows安裝文件
安裝samba相關包
#yum install samba samba-client cifs-utils -y
創建共享的文件夾
mkdir /smbshare/windows10 useradd xiaonan smbpasswd -a xiaonan chown xiaonan:xiaonan /smbshare/
修改samba配置文件,修改以下內容
v
im /etc/samba/smb.conf [global] workgroup = SAMBA security = user netbios name = pxe passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [install] comment = Installation Media path = /smbshare public = yes writable = no printable = no browseable = yes
啟動samba服務
systemctl start smb nmb && systemctl enable smb nmb
復制WIN10鏡像文件到samba共享目錄
cp -rf win10.iso /smbshare/windows10/
創建windows10PE
我們需要windows ADK去制作自己的winpe,訪問微軟官方網站https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install下載並安裝
我這里下載的是下面兩個軟件,安裝過程下一步就好。
Download the Windows ADK for Windows 10, version 1903
Download the Windows PE add-on for the ADK
安裝完成之后以管理員身份運行Deployment and Imaging Tools Environment
copype amd64 c:\winpe
掛載Boot.wim到臨時目錄
Dism /Mount-Image /ImageFile:"c:\winpe\media\sources\boot.wim" /index:1 /MountDir:"c:\winpe\mount"
修改啟動腳本
notepad c:\winpe\mount\Windows\System32\Startnet.cmd
添加以下內容,注意字符之間的空格
wpeinit net use z: \\pxe\install\windows10 /user:xiaonan xiaonan z:\setup.exe
卸載並保存boot.vim
Dism /Unmount-Image /MountDir:"c:\winpe\mount" /commit
生成win10pe.iso
MakeWinPEMedia /ISO c:\winpe c:\win10pe.iso
把生成的win10pe.iso復制到/var/lib/tftpboot/winpe/下
添加win10選項到PXE啟動菜單
#vim default label Install MS Windows 10 menu label Install MS Windows 10 kernel memdisk initrd /winpe/win10pe.iso append iso raw
大功告成!啟動客戶端!!!!
如果想讓WINDOWS系統無人值守安裝可以創建無人值守自動應答文件AutoUnattend.xml
詳情可參考https://blog.csdn.net/zuoliang365/article/details/86592025