批量安装操作系统是生产中减轻运维人员劳动的一种方法 windows中是微软开发的wds技术(windows 部署服务),详细步骤请参考https://jingyan.baidu.com/article/f0e83a25a844b022e5910196.html 但须注意批量安装时sid对windows AD(活动目录)所造成的影响 centos 采用redhat公司的开源kickstart 技术,功能强大 对比: kickstart是一个项目的名称 cobbler是对kickstart的所有组件的封装 ![1190037-20171114163420781-1228474973.png](http://www.xwblog.club/usr/uploads/2018/06/3819316142.png) ![QQ截图20180530160226.png](http://www.xwblog.club/usr/uploads/2018/06/1373670937.png) 基本过程(文档参考https://blog.csdn.net/openbox2008/article/details/80089567) ① PXE 客户端发送UDP广播请求 PXE 客户端从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。 ② DHCP服务器提供信息 DHCP服务器收到客户端的请求,验证是否来至合法的PXE 客户端的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。 ③ PXE客户端请求下载启动文件 客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。 ④ TETP服务器响应客户端请求并传送文件 当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从tftp服务器 下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。 ⑤ 请求下载自动应答文件 客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。 ⑥ 客户端安装操作系统 将ks.cfg文件下载回来后,通过该文件找到http镜像,并按照该文件的配置请求下载安装过程需要的软件包。 http镜像和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。 安装完成后,将提示重新引导计算机。 3.server 脚本,本着“一切从简,适合生产” ```bash #!/usr/bin/env bash #================================================================ # # systemos=centos7.2 # #this is automatic install system script # Author:xw thank you!!! # Date:2018.5.31 # Description:install centos7.2 # wang.cong@aliyun.com #================================================================ install_deploy_file=/var/log/deploy.log install_log_file=/var/log/pxe.log systemctl stop firewalld.service && systemctl disable firewalld.service >> ${install_deploy_file} 2>&1 setenforce 0 && sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config >> ${install_deploy_file} 2>&1 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo >> ${install_deploy_file} 2>&1 yum clean all >> ${install_deploy_file} 2>&1 yum makecache >> ${install_deploy_file} 2>&1 #install soft yum install -y dhcp syslinux httpd tftp-server >> ${install_deploy_file} 2>&1 if [ $(echo $?) -eq 0 ];then echo "soft is success" >> ${install_log_file} 2>&1 fi #deploy_dhcp cat >/etc/dhcp/dhcpd.conf</var/www/html/ks.cfg<> ${install_deploy_file} 2>&1 mkdir -p /var/www/html/CentOS7/ >> ${install_deploy_file} 2>&1 mount /dev/cdrom /var/www/html/CentOS7/ >> ${install_deploy_file} 2>&1 cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/ >> ${install_deploy_file} 2>&1 mkdir -p /var/lib/tftpboot/pxelinux.cfg >> ${install_deploy_file} 2>&1 cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default >> ${install_deploy_file} 2>&1 chmod o+rwx /var/www/html/ks.cfg >> ${install_deploy_file} 2>&1 #install default cat >/var/lib/tftpboot/pxelinux.cfg/default<> ${install_deploy_file} 2>&1 systemctl start httpd.service >> ${install_deploy_file} 2>&1 systemctl start tftp.socket >> ${install_deploy_file} 2>&1 if [ $(echo $?) -eq 0 ];then echo "soft_service all status ok" >> ${install_log_file} 2>&1 fi echo -e "\e[1;31m all success please talk your administrator deploy all The server \e[0m" ```