利用PXE实现批量无人值守安装linux操作系统

在企业里面怎样部署系统(利用一台主机给其它新的服务器装系统)?接下来我将从头到尾给大家一一讲解清楚
由于这个比较难理解,因此前面会有较多的说明,让大家彻底理解这个过程,所有实验截图我也会放在每一步操作的下面

1.为什么要学会部署系统?

通过传统的方式安装和部署计算机时,都需要人工干预的方式完成安装。如果需要部署大量的类似功能的工作站或服务器,则需要耗费大量的时间。同时传统的安装方式,每台计算机都需要光驱设备及安装光盘等介质,会额外增加部署成本。因此,许多系统管理员都希望能够通过一种网络化的无人值守的自动安装方式将操作系统部署到目标计算机中。

2.基础知识普及

计算机的操作系统也是安装在磁盘里面,磁盘由磁道和扇区构成
磁盘分区:是在系统里面分,由系统管理,但是系统也在磁盘里面
端点磁头默认的位置:0磁道默认最开始读的那个位置
磁盘的引导程序bootloader促使0磁头读取c盘,启动系统
在零磁道上,有一个程序,叫做pxelinux
当启动电脑时,pxelinux程序会引导磁头去读取启动信息,也叫做pxe启动服务

3.使用的相关服务和工具(里面涉及到的所有的协议均要下载相应的服务才会生效)

(1)PXE协议(在部署服务器过程中起着至关重要的作用,它涉及到tftp服务)

PXE 是由 Intel 设计的协议,计算机可以通过 PXE 协议从网络引导系统启动,PXE 协议在启动过程分为 client 和 server 端
PXE 协议运行过程主要解决两个问题:
首先解决 IP 地址的问题,然后解决如何传输操作系统启动文件和安装文件的问题
对于第一个问题,可以通过在服务端搭建DHCP服务器解决,DHCP 服务器主要用于动态分配 IP 地址给客户端
PXE 环境下,DHCP 服务器在给客户端一个ip地址的同时需要额外加载 PXE 的相关配置给客户端,这样客户端才会知道自己下一步要干嘛
针对第二个问题,在启动初期因为 PXE客户端中有相应的 TFTP 客户端,可以通过 TFTP 协议到 TFTP 服务器(服务端)中下载相关文件启动计算机
后期在安装过程中,则通过 FTP 或 NFS 协议提供大量的操作系统安装文件的下载
我所使用的协议是http协议,客户端共享服务端的yum源软件仓库与ks.cfg文件给客户端,从而引导客户端自动装系统
PXE是预启动执行环境,全名是Pre-boot Execution Environment
通过网络接口启动计算机,不需要依赖本地存储设备或本地已安装的操作系统
由Intel和Systemsoft公司于1999年9月20日公布的技术,采用C/S的工作模式
PXE客户端会调用网际协议(IP)、用户数据协议(UDP)、动态主机分配协议(DHCP)、小型文件传输协议(TFTP)等网络协议

(2)Kickstart(生成自动安装脚本的工具,利用它才可以自动生成ks.cfg文件,该文件里面回答了安装过程中的所有问题)

通过传统的方式安装和部署计算机时,都会要求通过交互的方式,回答各类问题,以完成安装和部署任务,过程繁琐,且无法实现自动化
红帽公司开发了 Kickstart 的安装方法,通过 ks 文件可以解决所有普通安装方式中需要回答的问题
可以通过 system-config-kickstart 工具定制 ks 文件,也可以通过相关语法来手工编写安装脚本

(3)DHCP(这个在搭建DHCP服务中已经详细讲过)

动态主机配置协议,主要用于给 DHCP 客户端自动分配 IP 地址,便于用户管理网络内部的计算机
针对 PXE 环境下,DHCP 服务器除分配 IP 地址外
还需要额外配置”next-server”选项定义 TFTP 服务器的地址,设置”filename”选项定义启动文件的名称
并且启动”booting”与”bootp”的支持

