Centos7 PXE Server Install Script

#安装前配置好centos和epel yum源
#网卡ip和localip一致
localip="192.168.88.200"
eth_name='eth0'


dnsmasq_install() {
  yum -y install dnsmasq
  mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
  prefix_ip=`echo $localip|awk -F\. '{print $1"."$2"."$3}'`
  dnsmasq_conf='interface='$eth_name'
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range= '$eth_name','$prefix_ip'.100,'$prefix_ip'.110,255.255.255.0,1h
# PXE
dhcp-boot=pxelinux.0,pxeserver,'$localip'
# Gateway
dhcp-option=3,'$localip'
# DNS
dhcp-option=6,'$localip',114.114.114.114
server=114.114.114.114
# Broadcast Address
dhcp-option=28,'$prefix_ip'.255
# NTP Server
dhcp-option=42,0.0.0.0

pxe-prompt="Press F8 for menu.",60
pxe-service=x86PC,"Install CentOS 7 from network server '$localip'", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot'
  echo "$dnsmasq_conf" > /etc/dnsmasq.conf
}
tftp_pxe_install() {
  yum -y install syslinux
  yum -y install tftp-server
  cp -r /usr/share/syslinux/* /var/lib/tftpboot/
  if [[ ! -d /var/lib/tftpboot/pxelinux.cfg ]]
  then
    mkdir /var/lib/tftpboot/pxelinux.cfg
    touch /var/lib/tftpboot/pxelinux.cfg/default
    default_conf='default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
        
menu title ########## PXE Boot Menu ##########
        
label 1 
menu label ^1)InstallCentOS7 x64 withLocalRepo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://'$localip'/pub devfs=nomount
        
label 2 
menu label ^2)InstallCentOS7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp 
        
label 3 
menu label ^3)InstallCentOS7 x64 withLocalRepousing VNC
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://'$localip'/pub devfs=nomount inst.vnc inst.vncpassword=password
        
label 4 
menu label ^4)Bootfromlocal drive'
    echo "$default_conf" > /var/lib/tftpboot/pxelinux.cfg/default
  fi
}
mount_cd() {
mount|grep '^/mnt'
if [[ $? -eq 0 ]]
then
  echo '光盘已挂载。'
else
  mount /dev/sr0 /mnt/ &> /dev/null
  if [[ $? -ne 0 ]]
  then
    count=$(( $count + 1 ))
    if [[ $count -eq 20 ]];then
      echo '超时退出';
      exit 8;
    fi
    echo "sr0没有光盘,挂载失败,将在5秒后重试"
    sleep 5
    mount_cd
  else
    echo '光盘挂载成功。';
  fi
fi
}
confing_pxeserver() {
  if [[ ! -d /var/lib/tftpboot/centos7 ]];then
    mkdir /var/lib/tftpboot/centos7
    cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/
    cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/
  fi
  yum -y install vsftpd
  if [[ `ls -A /var/ftp/pub/` == "" ]];then
    echo 'copy光盘文件到/var/ftp/pub/ ...';
    cp -r /mnt/* /var/ftp/pub/
    chmod -R 755 /var/ftp/pub
  fi
}
start_service() {
systemctl start dnsmasq
systemctl status dnsmasq
systemctl start vsftpd
systemctl status vsftpd
systemctl enable dnsmasq
systemctl enable vsftpd
}

dnsmasq_install
tftp_pxe_install
mount_cd
confing_pxeserver
start_service

 

posted @ 2019-08-24 15:21  chentianyuan  阅读(222)  评论(0编辑  收藏  举报