基于网启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.htmliVentoy 可以看成是一个增强版的 PXE 服务器使用iVentoy 你可以通过网络同时给多台机器启动、安装操作系统。iVentoy 使用极其简单无需复杂的配置直接把 ISO 文件放到指定位置客户机在启动时根据菜单选择要启动的ISO文件即可。iVentoy 同时支持 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI 和 ARM64 UEFI 模式。iVentoy 支持 110 多种常见类型的操作系统iVentoy 在运行时会使用系统的一些端口号这些端口需要在防火墙中放开否则 iVentoy 会无法正常工作具体如下PEX介绍PXE预启动执行环境Preboot eXecution EnvironmentPXE也被称为预执行环境)提供了一种使用网络接口Network Interface启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备如硬盘或本地已安装的操作系统。PXE(Pre-boot Execution Environment)是由Intel设计的协议它可以使计算机通过网络启动。协议分为client和server两端支持工作站通过网络从远端服务器下载映像并由此支持来自网络的操作系统的启动过程其启动过程中终端要求服务器分配IP地址再用TFTPtrivial file transfer protocol或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行由这个启动软件包完成终端基本软件设置从而引导预先安装在服务器中的终端操作系统。项目环境项目拓扑结构安装win10/11 笔记本一台、服务器若干、交换机一台软硬件环境清单注意为了学习方便文档使用VMware 17 workstation 里面创建新的虚拟机代替台式机和服务器来验证。主机名IP地址硬件软件pxe-controlwindows本机分配IPWindows本机iventoy-1.0.20-win64-free.zipnode1192.168.88.162cpu:1颗2核内 存4GBHDD20GB网 络NATVmWare17Centos7.9node2192.168.88.163cpu:1颗2核内 存4GBHDD20GB网 络NATVmWare17OpenEuler22.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\Administratormklink 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 -RLinux 版本中可以执行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--servicessh authconfig--enableshadow--passalgosha512 selinux--disablefirewall--disabledtimezone--utcAsia/Shanghai#network --onbootyes --device$$VT_MAC_COLON_LOWER$$ --bootprotostatic --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--locationmbr--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按回车键。切换到自定义脚本然后按 回车键由于网络安装加载较慢需要等待一段时间安装按预先设定脚本执行安装完毕后登录系统检查# 分区检查[rootlocalhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:0020G0disk ├─sda18:101G0part /boot ├─sda28:201G0part[SWAP]└─sda38:3018G0part / sr011:011024M0rom# 软件包检查[C:\~]$ ssh root192.168.88.200 Connecting to 192.168.88.200:22...Connection established.To escape to local shell,pressCtrlAlt].WARNING! The remote SSH server rejected X11 forwarding request.Last login: Thu May 30 14:56:50 2023[rootlocalhost ~]# rpm -aq | egrep vim|wget|tree|bash-completion|lrzszvim-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。[rootlocalhost ~]# firewall-cmd --statenot running[rootlocalhost ~]# getenforceDisabled问题总结需要关闭Windows的所有防火墙及杀毒等安全软件iVentoy_64.exe执行文件需要以管理员身份打开iVentoy exe文件双击运行若无反应需要下载所有运行库 VS2019下载链接https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?viewmsvc-170本项目是在虚拟机中模拟的若安装某些系统时卡死一般都是虚拟机分配的内存不足造成的建议分配4096m内存如图本项目实验需要使用vmnet8网卡若无法使用则无法完成需要在设备管理器中检查vmnet8网卡驱动是否安装若有问题则在虚拟网络编辑器中进行还原默认值设置如图若网络引导到系统安装界面花屏一般为Windows系列需要更改iventoy的分辨率由默认的1024*768修改为较高分辨率