(4)TFTP与FTP

简单文件传输协议(TFTP)主要用于为客户机与服务器之间进行简单文件传输的协议
在 PXE 早期启动过程中,主要通过 TFTP 协议传输”pxelinux.0”
文件传输协议(FTP),适用于大量文件传输的情形,在后期安装过程,主要通过 FTP 协议传输 Linux 操作系统的安装包
FTP 服务主要是下载 ks.cfg 文件和操作系统文件的,也可以用 HTTP 或 NFS 来代替
我的实验当中是用HTTP服务代替FTP服务,yum源与ks.cfg文件的共享均在httpd服务下进行

(5)HTTP

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写
是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求
Web服务器根据接收到的请求后,向客户端发送响应信息

4.部署操作系统的背景

当企业新引进多台服务器的时候,这些服务器都没有装系统
现在工程师要给所有的服务器都装系统(新的服务器不一定有光驱和u盘)
这时候大概也许只能利用服务器的网卡装系统,才能一次性全面部署
一次性装好所有电脑系统,这个很重要,一定要会
需要有dhcp httpd pxe这些东西才能全面部署 
yum install dhcp httpd syslinux -y

5.重点理解部署系统的原理:用一台主机给一台服务器装系统举例

我现在有一台主机ttt,有一台新的服务器server
主机ttt是装好系统的,服务器server没有装系统
ttt和server的共同之处是二者都有网卡
我现在要用ttt虚拟机给server服务器装系统
(1)当用server服务器采用网卡方式启动时,会主动向ttt要一个ip地址
(这时候需要在ttt主机上搭建DHCP服务器,才能给server动态分配一个ip)
(2)ttt主机给server服务器一个ip地址、dns、网关等等,同时也会给pxe的相关配置文件
(这时候需要ttt虚拟机开启tftp服务)
(3)server服务器根据pxe程序知道自己下一步要去哪里干什么(找到ttt虚拟机的ks.cfg自动安装脚本文件)
(这时候ttt就会引导server服务器自动装系统,这时候需要ttt虚拟机开启httpd服务)
(4)server被ttt主机引导自动安装系统完毕后,也会自动利用ttt的共享yum源装软件

6.实验思路

利用ttt虚拟机给server主机装系统,需要在ttt虚拟机上进行如下操作:
搭建dhcp服务器:给新系统分配动态ip
开启http服务:提供共享给新系统,读取ks.cfg文件安装系统,利用共享yum源安装官方软件和第三方软件
开启tftp服务:tftp是一种简单文本传输协议,进行简单文本传输,该服务的端口号为69
关闭防火墙:才能实现共享,从而引导另外一台主机
创建pxe配置文件default

7.实验环境:先开一个全新的虚拟机,配置好yum源与ks.cfg文件,并且可以共享

声明:由于前面已经配置过共享yum源与自动安装脚本,就不再重复,接着上一篇的实验环境继续往下做
此时已经开启dhcpd服务

利用PXE实现批量无人值守安装linux操作系统_第1张图片
利用PXE实现批量无人值守安装linux操作系统_第2张图片
利用PXE实现批量无人值守安装linux操作系统_第3张图片
利用PXE实现批量无人值守安装linux操作系统_第4张图片

8.用我的ttt虚拟机给server服务器装系统

步骤一:寻找包含pxe程序的软件包(pxe启动文件是pxelinux.0)
利用PXE实现批量无人值守安装linux操作系统_第5张图片

步骤二:yum install dhcp httpd syslinux -y,先把需要的东西全部下载下来

声明:为了给大家展示一个完整的过程,我将把需要的都列出来(如果已经安装也无所谓,以免大家做的时候遗忘掉什么)
安装pxelinux.0所需要的包 yum install syslinux -y

利用PXE实现批量无人值守安装linux操作系统_第6张图片
在这里插入图片描述

说明:因为之前已经下载过dhcp与httpd,所以这里只需要下载syslinux

