BY xzllll

iVentoy | 一个增强版的PXE 服务器(Server)

指南 | Guides 2023年9月24日

前言

PXE

想要介绍iVentoy就绕不开PXE,那么PXE到底是什么呢?邀请ChatGPT来解答

PXE(Preboot eXecution Environment)是一种计算机网络协议,用于远程引导计算机并执行预启动环境中的任务。它允许计算机通过网络启动,而无需使用本地存储设备(如硬盘或光驱)上的启动介质。PXE通常用于大规模计算机部署和维护中,以简化操作系统安装、恢复、诊断和管理任务。

以下是PXE的一些关键特点和用途:

无需本地存储介质: 使用PXE,计算机可以通过网络引导,而不需要使用本地硬盘、CD/DVD-ROM或USB驱动器上的引导介质。这对于无硬盘或需要远程维护的计算机非常有用。

自动操作系统安装: PXE可用于自动安装操作系统。管理员可以设置一个远程PXE服务器,该服务器存储了操作系统镜像和安装脚本。当计算机通过PXE启动时,它可以从服务器下载并安装操作系统。

远程维护和故障排除: 管理员可以使用PXE引导工具远程执行维护和故障排除任务。这包括远程恢复、病毒扫描、硬件诊断等。

集中管理: PXE允许在网络上集中管理计算机的启动过程。管理员可以配置PXE服务器以根据计算机的不同需求提供不同的启动选项。

大规模部署: 在大规模计算机部署中,PXE可以加速新计算机的配置和部署过程。管理员可以快速将新计算机添加到网络中,以进行操作系统和应用程序的批量安装。

PXE通常使用DHCP(Dynamic Host Configuration Protocol)来分配IP地址,并使用TFTP(Trivial File Transfer Protocol)来传输启动文件和引导镜像。它通常与BIOS或UEFI固件一起使用,以启动计算机时自动查找PXE服务器。

总之,PXE是一种强大的网络引导协议,用于远程管理和配置计算机。它在大型IT环境中特别有用,可以加速操作系统部署和维护任务。

iPXE

再了解一下iPXE 再次请出ChatGPT来解答

iPXE(Internet Protocol eXecution Environment)是一个用于启动计算机的开源网络引导协议。它是PXE(Preboot eXecution Environment)的一个改进版本,具有更多功能和灵活性。iPXE允许计算机通过网络从远程服务器引导操作系统或其他网络应用程序,而无需本地存储设备(如硬盘)上的启动介质。

以下是iPXE的一些关键特点和用途:

支持多种网络协议: iPXE支持多种网络协议,包括HTTP、iSCSI、FTP等。这使得它能够从不同类型的网络存储中引导操作系统和应用程序。

自定义引导脚本: iPXE允许用户编写自定义引导脚本,这些脚本可以在启动过程中执行各种操作,包括网络配置、诊断、远程安装操作系统等。

无需本地存储设备: iPXE不需要本地硬盘或其他启动介质。它可以从网络中的远程服务器加载所需的文件,因此非常适用于无硬盘或无操作系统的计算机,如某些嵌入式系统或云虚拟机。

自动化部署: iPXE可用于自动化操作系统和软件的部署。管理员可以创建自定义引导脚本,以便远程安装操作系统、应用程序和配置文件。

诊断和维护工具: iPXE还包括一些诊断和维护工具,可用于测试网络连接、恢复系统等。

总之,iPXE是一个强大的网络引导工具,可以帮助管理员轻松地管理计算机的启动过程,特别是在大规模部署和云计算环境中。它提供了高度灵活性,可以根据需要自定义引导流程,同时降低了对本地存储设备的依赖。

iVentoy

开头已经讲过了,iVentoy是一个使用极其方便的PXE服务器,特点如下:

安装

iVentoy支持Windows和Linux,我这边以Linux为例,具体环境如下

NAME="openSUSE Tumbleweed"
# VERSION="20230910"
ID="opensuse-tumbleweed"
ID_LIKE="opensuse suse"
VERSION_ID="20230910"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:tumbleweed:20230910"
BUG_REPORT_URL="https://bugzilla.opensuse.org"
SUPPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Tumbleweed"
LOGO="distributor-logo-Tumbleweed"

