pxe_server 批量安装 linux系统 和windows系统
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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步