#安装前配置好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