news 2026/11/6 1:50:26

基于网启PXE服务器的批量定制系统平台

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于网启PXE服务器的批量定制系统平台

基于网启PXE服务器的批量定制系统平台

项目说明

概述

  • 该项目共分为2个子项目,由iventoy和定制安装两部分组成
  • 该项目旨在复习巩固系统服务部署使用、shell编程等知识,旨在让学生增加知识面,提高项目实习经历,充实简历

项目背景知识

需求

  • 公司新购了一批服务器和台式机,需要为台式机和服务器安装系统,一部分需要安装国产OpenEuler,一部分要求安装CentOS 7.9,同时也要满足定制化需求,即按要求分区安装相应软件。

常见系统批量安装方式

使用商业化软件
  • 使用商业化软件要额外成本开支
使用开源软件
  • Linux 操作系统基于pxe技术结合kickstart实现定制化需求。

  • Linux 操作系统基于cobbler结合自定义ks文件实现定制化需求。

  • windows 系统安装 iventoy 结合自定义配置文件实现定制化需求。

  • U盘装系统,制作u盘启动盘引导安装。

  • 服务器通过ipmi远程ISO安装。

  • 刻录光盘,外接光驱安装系统。

结论
  • 综合比较,选择iventoy,将我们自己笔记本打造成pxe服务器,操作相对简单,官方已经检测通过100多种操作系统。

iventoy介绍

  • 主页:https://www.iventoy.com/cn/index.html
  • iVentoy 可以看成是一个增强版的 PXE 服务器,使用iVentoy 你可以通过网络同时给多台机器启动、安装操作系统。
  • iVentoy 使用极其简单,无需复杂的配置,直接把 ISO 文件放到指定位置,客户机在启动时根据菜单选择要启动的ISO文件即可。
  • iVentoy 同时支持 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI 和 ARM64 UEFI 模式。
  • iVentoy 支持 110 多种常见类型的操作系统
  • iVentoy 在运行时会使用系统的一些端口号,这些端口需要在防火墙中放开,否则 iVentoy 会无法正常工作,具体如下:

PEX介绍

  • PXE,预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。
  • PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

项目环境

项目拓扑结构

  • 安装win10/11 笔记本一台、服务器若干、交换机一台

软硬件环境清单

  • 注意:为了学习方便,文档使用VMware 17 workstation 里面创建新的虚拟机代替台式机和服务器来验证。
主机名IP地址硬件软件
pxe-controlwindows本机分配IPWindows本机iventoy-1.0.20-win64-free.zip
node1192.168.88.162cpu:1颗2核
内 存:4GB
HDD:20GB
网 络:NAT
VmWare17
Centos7.9
node2192.168.88.163cpu:1颗2核
内 存:4GB
HDD:20GB
网 络:NAT
VmWare17
OpenEuler22.03 SP4

任务清单

系统平台部署

  • 安装VmWare17
  • 虚拟出2台计算机

Windows下安装iventoy

  • 前置处理
  • 解压缩部署

配置iventoy

  • 配置网卡信息
  • 配置vmware

测试安装

  • 安装centos7.9
  • 安装openeuler

自动化脚本安装

实施步骤

安装下载

  • 下载地址:https://www.iventoy.com/cn/download.html

  • 注意:下载解压缩iventoy-1.0.20-win64-free.zip,解压位置的全路径中不能有中文或空格, 软件解压后的目录结构如下:

  • 各个目录作用如下:
目录说明
data存放 License、配置文件等
doc存放软件相关说明文档
iso放ISO文件的地方,可以在里面创建子目录
lib存放 iVentoy 运行所需的 LIB 文件,用户不要动这个目录
log存放 iVentoy 运行日志
user存放用户文件、第三方软件包、自动安装脚本等文件

配置iventoy

