bash
#!/bin/bash
#先磁盘判断是否挂载,并检查tftp和xinetd软件包是否安装
df | grep "sr0"
if [ $? -eq 0 ];then
yum install -y tftp-server xinetd
else
mount /dev/cdrom /mnt
yum install -y tftp-server xinetd
fi
#修改TFTP服务的配置文件:/etc/xinetd.d/tftp
sed -i 's/yes/no/g' /etc/xinetd.d/tftp #将该配置文件中的no全部改成yes,以达到多台客户机一起安装和开启TFTP服务的目的
#开启TFTP服务
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
#安装并启用DHCP服务与ecpect
yum install -y dhcp expect
#复制配置文件,进行免交互操作
/usr/bin/expect <<EOF
spawn cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
expect "是否覆盖"/etc/dhcp/dhcpd.conf"?" {send "yes\r"}
interact
EOF
#修改DHCP服务配置文件:/etc/dhcp/dhcpd.conf
cat >/etc/dhcp/dhcpd.conf <<FOE #使用Here Document进行免交互设置
ddns-update-style none; #禁用DNS动态更新,提高效率
next-server 192.168.200.10; #指定TFTP服务器的地址
filename "pxelinux.0"; #指定PXE引导程序的文件名
subnet 192.168.200.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 192.168.200.100 192.168.200.200; #设置地址池
option routers 192.168.200.10; #设置默认网关地址,指向TFTP服务器的IP地址
}
FOE
#开启DHCP服务
systemctl start dhcpd
systemctl enable dhcpd
#准备Linux内核与初始化镜像文件
cd /mnt/images/pxeboot #已事先把光盘挂载到/mnt目录中
cp vmlinuz /var/lib/tftpboot #复制Linux系统的内核文件到TFTP根目录下
cp initrd.img /var/lib/tftpboot/ #复制初始化镜像文件(linux引导加载模块)到TFTP根目录下
#准备PXE引导程序
yum -y install syslinux #PXE引导程序由软件包syslinux提供
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制PXE引导程序到TFTP根目录下
#安装并启用FTP服务,准备centos 7 安装源
yum -y install vsftpd
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/
systemctl start vsftpd
systemctl enable vsftpd
#配置启动菜单文件
mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
cat >/var/lib/tftpboot/pxelinux.cfg/default << ABC
default auto #指定默认入口名称
prompt 0 #设置是否等待用户选择, "1"表示等待用户控制,”0“表示不等待用户控制
label auto # 图形安装(默认)引导入口, label用来定义启动项
kernel vmlinuz #kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.200.10/centos7
label linux text #文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.200.10/centos7
label linux rescue #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.200.10/centos7
ABC
#关闭防火墙
systemctl stop firewalld.service
setenforce 0
使用免交互一键进行PXE批量装机
最新推荐文章于 2024-08-21 14:38:22 发布