前言
在企业中,要给很多台主机安装操作系统,要是每一台主机都用光盘一台一台的去安装就太浪费时间和精力了,这也并不实际,那么要为多台主机自动安装操作系统我们要怎么实现呢?接下来就让我们来看看用DHCP和TFTP服务自动化的为多台主机安装操作系统。
什么是TFTP?
TFTP(trivial file transfer protocol)是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。
什么是PXE?
PXE(preboot execute environment,预启动执行环境),严格来说并不是一种安装方式,而是一种引导方式。是工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。
磁盘是通过磁头读取信息,当计算机关机时,磁盘的磁头会回到零磁道,而零磁道上有一个引导程序—pxelinux,会引导磁头去读取启动信息,所以磁头在开机时就知道自己要读取哪个扇区的信息了。
基本原理和工作流程
- 首先,在客户端主机的网卡要支持网络引导,当开机时网卡就会激活当中的程序,自行通过网络向DHCP请求ip地址,并配置在自己的网卡上。
- 下来,DHCP服务器回应我们的客户端主机,分配给它ip地址,子网掩码,网关等相关参数,DHCP服务器再告诉客户端主机tftp服务器在什么位置。
- 接着,客户端主机就去请求tftp服务器,我们这里的dhcp服务器和tftp服务器是同一台。tftp服务器会给客户端主机提供一个pxelinux.0文件,这个文件相当于bootloader,是由syslinux这个程序包提供的。
- 而后,客户端主机利用tftp服务器提供的pxelinux.0文件,再次尝试到tftp服务器上获取内核,因为要启动安装就要启动引导内核。
- 之后,当引导内核启动后,客户端主机通过default(由pxelinux.0改名而来)文件成功的引导linux安装内核后,通过httpd服务获得default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
- 最后,将ks.cfg文件下载下来后,通过ks.cfg文件的配置,请求下载安装过程所需的安装包,这样就可以实现自动化安装了!
准备工作
我们在自动化安装之前要先确保这几个包已经安装成功:
- dhcp 分配ip给客户端
- httpd 安装源共享服务,读取ks.cfg文件
- syslinux 获得pxelinux.0文件安装包
- tftp-server 提供tftp协议的服务
- system-config-kickstart 自动应答脚本制作工具
搜索pxe启动文件的安装包yum whatprovides */pxelinux.0
搜索tftp服务的安装包
安装所需要的软件包或服务
安装完成!
具体步骤
- 首先,我们将dhcp服务器里的一些参数配置好,并让dhcp服务器告诉客户端主机tftp服务器在什么位置,要读什么文件,打开dhcp服务。
- 然后,开启http服务,部署共享yum源,并关闭防火墙。
- 开启tftp服务,注意rhel7.3或7.0以后的版本可以直接开启。我这里的版本是7.3,可以直接打开。
通过命令less /usr/share/doc/syslinux-4.05/pxelinux.txt
可以了解pxelinux的具体工作说明。
- 首先,我们先找到tftp-server安装包的安装路径。
- 然后,复制文件到tftpboot下。其中,isolinux目录下的所有文件是内核镜像以及文件系统镜像,目的是让客户端主机在pxe的引导下知道自己内核的安装信息,pxelinux.0目的是让客户端主机在得到ip,网关,子网掩码等信息之后让pxe引导他下一步去哪里。创建pxelinux.cfg目录的原因是他是pxelinux.0的配置目录,创建pxe默认的读取文件default,将isolinux.cfg的文件复制给他。
- 编写自动应答脚本,并将该脚本保存到/var/www/html上。
在安装后脚本中写入下列内容。
再次进入ks.cfg中,写入以下内容。
检测ks.cfg文件有没有语法错误
- 修改default文件下默认的配置信息,在第65行左右添加共享yum源以及ks配置文件。
测试
打开一台任意虚拟机,将开机启动方式改为网卡启动。
自动获取到的安装信息。
补充说明
- 关于default文件
在文件/var/lib/tftpboot/default
中,可以更改等待的时间,网络安装源以及默认的标题等。
- 7.0版本中tftp服务的开启方法
这里无法直接开启tftp服务,我们需要进入安装xinetd,并修改/etc/xinetd.d/tftp
中,将disable改为no
重启xinetd,systemctl restart xinetd
,tftp就成功开启了。