Centos7 pxe

yum install dnsmasq
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
# vim /etc/dnsmasq.conf
    interface=eth0,lo
    #bind-interfaces
    domain=centos7.lan
    # DHCP range-leases
    dhcp-range= eth0,10.10.0.20,10.10.0.30,255.255.255.0,1h
    # PXE
    dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
    # Gateway
    dhcp-option=3,10.10.0.240
    # DNS
    dhcp-option=6,10.10.0.240,114.114.114.114
    server=114.114.114.114
    # Broadcast Address
    dhcp-option=28,10.0.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 10.10.0.240", pxelinux
    enable-tftp
    tftp-root=/var/lib/tftpboot
        interface – 服务器需要监听并提供服务的网络接口。
        bind-interfaces – 取消注释来绑定到该网络接口
        domain – 替换为你的域名。
        dhcp-range – 替换为你的网络掩码定义的网段。
        dhcp-boot – 替换该IP地址为你的网络接口IP地址。
        dhcp-option=3,192.168.1.1 – 替换该IP地址为你的网段的网关。
        dhcp-option=6,92.168.1.1 – 替换该IP地址为你的DNS服务器IP——可以定义多个IP地址。h
        server=8.8.4.4 – 这里放置DNS转发服务器IP地址。
        dhcp-option=28,10.0.0.255 – 替换该IP地址为网络广播地址——可选项。
        dhcp-option=42,0.0.0.0 – 这里放置网络时钟服务器——可选项(0.0.0.0地址表示参考自身)。
        pxe-prompt – 保持默认——按F8进入菜单,60秒等待时间。
        pxe=service – 使用x86PC作为32为/64位架构,并在字符串引述中输入菜单描述提示。其它类型值可以是:PC98,IAEFI,Alpha,Arcx86,IntelLeanClient,IA32EFI,BCEFI,XscaleEFI和X86-64EFI。
        enable-tftp – 启用内建TFTP服务器。
        tftp-root – 使用/var/lib/tftpboot——所有网络启动文件所在位置。
        
yum install syslinux
yum install tftp-server
cp -r /usr/share/syslinux/* /var/lib/tftpboot
mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
Vim /var/lib/tftpboot/pxelinux.cfg/default
    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://10.10.0.240/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://10.10.0.240/pub devfs=nomount inst.vnc inst.vncpassword=password
    
    label 4
    menu label ^4)Bootfromlocal drive
    
mount  /dev/sr0 /mnt
# ls /mnt/
mkdir /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
 yum install vsftpd
cp -r /mnt/* /var/ftp/pub/
chmod -R 755 /var/ftp/pub
systemctl start dnsmasq
systemctl status dnsmasq
systemctl start vsftpd
systemctl status vsftpd
systemctl enable dnsmasq
systemctl enable vsftpd
# netstat -tulpn
# firewall-cmd --add-service=ftp --permanent ## Port 21
# firewall-cmd --add-service=dns --permanent ## Port 53
# firewall-cmd --add-service=dhcp --permanent ## Port 67
# firewall-cmd --add-port=69/udp --permanent ## Port for TFTP
# firewall-cmd --add-port=4011/udp --permanent ## Port for ProxyDHCP
# firewall-cmd --reload ## Apply rules


tailf /var/log/messages
# umount /dev/sr0 

 

# 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

 

posted @ 2019-07-26 23:11  chentianyuan  阅读(343)  评论(0编辑  收藏  举报