Ventoy插件系统提供了一个灵活的框架,可以在不修改其核心代码的情况下扩展和自定义Ventoy的功能。本文档将解释插件系统的架构、组件和用法。
有关Plugson Web界面具体信息,请参阅Plugson Web界面。有关详细的插件配置选项,请参阅插件配置。
插件系统允许用户修改Ventoy行为的各个方面,从启动菜单的外观到自动化安装过程。插件通过一个中央JSON文件(ventoy.json)进行配置,该文件可以手动编辑,也可以通过更用户友好的VentoyPlugson Web界面进行编辑。
来源:Plugson/src/Web/ventoy_http.c Plugson/www/index.html
上图说明了插件系统组件如何交互
ventoy.json配置文件来源:Plugson/src/Web/ventoy_http.h32-42
插件可以根据启动固件类型进行不同的配置。每种插件类型都可以为不同的固件类型(通用、legacy BIOS、UEFI等)设置特定选项,从而根据启动环境精确自定义行为。
Ventoy支持13种插件类型,每种类型在Plugson/src/Web/ventoy_http.h44-61中定义的plugin_type枚举中。
| 插件类型 | 目的 | 配置示例 |
|---|---|---|
| 控制 | Ventoy行为的全局设置 | 菜单超时、搜索路径、键盘布局 |
| 主题 | 启动菜单外观自定义 | 背景图片、颜色、字体 |
| 菜单别名 | 菜单项的自定义名称 | 重命名复杂的ISO文件名 |
| 菜单提示 | 菜单项的工具提示 | 为操作系统镜像添加描述 |
| Menu 类 | 菜单项的分类 | 按类型分组操作系统 |
| 自动安装 | 操作系统安装的自动化 | 提供安装应答文件 |
| 持久化 | 实时系统的持久化存储 | 保存Linux实时环境的更改 |
| 注入 | 启动期间文件注入 | 添加驱动程序或配置文件 |
| Conf Replace | 配置文件替换 | 替换启动配置文件 |
| 密码 | 密码保护 | 保护菜单项或菜单 |
| 镜像列表 | 镜像显示自定义 | 过滤或排序ISO文件 |
| Auto Memdisk | Memdisk处理 | 为特定文件使用Memdisk |
| DUD | 驱动更新磁盘支持 | 为Linux添加驱动程序更新 |
来源:Plugson/src/Web/ventoy_http.h67-73 Plugson/www/index.html101-174
Control插件配置Ventoy的全局行为设置。它由data_control结构定义,位于Plugson/src/Web/ventoy_http.c549-565。
关键配置选项包括
VTOY_MENU_TIMEOUT: 设置启动菜单超时秒数VTOY_DEFAULT_SEARCH_ROOT: 指定搜索ISO文件的子目录VTOY_DEFAULT_KBD_LAYOUT: 设置键盘布局VTOY_MENU_LANGUAGE: 设置菜单语言VTOY_WIN11_BYPASS_CHECK: 启用/禁用Windows 11硬件检查绕过来源:Plugson/www/plugson_control.html Plugson/src/Web/ventoy_http.c567-601
Theme插件自定义启动菜单的外观。它由data_theme结构定义。
关键配置选项包括
file: 主题文件路径gfxmode: 图形模式(分辨率)display_mode: 背景图片的显示方式serial_param: 串口控制台的参数来源:Plugson/www/plugson_theme.html
Password插件为菜单项添加密码保护,由data_password结构定义。
关键配置选项包括
file: 密码文件路径type: 密码类型(明文、MD5、加盐MD5)bootpwd: 启动项的密码来源:Plugson/www/plugson_password.html
VentoyPlugson是用于管理Ventoy插件的基于Web的界面。它被实现为一个HTTP服务器,提供Web UI并公开用于读写插件配置的AJAX API。
该界面包括
来源:Plugson/www/index.html Plugson/www/static/js/vtoy.js
插件配置存储在名为ventoy.json的JSON文件中。文件结构遵循以下模式:
其中
plugin_type是13种插件类型之一(例如,control,theme)firmware是固件类型之一(legacy,uefi,ia32,aa64,mips)来源:Plugson/src/Web/ventoy_http.c95-97
插件系统的实现包含几个关键组件
数据结构:每种插件类型都有一个相应的数据结构来存储其配置(例如,data_control,data_theme等),在Plugson/src/Web/ventoy_http.h中定义。
HTTP服务器:VentoyPlugson应用程序包含一个基于civetweb库的嵌入式HTTP服务器,该服务器服务Web UI并处理API请求。
AJAX API:HTTP服务器公开了一个AJAX API,用于读写插件配置。此API在Plugson/src/Web/ventoy_http.c中定义,并由Web UI中的JavaScript代码使用。
JSON解析/生成器:插件系统包含用于解析和生成JSON数据的功能,这些数据用于读写ventoy.json文件。
启动集成:启动过程通过读取ventoy.json文件并应用配置的设置来与插件系统集成。
来源:Plugson/src/Web/ventoy_http.c Plugson/src/Core/ventoy_util.h
插件通过以下步骤与Ventoy启动过程集成
ventoy.json文件这种集成允许插件影响启动过程的各个方面,从菜单外观到操作系统行为。
来源:Ventoy系统架构图提供
这是一个包含多个插件配置的ventoy.json文件的示例
此示例展示了
Ventoy插件系统提供了一种强大而灵活的方式来扩展和自定义Ventoy的功能。凭借13种不同的插件类型和对多种固件配置的支持,用户可以在不修改核心代码的情况下根据自己的特定需求定制Ventoy。
有关使用Plugson Web界面的更多详细信息,请参阅Plugson Web界面。有关每种插件类型的全面配置选项,请参阅插件配置。