PXE简介
PXE(Preboot Execution Environment)预启动执行环境,也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
PXE不是一种安装方式,是一种引导的方式。PXE方式要求安装的计算机中必须包含一个 支持PXE 的网卡,且主板支持网络引导,PXE 协议使计算机可以通过网络启动。
PXE协议分为 client 和 server 端,PXE client 在网卡Rom中,当计算机引导时,cpu通过加载bios映射到内存中的片段,然后检查计算机的健康状况(如cpu风扇,网卡等)继而把网卡Rom中的PXE client 调入内存引导执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。
PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的设置。在 PXE client 的 ROM 中,已经存在了 TFTP Client。
PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。一方面tftp可以达到32M,对于系统内核,引导程序等小文件,足以达到,另一方面tftp使用udp协议69号端口,速度也快足以满足要求。
具体实现过程如下图所示:
PXE组件需要哪些服务:
- DHCP服务,分配IP地址,定位引导程
- DNS服务,为客户机分配主机名
- TFTP服务,提供引导程序下载
- FTP服务(或http/nfs),提供yum安装源
客户机应具备的条件:
- 网卡ROM必须支持PXE协议
- 主板支持网络启动
部署PXE环境具体步骤
Step1 安装并开启httpd服务
1.安装环境所需的 http服务、dhcp服务和kickstart自动安装系统工具:
因为之前已经装好了,所以 Nothing to do 。
2.然后开启httpd服务,并设为开机自启;关闭防火墙firewalld服务:
3.在 /var/www/html/ 目录下创建一个挂载镜像的目录 rhel7.3,再创建一个存放 kickstart 生成脚本的目录 ks:
4.然后将已有镜像挂载到 /var/www/html/rhel7.3 目录下,并将挂载命令写到 /etc/rc.d/rc.local 文件中实现开机自动挂载:
文件中增加内容:
保存并退出,然后给 /etc/rc.d/rc.local 文件增加执行权限:
Step2 利用kickstart生成自动安装的脚本
1.利用kickstart 自动安装工具生成脚本,具体步骤可以查看我的上一篇文章,点击此处查看生成安装脚本步骤。此处我们需要修改安装模式的配置,改为http安装。之前已经有一个配置好的脚本 ks.cfg ,我们可以直接对其进行修改然后再另存为,如下:
在安装模式选择处改为如下:
然后可以在安装后执行的脚本处填写自动配置yum源的脚本,如下:
其它配置不做修改,然后点击左上角File——>Save ,保存到之前新建的 /var/www/html/ks 目录下:
可以打开浏览器,在网址中输入ip地址和脚本文件具体位置查看内容,如下:
2.然后手动修改生成的脚本文件中的bug,添加要安装的软件:
增加内容如下:
Step3 dhcp服务的搭建
1.搭建dhcp服务,具体的搭建步骤可以查看我之前的搭建dhcp服务的文章,点击此处查看搭建dhcp服务步骤。最后开启dhcpd服务,查看dhcpd服务状态为开启状态:
2.修改dhcp的配置文件,在文件中添加服务器上 bootloader 文件的路径:
添加内容如下:
注意:这里的filename是个相对路径,相对于 /tftpboot,所以filename如果指定成为"/tftpboot/pxelinux.0"会有问题
然后保存并退出,重启dhcp服务:
Step4 配置tftp服务器
1.首先安装提供PXE的syslinux,在此简单介绍下syslinux,它是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:syslinux是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
2.再安装tftp服务,如下:
安装成功:
然后开启tftp服务,并设为开机自启:
3.然后将加载文件/usr/share/syslinux/pxelinux.0拷贝到/var/lib/tftpboot/中,使tftp协议引导加载文件pxelinux.0:
4.然后将挂载的镜像的目录下的isolinux/ 目录中的所有文件拷贝到/var/lib/tftpboot/中:
5.然后在/var/lib/tftpboot/目录下创建一个 pxelinux.cfg的目录,然后将挂载的镜像的目录下的isolinux/ 目录中的isolinux.cfg文件拷贝到pxelinux.cfg/default中。pxelinux.cfg/default是pxelinux的配置文件,pxelinux会以IP地址的16进制表示来搜索配置文件,如果没找到去除最低一位继续找。如果所有匹配都失败,就使用default文件。如下:
6.然后修改pxelinux的配置文件pxelinux.cfg/default :
修改如下:
(1). 修改等待时间为5s:
(2). 可以修改安装界面大标题:
(3). 修改第一项为默认选项,并添加安装镜像源的路径,以及自动安装系统脚本:
因为该文件为只读文件,保存退出时后面要加 "! "
至此,PXE的环境就已经部署完成,下面进行测试。
PXE网络安装系统测试
找一个之前已经安装好的虚拟机来进行测试,双击要进行操作的虚拟机,打开虚拟机界面,然后点击上方的小灯泡,然后选择下面的 Boot Options 开机启动项,在右面的NIC网卡启动前进行勾选,再点击向上的箭头将网卡启动移至第一行,如下:
最后点击右下角的Apply,就会出现下面提示,点击OK:
然后关闭该虚拟机,再重新开启,该虚拟机就会从网卡启动,然后就会进入到安装界面了,界面会根据我们之前的设置进行相应的改变,安装界面如下:
然后不需要进行任何的操作,等待5s之后就开始了自动安装系统,如下:
那么PXE网络自动安装Linux系统就部署完成了!