拷贝ISO文件
  • 将需要安装的系统ISO文件都拷贝到D:\iventoy-1.0.20-win64-free\iventoy-1.0.20\iso目录下

  • 可以在此目录下任意创建子目录来归类存放各种不同类型系统的ISO文件。

  • 注意:

    • 目录名和ISO文件名中不能有中文或空格
    • 也可以管理员身份打开cmd,使用命令创建iso快捷方式(软连接),即不需要将ISO文件从别的位置拷贝到这个iso目录下 ( Linux 系统中你可以使用ln -s命令)
# 在 Windows 系统中你可以使用 mklink 目标 源 命令创建C:\Users\Administrator>mklink D:\iventoy-1.0.20-win64-free\iventoy-1.0.20\iso\CentOS-7-x86_64-DVD-2207-02.iso D:\Linux\Linux_app\ISO\CentOS-7-x86_64-DVD-2207-02.iso 为 D:\iventoy-1.0.20-win64-free\iventoy-1.0.20\iso\CentOS-7-x86_64-DVD-2207-02.iso <<===>> D:\Linux\Linux_app\ISO\CentOS-7-x86_64-DVD-2207-02.iso 创建的符号链接

运行软件
  • Windows 系统中直接双击运行 exe 文件即可

  • Linux 系统下在终端中执行sudo bash iventoy.sh start命令。

  • 注意:windows 注意需要关闭防火墙或放行相关端口。本文采用关闭所有防火墙,如图:

  • 管理员身份启动iventoy,如图:

  • iVentoy 界面是基于 WEB 的,因此软件运行起来以后,需要打开浏览器访问http://127.0.0.1:26000来打开 iVentoy 的软件界面。
  • Windows 系统中打开软件之后,会自动打开浏览器,如果没有自动打开,则需要手动点击打开链接按钮,如图:

  • 注意:请使用新版本的 Google Chrome 或 FireFox 浏览器访问 iVentoy 界面,其他浏览器未做测试,不保证没有问题。
  • 分析客户端IP地址设置:打开vmware17->编辑菜单->虚拟网络编辑器->VMnet8 NAT 网卡查看网段,点击NAT设置查看网关地址,注意:需要关闭VMware nat模式的dhcp服务,如图:

启动 PXE 服务
  • 在 iVentoy 主界面上选择本机 IP 地址,根据之前的分析设置好 IP 地址池,然后点击绿色的开始按钮即可,如图:

  • 启动 iventoy 后如图示:

自动启动 PXE 服务
  • Windows 版本可以执行iVentoy_64.exe -R
  • Linux 版本中可以执行sudo bash iventoy.sh -R start
  • 其中-R选项的意思是按照上一次运行时的参数自动启动 PXE 服务。 这样就不需要再手动点击绿色的开始按钮了,当然前提是之前必须手动设置完参数,启动过一次。在此之后运行时设置的参数会被保存下来,才可以使用-R选项。

系统安装

  • 本文使用VMware workstation 新建虚拟机测试,新建虚拟机时不要加载iso镜像。

  • 新建Centos7.9虚拟机

