经过一段时间的初期探索,目前自动化刷机已经有了眉目(?感谢参与的小伙伴 黄顺祥,栗超,龙浩)
建议:先弄懂基础的在去提升,然后再去先cobbler 发展。不要一来就上cobbler,因为它把很多细节给隐藏掉了,在后期做镜像定制的时候,才知道怎么去处理。
原理
实现自动化刷系统,主要是依赖PXE
-
什么是PXE呢?(百度来的)
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。
-
PXE需要的最基础组件或服务
PXE: 服务器或主机需要支持PXE启动(放心,一般都支持)。可以简单的认为,自动化刷机服务器(以下简称PXE服务器)为PXE服务端,需要安装系统的主机为PXE客户端
DHCP: 搭建DHCP服务器,主要是给PXE客户端分配IP地址并且指向网络上的启动资源,比如TFTP服务器上的vmlinuz文件和initrd文件。
TFTP: 搭建TFTP服务器,主要是提供网络上的启动资源,比如pxelinux.0、vmlinuz文件和initrd文件
上面三个是最基础的的组件,却一不可! 下面介绍一下辅助服务器。
这些服务器主要是文件服务器,用来存放和管理iso镜像。比如 nfs,ftp,http等
-
PXE启动过程
首先,PXE client端(BIOS里面的PXE固件)广播一个DHCPDISCOVER的包,它询问所需的网络配置以及网络启动的参数。标准DHCP服务器(非PXE enabled)将回复一个普通的DHCPOFFER包,其中包含网络信息(如IP地址),但并不能提供PXE相关参数,因此PXE Client并不能启动。而PXE enabled的DHCP服务器所回复的DHCPOFFER包里则包含PXE相关信息。
在解析一个PXE enabled的DHCP服务器返回的DHCPOFFER包后,PXE client就能够设置自己的IP地址、IP Mask等等,并且指向网络上的启动资源,比如TFTP服务器上的vmlinuz文件和initrd文件。
然后PXE client就通过TFTP下载这些启动资源到自己的内存中;如果是UEFI Secure Boot(而不是Legacy的BIOS)则还会检验一下这些启动资源。下载完成后就会用这些资源来启动了。
这些启动资源其实就是最小的操作系统(比如WindowsPE,又比如一个basic Linux kerne