PXE技术在操作系统批量安装中的应用与实现

PXE(Preboot Execution Environment)即预启动执行环境,它是一种可以使计算机通过网络启动的技术。

一、工作原理

  1. 客户端请求
    • 当支持 PXE 的计算机启动时,其网卡的固件会广播一个请求,寻找网络中的 PXE 服务器。
    • 这个请求中包含了客户端的 MAC 地址等信息。
  2. 服务器响应
    • PXE 服务器接收到客户端的请求后,会根据请求中的信息提供相应的服务。
    • 首先,服务器会发送一个 DHCP(动态主机配置协议)响应,为客户端分配 IP 地址等网络配置信息。
    • 然后,服务器会告知客户端从何处下载启动文件,通常是一个引导程序。
  3. 客户端下载并启动
    • 客户端根据服务器的指示,下载引导程序。
    • 引导程序会进一步加载操作系统安装程序或其他网络应用程序。

二、应用场景

  1. 大规模部署操作系统
    • 在企业或学校等有大量计算机需要安装操作系统的环境中,PXE 可以大大简化安装过程。
    • 管理员可以在服务器上准备好操作系统镜像,通过网络让多台计算机同时从 PXE 服务器启动并安装操作系统,而无需逐台使用光盘或 U 盘进行安装。
    • 例如,一家新成立的公司有数百台新电脑需要安装 Windows 操作系统,通过 PXE 技术,管理员可以快速、统一地完成操作系统的安装,节省大量时间和精力。
  2. 无盘工作站
    • PXE 支持无盘工作站的运行。无盘工作站不需要本地硬盘存储操作系统和应用程序,而是通过网络从服务器加载所需的系统和软件。
    • 比如在一些网吧中,采用无盘工作站可以方便管理游戏和软件的更新,所有的更新只需在服务器端进行,客户端就可以自动获取最新版本。当玩家在无盘工作站上启动电脑时,通过 PXE 从服务器加载操作系统和游戏程序,实现快速启动和运行。
  3. 系统恢复和故障排除
    • 当计算机系统出现故障无法正常启动时,PXE 可以作为一种恢复手段。
    • 通过网络启动到一个恢复环境,进行系统修复、数据备份或病毒查杀等操作。
    • 例如,某台计算机由于病毒感染导致系统崩溃,无法从本地硬盘启动,此时可以利用 PXE 启动到一个专门的病毒查杀和系统修复工具环境,对计算机进行修复,而无需依赖本地的操作系统。

三、优势

  1. 集中管理
    • 所有的操作系统镜像和软件资源都可以集中存储在 PXE 服务器上,方便管理员进行统一管理和更新。
    • 与传统的分散式安装和维护相比,大大提高了管理效率,减少了维护成本。
  2. 灵活性
    • 可以根据不同的需求配置 PXE 服务器,提供不同的操作系统和应用程序选择。
    • 例如,在一个企业环境中,有些部门需要安装特定的软件,管理员可以通过 PXE 服务器为不同部门的计算机提供定制化的启动选项,满足多样化的需求。
  3. 快速部署
    • 对于新的计算机或需要重新安装系统的计算机,通过 PXE 可以快速启动安装过程,无需等待光盘或 U 盘的读取,节省了安装时间。

四、实现

1.环境准备:

rhel7主机、开启主机图形、配置网络可用、关闭VMware dhcp功能

2.kickstart自动安装脚本制作

安装图形化生成kickstart自动安装脚本工具

