zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    6、查看历史记录
    A Tour of Go Range
    Go Slices: usage and internals
    A Tour of Go Nil slices
    A Tour of Go Making slices
    A Tour of Go Slicing slices
    A Tour of Go Slices
    A Tour of Go Arrays
    A Tour of Go The new function
    A Tour of Go Struct Literals
  • 原文地址:https://www.cnblogs.com/tianyuanchen/p/11404780.html
Copyright © 2011-2022 走看看