注意:新CD/DVD处不能设置ISO镜像文件

  • PEX自动识别:

  • 由于网络安装加载较慢,需要等待一段时间,后续就和正常装机一样,过程略。

  • 注意:
    • 安装RHEL9/OpenEuler系统时需要上4G内存,否则无法加载设备(https://blog.csdn.net/qq_44839276/article/details/135271485)
    • 某些系统自定义分区时需要增加biosboot分区或/boot/efi分区,大小100m即可

iVentoy 定制安装

作用
  • 通过 iVentoy 你无需重新制作ISO文件,只需要简单地为一个ISO文件指定一个或者多个自动安装脚本来实现无人值守、自动安装部署系统的方案。

  • 可以使用 Windows 中的 unattend XML、Redhat/CentOS系列中的 Kickstart 脚本、SUSE系列中的 autoYast XML、Debian系列中的preseed脚本等等。

  • 下面的示例模版脚本位于安装包内的user/scripts/example目录下,如图:

在这里插入图片描述

发行版脚本格式示例脚本说明
WindowsUnattend XMLunattended.xmlWindows系列
Deepin/UOSINIdeepin.iniDeepin/UOS 系统
RHEL8/CentOS8Kickstart scriptkickstart8.cfg同时也支持基于这几个派生出来的发行版。比如 OpenAnolis, RockyLinux 等。
RHEL7/CentOS7/FedoraKickstart scriptkickstart7.cfg同时也支持基于这几个派生出来的发行版。比如 Oracle Linux, EuroLinux 等。
RHEL6/CentOS6Kickstart scriptkickstart6.cfg同时也支持基于这几个派生出来的发行版。
openEulerKickstart scriptopeneuler.cfgopenEuler 版本。
DebianPreseed scriptpreseed.cfgDebian 系列的发行版。
Ubuntu Server (< 20.x)Preseed scriptpreseed.cfg早期 Ubuntu Server 版本
Ubuntu Server (20.x+)cloud-initcloud-init-user-dataUbuntu Server 20.x 以后的版本
SUSEautoYast XMLautoYast.xmlSLES 和 openSUSE
  • 注意,这里的示例脚本仅供参考,需要根据实际需要修改,尤其是里面磁盘分区设置的部分。否则会造成磁盘被误格式化、数据丢失等问题。
脚本变量扩展
  • 在进行自动安装时,在安装脚本中有一些配置是无法固定写死的,必须根据实际环境进行调整。

  • 最常见的就是对于安装盘的指定,比如我们在安装脚本中指定系统安装到DISK0或者/dev/sda
    但在有些机器上它对应的那个盘并不是我们想要的那个。 这样可能就把系统安装到错误的盘上了。

  • 针对上述需求,iVentoy 在自动安装脚本中支持变量扩展,变量使用$$VT_XXX$$的形式,其中 VT_XXX 对应变量名。

  • 注意:

    • 包含变量的自动安装脚本文件必须是 UTF-8 编码格式。
    • 只支持下面表格中列出的变量,不支持自定义变量。
    • 变量名两边必须各用2个$$ 符号包起来
    • Ventoy 会自动检测自动安装脚本内是否包含变量,对于不包含变量的脚本不会做扩展处理。
    • 变量扩展是在副本中进行的,不会修改脚本源文件。

定制CentOS7
  • 复制 kickstart7.cfg 为 CentOS7.cfg 并修改
installlang en_US.UTF-8 keyboard us rootpw123456firewall--service=ssh authconfig--enableshadow--passalgo=sha512 selinux--disablefirewall--disabledtimezone--utcAsia/Shanghai#network --onboot=yes --device=$$VT_MAC_COLON_LOWER$$ --bootproto=static --ip=$$VT_LOCAL_IP$$ --netmask=$$VT_NET_MASK$$ --gateway=$$VT_GATEWAY$$ --noipv6eula--agreedfirstboot--disable%include /tmp/partation.ks zerombr clearpart--all--initlabelpart /boot--fstypexfs--size1024part swap--size2048part /--fstypexfs--size1--grow#packages configuration%packages @core bash-completion chrony dos2unix net-tools lrzsz nmap sysstat telnet treevimwget%endreboot%pre#Select install diskdisk_short_name=$$VT_LINUX_DISK_MAX_SIZE$$echobootloader--location=mbr--driveorder=$disk_short_name>>/tmp/partation.ksechoignoredisk --only-use=$disk_short_name>>/tmp/partation.ksechoclearpart--all--initlabel--drives=$disk_short_name>>/tmp/partation.ks %end#Download third part software%post# wget $$VT_IMG_ID_HTTP_URL$$/Packages/kernel-tools-3.10.0-957.el7.x86_64.rpm -O /root/kernel-tools.rpm# wget http://$$VT_SERVER_IP$$:$$VT_HTTP_PORT$$/user/xxx.zip -O /root/xxx.zip%end

  • 关闭PEX服务

  • 将设置好的自动部署脚本和镜像关联

测试效果
  • 启动服务
  • 本文使用VMware workstation 新建虚拟机测试,新建虚拟机时不要加载iso镜像,测试CentOS7,按回车键。

  • 切换到自定义脚本,然后按 回车键

  • 由于网络安装加载较慢,需要等待一段时间,安装按预先设定脚本执行

  • 安装完毕后,登录系统检查
# 分区检查[root@localhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:0020G0disk ├─sda18:101G0part /boot ├─sda28:201G0part[SWAP]└─sda38:3018G0part / sr011:011024M0rom
# 软件包检查[C:\~]$ ssh root@192.168.88.200 Connecting to 192.168.88.200:22...Connection established.To escape to local shell,press'Ctrl+Alt+]'.WARNING! The remote SSH server rejected X11 forwarding request.Last login: Thu May 30 14:56:50 2023[root@localhost ~]# rpm -aq | egrep "vim|wget|tree|bash-completion|lrzsz"vim-filesystem-7.4.629-7.el7.x86_64 bash-completion-2.1-8.el7.noarch wget-1.14-18.el7_6.1.x86_64 vim-enhanced-7.4.629-7.el7.x86_64 vim-minimal-7.4.629-7.el7.x86_64 vim-common-7.4.629-7.el7.x86_64 tree-1.6.0-10.el7.x86_64 lrzsz-0.12.20-36.el7.x86_643
  • 检查防火墙和SELinux。
[root@localhost ~]# firewall-cmd --statenot running[root@localhost ~]# getenforceDisabled

问题总结

  • 需要关闭Windows的所有防火墙及杀毒等安全软件
  • iVentoy_64.exe执行文件需要以管理员身份打开
  • iVentoy exe文件双击运行若无反应,需要下载所有运行库: VS2019,下载链接:https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170
  • 本项目是在虚拟机中模拟的,若安装某些系统时卡死,一般都是虚拟机分配的内存不足造成的,建议分配4096m内存,如图:

  • 本项目实验需要使用vmnet8网卡,若无法使用则无法完成,需要在设备管理器中检查vmnet8网卡驱动是否安装,若有问题则在虚拟网络编辑器中进行还原默认值设置,如图:

  • 若网络引导到系统安装界面花屏(一般为Windows系列),需要更改iventoy的分辨率,由默认的1024*768修改为较高分辨率

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 1:47:36

Abaqus软件培训-从零开始学

一、Abaqus 培训到底学什么&#xff1f;标准 5 天课程模块拆解结论&#xff1a;正规 Abaqus 培训不是"教软件点哪里"&#xff0c;而是把建模—求解—判读这条完整链路跑通&#xff0c;其中最难、也最值钱的部分是非线性收敛调试与结果可信度判断。一套完整的 5 天课程…

作者头像 李华
网站建设 2026/11/6 1:46:17

给坏情绪一个出口: 从 PrimeConsole 仿真验证到 PrimeHub 上架——我给 启元 Q1 写了个“抱抱补给站”技能

前言 那天晚上调试到十一点&#xff0c;一段轨迹改了五版还是不对&#xff0c;我盯着屏幕忽然冒出一个念头&#xff1a;现在要是有人抱我一下就好了。 这个念头挥之不去。第二天想起桌边资料里那台 Q1——88 厘米、15 公斤的小个子人形机器人&#xff0c;手臂能张能合&#xff…

作者头像 李华
网站建设 2026/11/6 1:44:17

CICD 自由式项目

CICD 项目Ubuntu 26.04U_gitlab192.168.188.70Ubuntu 26.04U_docker192.168.188.30  部署 gitlab # U_gitlab 执行 apt update apt install -y curl openssh-server ca-certificates tzdata perl postfix curl -fsSL https://packages.gitlab.com/install/repositories/gitlab…

作者头像 李华
网站建设 2026/11/6 1:43:41

(论文速读)Ponder:通过神经渲染进行点云预训练

论文题目&#xff1a; Ponder: Point Cloud Pre-training via Neural Rendering&#xff08;Ponder&#xff1a;通过神经渲染进行点云预训练&#xff09;会议&#xff1a; ICCV 2023摘要&#xff1a; 我们提出了一种通过可微神经渲染对点云表征进行自监督学习的新方法。该方法受…

作者头像 李华