目录
1.项目背景
1.1.需求
-
公司新购了一批服务器和台式机,需要为台式机和服务器安装系统,一部分需要安装国产OpenEuler,一部分要求安装CentOS 7.9,同时也要满足定制化需求,即按要求分区安装相应软件。
1.2.常见系统批量安装方式
1.2.1.使用商业化软件
-
使用商业化软件要额外成本开支
1.2.2.使用开源软件
-
Linux 操作系统基于pxe技术结合kickstart实现定制化需求。
-
Linux 操作系统基于cobbler结合自定义ks文件实现定制化需求。
-
windows 系统安装 iventoy 结合自定义配置文件实现定制化需求。
-
U盘装系统,制作u盘启动盘引导安装。
-
服务器通过ipmi远程ISO安装。
-
刻录光盘,外接光驱安装系统。
1.2.3.结论
-
综合比较,选择iventoy,将我们自己笔记本打造成pxe服务器,操作相对简单,官方已经检测通过100多种操作系统。
1.3.iventoy介绍
-
主页:iVentoy
-
iVentoy 可以看成是一个增强版的 PXE 服务器,使用iVentoy 你可以通过网络同时给多台机器启动、安装操作系统。
-
iVentoy 使用极其简单,无需复杂的配置,直接把 ISO 文件放到指定位置,客户机在启动时根据菜单选择要启动的ISO文件即可。
-
iVentoy 同时支持 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI 和 ARM64 UEFI 模式。
-
iVentoy 支持 110 多种常见类型的操作系统
-
iVentoy 在运行时会使用系统的一些端口号,这些端口需要在防火墙中放开,否则 iVentoy 会无法正常工作,具体如下:
端口号 | 协议 | 说明 |
---|---|---|
67/68 | UDP | DHCP Server端口号 |
69 | UDP | TFTP Server端囗号 |
26000 | TCP | iVentoy 管理界面 HTTP Server端口号 |
16000 | TCP | iVentoy PXE 服务 HTTP Server端囗号 |
10809 | TCP | NBD Server端口号 |
1.4.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)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统
2.项目环境
2.1.项目拓扑结构
-
安装win10/11 笔记本一台、服务器若干、交换机一台
2.2.软硬件环境清单
- 注意:为了学习方便,使用VMware 17 workstation 里面创建新的虚拟机代替台式机和服务器来验证
主机名 | IP地址 | 硬件 | 软件 |
pxe-control | windows本机分配IP | Windows本机 | iventoy-1.0.20-win64-free.zip |
node1 | 192.168.133.162 | cpu:1颗2核 内 存:4GB HDD:20GB 网 络:NAT | VmWare17 Centos7.9 |
node2 | 192.168.133.163 | cpu:1颗2核 内 存:4GB HDD:20GB 网 络:NAT | VmWare17 OpenEuler22.03 SP4 |
3.任务清单
3.1.系统平台部署
-
安装VmWare17
-
虚拟出2台计算机
3.2.Windows下安装iventoy
-
前置处理
-
解压缩部署
3.3.配置iventoy
-
配置网卡信息
-
配置vmware
3.4.测试安装
-
安装centos7.9
-
安装openeuler
3.5.自动化脚本安装
4.实施步骤
4.1.安装下载
-
下载地址:Download . Ventoy
-
注意:下载解压缩iventoy-1.0.20-win64-free.zip,解压位置的全路径中不能有中文或空格, 软件解压后的目录结构如下:
-
各个目录作用如下:
目录 | 说明 |
---|---|
data | 存放 License、配置文件等 |
doc | 存放软件相关说明文档 |
iso | 放ISO文件的地方,可以在里面创建子目录 |
lib | 存放 iVentoy 运行所需的 LIB 文件,用户不要动这个目录 |
log | 存放 iVentoy 运行日志 |
user | 存放用户文件、第三方软件包、自动安装脚本等文件 |
4.2.配置iventoy
4.2.1.拷贝ISO文件
-
将需要安装的系统ISO文件都拷贝到E:\iventoy-1.0.20\iso目录下
-
可以在此目录下任意创建子目录来归类存放各种不同类型系统的ISO文件。
-
注意:目录名和ISO文件名中不能有中文或空格
4.2.2.运行软件
-
注意:windows 注意需要关闭防火墙或放行相关端口。本文采用关闭所有防火墙,如图:
-
管理员身份启动iventoy,如图:
-
iVentoy 界面是基于 WEB 的,因此软件运行起来以后,需要打开浏览器访问
http://127.0.0.1:26000
来打开 iVentoy 的软件界面。 -
Windows 系统中打开软件之后,会自动打开浏览器,如果没有自动打开,则需要手动点击
打开链接
按钮,如图:
-
注意:请使用新版本的 Google Chrome 或 FireFox 浏览器访问 iVentoy 界面,其他浏览器未做测试,不保证没有问题。
-
分析客户端IP地址设置:打开vmware17->编辑菜单->虚拟网络编辑器->VMnet8 NAT 网卡查看网段,点击NAT设置查看网关地址,注意:需要关闭VMware nat模式的dhcp服务,如图:
- 然后点击虚拟网络编辑器,在NAT模式下关闭DHCP自动分配地址,再点击NAT设置,检查网关与子网IP如下图:
4.2.3.启动PXE服务
-
在 iVentoy 主界面上选择本机 IP 地址,根据之前的分析设置好 IP 地址池,然后点击绿色的开始按钮即可,如图:
-
启动 iventoy 后如图示:
4.3.系统测试
-
本文使用VMware workstation 新建虚拟机测试,新建虚拟机时不要加载iso镜像。
-
新建Centos7.9虚拟机
注意:新CD/DVD处不能设置ISO镜像文件
用不到的硬件可以移除
- PEX自动识别:
-
由于网络安装加载较慢,需要等待一段时间,后续就和正常装机一样,过程略。
-
注意:
-
安装RHEL9/OpenEuler系统时需要上4G内存,否则无法加载设备(vmware中pxe服务器安装报错dracut:FATAL: Failed to find a root file system in /tmp/curl_fetch_url1/install.img_dracut : fatal :failed to find a root filesystem-CSDN博客)
-
某些系统自定义分区时需要增加biosboot分区或/boot/efi分区,大小100m即可
-
4.4.iVentoy定制安装
4.4.1.作用
-
通过 iVentoy 你无需重新制作ISO文件,只需要简单地为一个ISO文件指定一个或者多个自动安装脚本来实现无人值守、自动安装部署系统的方案。
-
可以使用 Windows 中的 unattend XML、Redhat/CentOS系列中的 Kickstart 脚本、SUSE系列中的 autoYast XML、Debian系列中的preseed脚本等等。
-
下面的示例模版脚本位于安装包内的
user/scripts/example
目录下,如图:
发行版 | 脚本格式 | 示例脚本 | 说明 |
---|---|---|---|
Windows | Unattend XML | unattended.xml | Windows系列 |
Deepin/UOS | INI | deepin.ini | Deepin/UOS 系统 |
RHEL8/CentOS8 | Kickstart script | kickstart8.cfg | 同时也支持基于这几个派生出来的发行版。比如 OpenAnolis, RockyLinux 等。 |
RHEL7/CentOS7/Fedora | Kickstart script | kickstart7.cfg | 同时也支持基于这几个派生出来的发行版。比如 Oracle Linux, EuroLinux 等。 |
RHEL6/CentOS6 | Kickstart script | kickstart6.cfg | 同时也支持基于这几个派生出来的发行版。 |
openEuler | Kickstart script | openeuler.cfg | openEuler 版本。 |
Debian | Preseed script | preseed.cfg | Debian 系列的发行版。 |
Ubuntu Server (< 20.x) | Preseed script | preseed.cfg | 早期 Ubuntu Server 版本 |
Ubuntu Server (20.x+) | cloud-init | cloud-init-user-data | Ubuntu Server 20.x 以后的版本 |
SUSE | autoYast XML | autoYast.xml | SLES 和 openSUSE |
-
注意,这里的示例脚本仅供参考,需要根据实际需要修改,尤其是里面磁盘分区设置的部分。否则会造成磁盘被误格式化、数据丢失等问题。
4.4.2.定制CentOS7
-
复制 kickstart7.cfg 为 CentOS7.cfg 并修改
install
lang en_US.UTF-8
keyboard us
rootpw 123456
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disable
firewall --disabled
timezone --utc Asia/Shanghai#network --onboot=yes --device=$$VT_MAC_COLON_LOWER$$ --bootproto=static --ip=$$VT_LOCAL_IP$$ --netmask=$$VT_NET_MASK$$ --gateway=$$VT_GATEWAY$$ --noipv6
eula --agreed
firstboot --disable%include /tmp/partation.ks
zerombr
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 2048
part / --fstype xfs --size 1 --grow
#packages configuration
%packages
@core
bash-completion
chrony
dos2unix
net-tools
lrzsz
nmap
sysstat
telnet
tree
vim
wget
%endreboot
%pre
#Select install disk
disk_short_name=$$VT_LINUX_DISK_MAX_SIZE$$echo bootloader --location=mbr --driveorder=$disk_short_name >> /tmp/partation.ks
echo ignoredisk --only-use=$disk_short_name >> /tmp/partation.ks
echo clearpart --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服务
-
将设置好的自动部署脚本和镜像关联
4.4.3.测试效果
-
启动服务
-
本文使用VMware workstation 新建虚拟机测试,新建虚拟机时不要加载iso镜像,测试CentOS7,按回车键。
-
切换到自定义脚本,然后按 回车键
- 由于网络安装加载较慢,需要等待一段时间,安装按预先设定脚本执行
-
安装完毕后,登录系统检查
# 分区检查
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 1G 0 part [SWAP]
└─sda3 8:3 0 18G 0 part /
sr0 11:0 1 1024M 0 rom
# 软件包检查
[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 --state
not running
[root@localhost ~]# getenforce
Disabled
5.问题总结
-
需要关闭Windows的所有防火墙及杀毒等安全软件
-
iVentoy_64.exe执行文件需要以管理员身份打开
-
iVentoy exe文件双击运行若无反应,需要下载所有运行库: VS2019,下载链接:最新受支持的 Visual C++ 可再发行程序包下载 | Microsoft Learn
-
本项目是在虚拟机中模拟的,若安装某些系统时卡死,一般都是虚拟机分配的内存不足造成的,建议分配4096m内存,如图:
- 本项目实验需要使用vmnet8网卡,若无法使用则无法完成,需要在设备管理器中检查vmnet8网卡驱动是否安装,若有问题则在虚拟网络编辑器中进行还原默认值设置,如图:
-
若网络引导到系统安装界面花屏(一般为Windows系列),需要更改iventoy的分辨率,由默认的1024*768修改为较高分辨率
项目结束!