步骤三:搭建DHCP服务器,使我的ttt虚拟机可以给server服务器动态分配ip地址

  • cd /etc/dhcp/ 切换到dhcp的配置目录下

  • ls 查看dhcp配置文件
    在这里插入图片描述

  • vim dhcpd.conf 编辑dhcp配置文件
    在这里插入图片描述
    利用PXE实现批量无人值守安装linux操作系统_第7张图片

  • cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 导入dhcp的内容
    在这里插入图片描述

  • 按照以前的方法改好DHCP文件(在搭建DHCP服务器当中已经详细说明了)
    在这里插入图片描述利用PXE实现批量无人值守安装linux操作系统_第8张图片
    利用PXE实现批量无人值守安装linux操作系统_第9张图片

  • systemctl restart dhcpd 重启dhcp服务
    在这里插入图片描述
    利用PXE实现批量无人值守安装linux操作系统_第10张图片
    步骤四:开启httpd服务(已经部署了共享yum源,按理说已经开了,再验证一下)

  • systemctl start httpd 开启服务

  • systemctl enable httpd 设置开机启动
    在这里插入图片描述

  • systemctl status httpd
    利用PXE实现批量无人值守安装linux操作系统_第11张图片
    步骤五:设置ttt主机永久共享yum源给其它服务器

  • vim /etc/rc.d/rc.local
    在这里插入图片描述

  • mount /dev/cdrom /var/www/html/westos
    在这里插入图片描述

  • chmod +x /etc/rc.d/rc.local
    在这里插入图片描述

  • sh /etc/rc.d/rc.local 查看是否正确
    利用PXE实现批量无人值守安装linux操作系统_第12张图片
    步骤六:关闭防火墙

  • systemctl stop firewalld

  • systemctl mask firewalld
    在这里插入图片描述
    在这里插入图片描述
    步骤七:在浏览器中输入172.25.254.111/westos 看是否能看到共享的yum源
    利用PXE实现批量无人值守安装linux操作系统_第13张图片

步骤八:在浏览器中输入172.25.254.111/ks.cfg看是否能看到共享的自动安装文件
利用PXE实现批量无人值守安装linux操作系统_第14张图片

步骤九:引入pxe这个程序,该程序引导server主机去寻找ttt主机安装系统(先开启tftp服务才会有pxe程序起作用)

tftp服务提供pxe程序引导linux内核和镜像的启动,因此需要开启tftp服务
先寻找tftp的软件包并安装,再开启tftp服务

利用PXE实现批量无人值守安装linux操作系统_第15张图片

  • yum search tftp 寻找tftp服务
    利用PXE实现批量无人值守安装linux操作系统_第16张图片
  • yum install tftp-server.x86_64 -y 安装tftp服务
    利用PXE实现批量无人值守安装linux操作系统_第17张图片
    利用PXE实现批量无人值守安装linux操作系统_第18张图片
  • systemctl status tftp 查看tftp是否开启

利用PXE实现批量无人值守安装linux操作系统_第19张图片

可以看到此时的tftp没有开启

利用PXE实现批量无人值守安装linux操作系统_第20张图片
因为使用的7.3版本tftp的状态为disable,所以开启tftp服务需要借助xinted(7.0版本的虚拟机可以直接开启tftp服务)
利用PXE实现批量无人值守安装linux操作系统_第21张图片
利用PXE实现批量无人值守安装linux操作系统_第22张图片
利用PXE实现批量无人值守安装linux操作系统_第23张图片

  • vim /etc/xinetd.d/tftp 编辑该配置文件将tftp服务的disable=yes状态改为disable=no状态
    利用PXE实现批量无人值守安装linux操作系统_第24张图片
    利用PXE实现批量无人值守安装linux操作系统_第25张图片
  • systemctl restart xinetd.service
    在这里插入图片描述
  • chkconfig --list 查看pxe这个程序的状态
    利用PXE实现批量无人值守安装linux操作系统_第26张图片
    利用PXE实现批量无人值守安装linux操作系统_第27张图片
    利用PXE实现批量无人值守安装linux操作系统_第28张图片
  • netstat -antlupe | grep 69 查看端口是否为69
    利用PXE实现批量无人值守安装linux操作系统_第29张图片