下载

官网推荐使用123网盘和百毒云盘下载,不过我还是习惯使用GitHub

Releases · ventoy/PXE
The open source part of iVentoy. Contribute to ventoy/PXE development by creating an account on GitHub.
wget https://github.com/ventoy/PXE/releases/download/v1.0.19/iventoy-1.0.19-linux-free.tar.gz

解压

tar -zxvf iventoy-1.0.19-linux-free.tar.gz 

运行

Linux运行特别简单,进入解压目录,运行

sudo bash iventoy.sh  start 

按照回显,打开 http://x.x.x.x:26000 进入控制台

配置

添加镜像

我们如果想要从控制台启动服务器,就必须为其添加ISO镜像,方法非常简单,直接把你钟意的镜像放在iso目录下即可
如果本机上存在ISO的话我们也不必去copy,创建软链接即可

ln -s /opt/vmiso /opt/iVentoy/iventoy-1.0.19/iso

如此一来我们就把/opt/vmiso目录下的文件给链接到了iso目录下,让我们再检查一下:

➜  pwd
/opt/iVentoy/iventoy-1.0.19/iso
➜  ll
total 4.0K
lrwxrwxrwx 1 root root 10 Sep 22 22:37 vmiso -> /opt/vmiso
➜  

配置启动参数

点击控制台左侧的参数配置一项,接着目光聚集到启动参数设置一栏,设置项如下:

这里我们主要看DHCP服务器模式一项(可能有同学就要问了:PXE服务器关DHCP什么事情),对此请移步官网,有详细解读

因在我的环境当中,DHCP Server和iVentoy在是同一个Server,为了不冲突,我使用了ExternalNet模式,对此官网也有明确的说明如下

即使iVentoy和第三方DHCP Server位于同一个VLAN内,也可以使用ExternalNet模式,只要能满足你的要求。
而且这种使用方式还有一个好处,就是在ExternalNet模式下iVentoy不再启动内部的DHCP Server,这样iVentoy和第三方DHCP Server可以运行在同一个系统内。而External模式则不行,因为External模式下iVentoy还是会启动内部的DHCP Server,这样两者运行在同一个系统内时会有端口号冲突。

官网对于dhcpd的配置没有写全面,我们需要加上以下可选项;添加完成后重启DHCP Server

      option space pxelinux;
      option pxelinux.magic code 208 = string;
      option pxelinux.configfile code 209 = text;
      option pxelinux.pathprefix code 210 = text;
      option pxelinux.reboottime code 211 = unsigned integer 32;
      option architecture-type code 93 = unsigned integer 16;

启动

确认配置没有问题,通过网页控制台启动iVentoy

测试

这里使用VirtualBOX开虚拟机进行测试

启动方式为Legacy BIOS

桥接网卡至Host

使用netboot.xyz.iso引导并使用iPXE Shell

virtualbox 虚拟机配置如下

  1. 正常引导netboot.xyz.iso

  2. 选择Tools选项下的iPXE shell进入iPXE shell

  3. 不变定律,忘记了命令就键入help,最后输入autoboot使其自动配置启动

  4. 成功启动至iVentoy菜单页,并且iVentoy控制台也可看到此客户端

  5. 进入镜像目录,随便选择一个镜像启动即可,这里我们选择We_PE

  6. 成功进入We_PE

延申

使用systemd管理iVentoy

这里我们可以选择使用systemd来管理iVentoy,service内容如下(WorkingDirectory&ExecStart&ExecStop 路径根据自身情况修改)

# /etc/systemd/system/iventoy.service
[Unit]
Description = iVentoy iPXE Server
Requires = network-online.target
After    = network-online.target
Wants    = network-online.target

[Service]
Type = forking
User = root
Group = root
WorkingDirectory = /opt/iVentoy/iventoy-1.0.19
ExecStart = /opt/iVentoy/iventoy-1.0.19/iventoy.sh -R start
ExecStop =  /opt/iVentoy/iventoy-1.0.19/iventoy.sh stop

[Install]
WantedBy = multi-user.target

参考

iVentoy
iVentoy is a new netboot solution.

标签

xzllll

三分钟热度三分钟收获