架构师成长之路2.1-PXE+Kickstart原理
PXE+Kickstart 主要用于在公司内网批量安装新服务器系统,这极大地简化了用光盘重复安装Linux操作系统的过程,再加上分布式自动化运维工具puppet进行批量部署,达到了自动化运维的目的,避免了重复性劳动,极大的提高了工作效率。
虽然网络上面有很多介绍, 但是为了自学还是整理一番。
1. PXE
严格来说,PXE 并不是一种安装方式,而是一种引导方式。
PXE 安装的两个必要条件:
① 要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。
PXE (Pre-boot Execution Environment)协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。
② PXE服务器必须要提供至少含有DHCP以及TFTP的服务。
- DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;
- TFTP则提供客户端的boot loader及kernel file下载路径。
还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务
2. PXE的工作过程
图片来源于网络。
- (1)Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将pxe环境下的Boot loader文件pxelinux.0的位置信息传送给Client。
- (2)Client向PXE Server上的TFTP请求pxelinux.0,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。
- (3)Client执行接收到的pxelinux.0文件。
- (4)Client向TFTP请求pxelinux.cfg文件(其实它是目录,里面放置的是是启动菜单,即grub的配置文件),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
- (5)Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。
- (6)Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。
- (7)Client加载Linux内核(启动参数已经在4中的配置文件中设置好了)。
- (8)Client通过nfs/ftp/http下载系统安装文件进行安装。如果在(4)中的配置文件指定了kickstart路径,则会根据此文件自动应答安装系统
2. Kickstart
Kickstart是一种无人值守的安装方式。
工作原理:
在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg的文件。
如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart生成的文件
- 如果找到合适的参数,就采用所找到的参数;
- 如果没有找到合适的参数,便需要安装者手工干预了。
所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
创建Kickstart文件有三种方式:
- 完全手动创建Kickstart。
- 使用图形化工具system-config-kickstart创建Kickstart。
- 通过标准化安装程序Anaconda安装系统,Anaconda会生成一个当前系统的Kickstart文件,以此来创建Kickstart文件。
.........