Centos7 PXE Server Install Script

怎甘沉沦 提交于 2019-11-28 10:25:33
# pxeCentos7Install.sh# 挂载centos7镜像,这里为Centos7 1511 ,将作为pxe安装镜像# 安装前配置好centos和epel yum源
# 网卡ip和localip一致
localip="10.10.0.240"
eth_name='eth0'
dnsmasq_install() {
  yum -y install dnsmasq
  mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
  dnsmasq_conf='interface='$eth_name'
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range= '$eth_name',10.10.0.100,10.10.0.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,10.10.0.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 '^/dev/sr0'
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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!