利用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服务


8.用我的ttt虚拟机给server服务器装系统
步骤一:寻找包含pxe程序的软件包(pxe启动文件是pxelinux.0)


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

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


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

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

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

ls 查看dhcp配置文件


vim dhcpd.conf 编辑dhcp配置文件

cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 导入dhcp的内容


按照以前的方法改好DHCP文件(在搭建DHCP服务器当中已经详细说明了)

systemctl restart dhcpd 重启dhcp服务


步骤四:开启httpd服务(已经部署了共享yum源,按理说已经开了,再验证一下)

systemctl start httpd 开启服务

systemctl enable httpd 设置开机启动


systemctl status httpd

步骤五:设置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 查看是否正确

步骤六:关闭防火墙

systemctl stop firewalld

systemctl mask firewalld


步骤七:在浏览器中输入172.25.254.111/westos 看是否能看到共享的yum源


步骤八:在浏览器中输入172.25.254.111/ks.cfg看是否能看到共享的自动安装文件


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

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


yum search tftp 寻找tftp服务

yum install tftp-server.x86_64 -y 安装tftp服务


systemctl status tftp 查看tftp是否开启


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


因为使用的7.3版本tftp的状态为disable,所以开启tftp服务需要借助xinted(7.0版本的虚拟机可以直接开启tftp服务)


vim /etc/xinetd.d/tftp 编辑该配置文件将tftp服务的disable=yes状态改为disable=no状态


systemctl restart xinetd.service

chkconfig --list 查看pxe这个程序的状态

netstat -antlupe | grep 69 查看端口是否为69

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

步骤十:配置tftp服务器,利用tftp服务让server服务器知道下一步要干嘛(引入pxe程序)

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/defaultdefault文件,必须为这个名称,创建一个pxe程序默认的读取文件default,其内容与isolinux.cfg一样,因此直接复制

 

查询pxelinux.0文件所在目录

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


vim /etc/dhcpd.conf 继续编辑dhcp的配置文件(让server逐渐的得到ip的同时获得172.25.254.111与pxelinux.0)

写入:
next-server 172.25.254.111;
filename "pxelinux.0";

systemctl restart dhcpd 重启dhcp服务,使设置生效

编辑default文件,让server主机自动装系统时去读取包含其安装参数的ks.cfg文件


步骤十一:测试
以上工作完成之后,就可以开始安装操作系统了
准备一台适当配置的物理机,我使用的是真机上的server虚拟机
如果是两个独立的主机需要连接网线,这样二者才在同一个局域网内
我的server虚拟机和ttt虚拟机在一个局域网内,不需要连网线
如果是两台独立的主机需要设置 BIOS 从网卡启动,我直接以网卡方式启动server主机
以网卡方式启动server服务,然后看ttt主机能不能引导它装系统
等待安装,如果能引导装系统就说明成功了


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

9.编辑文件改变安装系统时的驱动时间以及标题
cd /var/lib/tftpboot/pxelinux.cfg 切换到系统安装说明文件的目录下

vim default 改时间, 改安装指定,默认时间, 默认标题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值