声明:到这里tftp服务就开启了,然后才可以引入pxe程序

步骤十:配置tftp服务器,利用tftp服务让server服务器知道下一步要干嘛(引入pxe程序)
利用PXE实现批量无人值守安装linux操作系统_第30张图片
利用PXE实现批量无人值守安装linux操作系统_第31张图片

cp /var/www/html/westos/isolinux/* /var/lib/tftpboot/ 从iso中拷贝内核镜像和文件系统镜像到tftp服务的配置目录下,让server主机在pxe程序的引导下知道自己的内核等安装信息
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 拷贝pxelinux.0文件到tftp根目录,该操作的目是让server主机得到ip地址的同时也会有pxe程序引导它下一步要去哪里
mkdir /var/lib/tftpboot/pxelinux.cfg 准备默认的菜单配置文件,创建这个目录是因为pxelinux.0默认其为配置目录,创建pxelinux.cfg目录,固定目录名称
cd /var/lib/tftpboot/ 切换到tftp的配置目录下面
cp isolinux.cfg pxelinux.cfg/default default文件,必须为这个名称,创建一个pxe程序默认的读取文件default,其内容与isolinux.cfg一样,因此直接复制

利用PXE实现批量无人值守安装linux操作系统_第32张图片
查询pxelinux.0文件所在目录
在这里插入图片描述
利用PXE实现批量无人值守安装linux操作系统_第33张图片

initrd.img 文件系统镜像
vmlinuz    内核镜像文件

利用PXE实现批量无人值守安装linux操作系统_第34张图片

  • vim /etc/dhcpd.conf 继续编辑dhcp的配置文件(让server逐渐的得到ip的同时获得172.25.254.111与pxelinux.0)
    利用PXE实现批量无人值守安装linux操作系统_第35张图片
    写入
next-server 172.25.254.111;
filename "pxelinux.0";

利用PXE实现批量无人值守安装linux操作系统_第36张图片

  • systemctl restart dhcpd 重启dhcp服务,使设置生效
    利用PXE实现批量无人值守安装linux操作系统_第37张图片
  • 编辑default文件,让server主机自动装系统时去读取包含其安装参数的ks.cfg文件
    在这里插入图片描述
    利用PXE实现批量无人值守安装linux操作系统_第38张图片
    步骤十一:测试
以上工作完成之后,就可以开始安装操作系统了
准备一台适当配置的物理机,我使用的是真机上的server虚拟机
如果是两个独立的主机需要连接网线,这样二者才在同一个局域网内
我的server虚拟机和ttt虚拟机在一个局域网内,不需要连网线
如果是两台独立的主机需要设置 BIOS 从网卡启动,我直接以网卡方式启动server主机
以网卡方式启动server服务,然后看ttt主机能不能引导它装系统
等待安装,如果能引导装系统就说明成功了

利用PXE实现批量无人值守安装linux操作系统_第39张图片
利用PXE实现批量无人值守安装linux操作系统_第40张图片
利用PXE实现批量无人值守安装linux操作系统_第41张图片

为了让企业当中所有的装系统的服务器自动选择目录进行安装,在企业当中使用ups电源,让所有的服务器的安装同时进行

9.编辑文件改变安装系统时的驱动时间以及标题

  • cd /var/lib/tftpboot/pxelinux.cfg 切换到系统安装说明文件的目录下
    在这里插入图片描述
  • vim default 改时间, 改安装指定,默认时间, 默认标题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    利用PXE实现批量无人值守安装linux操作系统_第42张图片
    在这里插入图片描述

你可能感兴趣的:(rhcsa)