root@node1 \~\]# yum install system-config-kickstart -y ![](https://i-blog.csdnimg.cn/direct/cf6a318abd1a45118f79b7395fb412a7.png) 启动图形制作工具 \[root@node1 \~\]# system-config-kickstart ![](https://i-blog.csdnimg.cn/direct/5c4fe9a88136434ebae32cfb0d496353.png) ![](https://i-blog.csdnimg.cn/direct/690762fc6b4a41a89112cbf44320bbdd.jpeg) ![](https://i-blog.csdnimg.cn/direct/6eafac21f1da4d37bc342f5c83ee208b.png) ![](https://i-blog.csdnimg.cn/direct/c8ddc12921c64f188961170fe570e62f.png) ![](https://i-blog.csdnimg.cn/direct/e098307f876b45598de760f824221c6c.png) ![](https://i-blog.csdnimg.cn/direct/b467d63cec7147b7b00e93584fa635ec.png) ![](https://i-blog.csdnimg.cn/direct/df79f6690ba8476eb9eb345920fb66d1.png) ![](https://i-blog.csdnimg.cn/direct/9ea3e52391574e80b6f58a253d47695e.png) ![](https://i-blog.csdnimg.cn/direct/8fc225d3369749759d21cf0ceaf7e2e3.png) ![](https://i-blog.csdnimg.cn/direct/a6874bbd57bf4f119157ee0a06bb1db8.jpeg) ![](https://i-blog.csdnimg.cn/direct/8e6136eef1cb4fdaba2ab5a88135afc6.png) ![](https://i-blog.csdnimg.cn/direct/27c98b188a0345d3b4b49a439ca417cc.png) ![](https://i-blog.csdnimg.cn/direct/70da7239ded140ba914cf20db538ef0b.png) 注意要添加以下内容 ![](https://i-blog.csdnimg.cn/direct/3f3f7624777643e0a832950c9e3ea0f6.png) \[root@node1 \~\]# ksvalidator ks.cfg 语法检测一下 \[root@node1 \~\]# cp /root/ks.cfg /var/www/html/ 将安装脚本共享 ![](https://i-blog.csdnimg.cn/direct/8f9af3f33cf746fa84880b30eb640c77.png) 到此,安装脚本已经编写完成 **3.dhcp服务并测试kickstart脚本** 安装dhcp服务器为其他服务器提供分配ip的功能 \[root@node1 \~\]# yum install dhcp -y ![](https://i-blog.csdnimg.cn/direct/f82fc9a65ee4430486fd1ddc18154f9b.png) 生成配置文件 \[root@node1 \~\]# rpm -qc dhcp ![](https://i-blog.csdnimg.cn/direct/051b94a3c9ff492ab641591943ec7a07.png) \[root@node1 \~\]# cat /etc/dhcp/dhcpd.conf ![](https://i-blog.csdnimg.cn/direct/5702a503f6dd46cb9eff882d6fb20eb8.png) \[root@node1 \~\]# \\cp -f /usr/share/doc/dhcp\*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 编辑配置文件 \[root@node1 \~\]# vim /etc/dhcp/dhcpd.conf ![](https://i-blog.csdnimg.cn/direct/cf98e1a418ba4d2b922d4ae8af22ce4d.jpeg) 将下面这两行注释掉 ![](https://i-blog.csdnimg.cn/direct/4b63382d628c401a81ec7bcb62bb0ff9.png) ![](https://i-blog.csdnimg.cn/direct/9e2765facaf147c69764fa82e65f898b.png) subnet 172.25.254.0 :网络位 netmask 255.255.255.0 :子网掩码 range 172.25.254.40 172.25.254.50 : 地址池 option routers 172.25.254.2 : 网关 重启dhcp服务 \[root@node1 \~\]# systemctl enable --now dhcpd ![](https://i-blog.csdnimg.cn/direct/9857751327c042b68253d056155c3ec0.png) \[root@node1 \~\]# vim ks.cfg ![](https://i-blog.csdnimg.cn/direct/6e5772fb2340417fa95c1fe225322788.png) 将此处的--maxsize=1删掉 接下来我们新建一个虚拟机(check_ks)进行测试(新建虚拟机的过程就不详细叙述了) ![](https://i-blog.csdnimg.cn/direct/2450bb5f9be640afb84b0679fa756d95.jpeg) ![](https://i-blog.csdnimg.cn/direct/20920ada870b46a5adee0e92f87f7bbf.png) 自动下载 ![](https://i-blog.csdnimg.cn/direct/16d68fb57d0149ec90bc7bcdaa5fb54c.png) ![](https://i-blog.csdnimg.cn/direct/320f45d342f84e8c98eb4122ea6eb162.png) **搭建pxe网络安装环境实现服务器自动部署** \[root@node1 \~\]# yum install syslinux.x86_64 ![](https://i-blog.csdnimg.cn/direct/da83475053a5487da25ff0221238d898.png) 共享pxelinux.0数据文件的网络服务 \[root@node1 \~\]# yum install tftp-server.x86_64 -y ![](https://i-blog.csdnimg.cn/direct/8e081de1df3d466c9c9b8f7c54e71c79.png) \[root@node1 \~\]# rpm -ql tftp-server ![](https://i-blog.csdnimg.cn/direct/987c104f66034e658b905ca912e25fc0.png) 启动tftp服务 \[root@node1 \~\]# systemctl enable --now tftp ![](https://i-blog.csdnimg.cn/direct/4c826804d083487d8daeed4b05f5c8e2.png) \[root@node1 \~\]# cp /rhel7/isolinux/\* /var/lib/tftpboot/ ![](https://i-blog.csdnimg.cn/direct/40e1d062cad7496086309d71a3d4fdab.png) \[root@node1 \~\]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ ![](https://i-blog.csdnimg.cn/direct/ac3671a4b5864d06978549ea8a539f83.png) ![](https://i-blog.csdnimg.cn/direct/a244e50e0aab4b7a90de23267e013505.png) \[root@node1 tftpboot\]# mkdir pxelinux.cfg \[root@node1 tftpboot\]# cp isolinux.cfg pxelinux.cfg/default ![](https://i-blog.csdnimg.cn/direct/8e6f1b7fb1a548e79cff0c105dbc2319.png) 编辑dhcp服务的配置文件并重启服务 ![](https://i-blog.csdnimg.cn/direct/77a2cbc734af4856bda6cd3dfd7e2768.png) \[root@node1 tftpboot\]# systemctl restart dhcpd \[root@node1 tftpboot\]# vim /var/lib/tftpboot/pxelinux.cfg/default ![](https://i-blog.csdnimg.cn/direct/6c7cb0d01e86437d8004a5209169abb1.png) 接下来我们去测试一下 点击打开电源室进入固件 ![](https://i-blog.csdnimg.cn/direct/e12a683b6eaa4b06a5d894fee729deb9.png) 调整启动顺序 ![](https://i-blog.csdnimg.cn/direct/b2792135ff9c4576b27f4e565960d98c.png) ![](https://i-blog.csdnimg.cn/direct/2db5e4e7f3184059958e06cc3d83859a.png)点击电源键,开启虚拟机 ![](https://i-blog.csdnimg.cn/direct/4bbf14f5dc4c47b996386f83c3dbaafc.png) 注意此处 ![](https://i-blog.csdnimg.cn/direct/79c6f8f6af7547958e51c68bb3781d90.jpeg) 实现自动安装 ![](https://i-blog.csdnimg.cn/direct/98c2799b59874bbba42be18377768fe4.png)

相关推荐
李少兄5 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
宁zz5 小时前
乌班图安装jenkins
运维·jenkins
无名之逆5 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
大丈夫立于天地间5 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
cg50175 小时前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影6 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain6 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon6 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu6 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu