PXE自动安装CentOS配置脚本

#!/bin/bash

if [[ $# != 1 ]];then
        echo "input a kickstart file"
        exit 1
fi

#关闭防火墙
systemctl stop firewalld &> /dev/null
systemctl disable firewalld &> /dev/null
iptables -F

#关闭selinux
setenforce 0
sed -r -i 's@(^SELINUX=).*@\1disabled@' /etc/selinux/config

#安装包
yum clean all &> /dev/null
yum install -y httpd dhcp tftp-server syslinux net-tools &> /dev/null

#准备程序包下载源
mkdir -pv /var/www/html/centos/7 &> /dev/null
echo "/dev/sr0   /var/www/html/centos/7    iso9660    defaults    0 0" >> /etc/fstab
umount /dev/sr0
mount -a > /dev/null

#准备kickstart文件
mkdir -pv /var/www/html/ksdir/7 &> /dev/null
cp $1 /var/www/html/ksdir/7/

#配置dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
subnet=$(route -n | grep "eth0" | cut -d" " -f1)
netmask=$(route -n | grep "eth0" | awk '{print $3}')
iprange=$(route -n | grep "eth0" | cut -d" " -f1 | sed -r 's@(.*)[^.]+$@\1@')
IP=$(ip a | egrep "inet.*eth0" | awk -F/ '{print $1}' | awk '{print $2}')
cat > /etc/dhcp/dhcpd.conf <<END
subnet $subnet netmask $netmask { 
  range ${iprange}10 ${iprange}100;
  next-server $IP; 
  filename "pxelinux.0";
}                                                                                      
END                                                                                    
eval "sed -r -i 's/([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}/$IP/' /var/www/html/ksdir/7/`basename $1`" 

#启动服务                                                                              
systemctl start dhcpd httpd tftp.socket &> /dev/null                                   
systemctl enable dhcpd httpd tftp.socket &> /dev/null

#准备pxe相关文件                                                                       
mkdir -pv /var/lib/tftpboot/pxelinux.cfg &> /dev/null                                  
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot                                    
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot                                      
cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot              
cat > /var/lib/tftpboot/pxelinux.cfg/default <<END                                     
default menu.c32                                                                       
timeout 600                                                                            
menu title CentOS7 PXE Install                                                         
                                                                                       
label PXE centos7                                                                      
  menu default                                                                         
  menu label Install ^Mini CentOS 7                                                    
  kernel vmlinuz                                                                       
  append initrd=initrd.img ks=http://$IP/ksdir/7/`basename $1`                         
                                                                                       
label local                                                                            
  menu label Boot from ^local drive                                                    
  localboot 0xffff                                                                     
menu end                                                                               
END           

当网卡名是eth0时可直接使用,kickstart文件自备,可以用system-config-kickstart生成kickstart文件,属于system-config-kickstart
ksvalidator:kickstart文件语法检查工具,属于pykickstart包

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值