mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/Mapleawaa/PVE-Tools-9.git
synced 2026-09-20 08:03:35 +08:00
Merge pull request #99 from PVE-Tools/beta-v11.1.0
feat: v11.1.0 beta — 获取帮助板块、IOMMU ACS 拆分增强、NVMe 温度检测修复
This commit is contained in:
@@ -12,7 +12,7 @@ PVE Tools Pro 是一个面向 Proxmox VE 9.x 的交互式 Bash 运维工具集
|
|||||||
|
|
||||||
- **入口层**: `PVE-Tools.sh`(约 330 行)-- 本地开发时按固定顺序 source lib/ 与 src/modules/(各模块 init.sh 显式优先);远程 curl 运行时从 GitHub Releases(`releases/latest/download/PVE-Tools.sh`)下载构建产物执行,带重试/限速/校验/原子落盘守护。
|
- **入口层**: `PVE-Tools.sh`(约 330 行)-- 本地开发时按固定顺序 source lib/ 与 src/modules/(各模块 init.sh 显式优先);远程 curl 运行时从 GitHub Releases(`releases/latest/download/PVE-Tools.sh`)下载构建产物执行,带重试/限速/校验/原子落盘守护。
|
||||||
- **基础设施层**: `lib/` -- 全局变量(config.sh)、日志/UI/确认/备份/GRUB(core.sh)、菜单交互框架(menu.sh)、网络检测/镜像选择(network.sh)、运行时守卫与主循环(runtime.sh)。
|
- **基础设施层**: `lib/` -- 全局变量(config.sh)、日志/UI/确认/备份/GRUB(core.sh)、菜单交互框架(menu.sh)、网络检测/镜像选择(network.sh)、运行时守卫与主循环(runtime.sh)。
|
||||||
- **功能模块层**: `src/modules/` -- 10 个子目录对应主菜单 1-10 项,每个子目录内按功能拆分文件(init.sh 为菜单入口)。
|
- **功能模块层**: `src/modules/` -- 11 个子目录对应主菜单 1-11 项,每个子目录内按功能拆分文件(init.sh 为菜单入口)。
|
||||||
- **构建系统**: `build.sh` 按顺序拼接 lib/*.sh + src/modules/**/*.sh 为 `dist/PVE-Tools.sh`(gitignore,CI 构建);`dev.sh` 直接 source 全部源码供开发调试。
|
- **构建系统**: `build.sh` 按顺序拼接 lib/*.sh + src/modules/**/*.sh 为 `dist/PVE-Tools.sh`(gitignore,CI 构建);`dev.sh` 直接 source 全部源码供开发调试。
|
||||||
- **辅助工具集**: `Tools/` 集成来自 tteck 社区的 13 个独立维护脚本(不参与构建,供用户手动执行)。
|
- **辅助工具集**: `Tools/` 集成来自 tteck 社区的 13 个独立维护脚本(不参与构建,供用户手动执行)。
|
||||||
- **插件市场**: `Modules/` 提供第三方脚本与二进制资产;`Modules/VGPU/*.so` 是 vGPU Unlock 功能的下载资产,不可删改。
|
- **插件市场**: `Modules/` 提供第三方脚本与二进制资产;`Modules/VGPU/*.so` 是 vGPU Unlock 功能的下载资产,不可删改。
|
||||||
@@ -47,6 +47,7 @@ graph TD
|
|||||||
SRC --> M08["08-tools-about<br/>诊断工具与项目信息"]
|
SRC --> M08["08-tools-about<br/>诊断工具与项目信息"]
|
||||||
SRC --> M09["09-security<br/>安全中心"]
|
SRC --> M09["09-security<br/>安全中心"]
|
||||||
SRC --> M10["10-third-party<br/>第三方工具"]
|
SRC --> M10["10-third-party<br/>第三方工具"]
|
||||||
|
SRC --> M11["11-help<br/>获取帮助"]
|
||||||
|
|
||||||
GHA --> W1["workflows/<br/>release/beta/PR"]
|
GHA --> W1["workflows/<br/>release/beta/PR"]
|
||||||
|
|
||||||
@@ -64,7 +65,7 @@ graph TD
|
|||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| `/` (根) | Bash | 入口脚本:本地 source / 远程下载 Releases 单文件 | `PVE-Tools.sh` (~330行) | `README.md` |
|
| `/` (根) | Bash | 入口脚本:本地 source / 远程下载 Releases 单文件 | `PVE-Tools.sh` (~330行) | `README.md` |
|
||||||
| `lib/` | Bash | 基础设施层:全局变量、日志、UI、菜单框架、网络、运行时 | `config.sh`, `core.sh`, `menu.sh`, `network.sh`, `runtime.sh` | [lib/CLAUDE.md](./lib/CLAUDE.md) |
|
| `lib/` | Bash | 基础设施层:全局变量、日志、UI、菜单框架、网络、运行时 | `config.sh`, `core.sh`, `menu.sh`, `network.sh`, `runtime.sh` | [lib/CLAUDE.md](./lib/CLAUDE.md) |
|
||||||
| `src/modules/` | Bash | 功能模块层:10 个子模块,对应主菜单 1-10 | 各 `*/init.sh` | [src/CLAUDE.md](./src/CLAUDE.md) |
|
| `src/modules/` | Bash | 功能模块层:11 个子模块,对应主菜单 1-11 | 各 `*/init.sh` | [src/CLAUDE.md](./src/CLAUDE.md) |
|
||||||
| `Tools/` | Bash | 第三方系统维护脚本集(13个,不参与构建) | 各 `.sh` 文件 | [Tools/CLAUDE.md](./Tools/CLAUDE.md) |
|
| `Tools/` | Bash | 第三方系统维护脚本集(13个,不参与构建) | 各 `.sh` 文件 | [Tools/CLAUDE.md](./Tools/CLAUDE.md) |
|
||||||
| `Modules/` | Bash/二进制 | 插件市场与分发资产(VGPU .so 为下载资产) | `install-zsh.sh`, `VGPU/*.so` | [Modules/CLAUDE.md](./Modules/CLAUDE.md) |
|
| `Modules/` | Bash/二进制 | 插件市场与分发资产(VGPU .so 为下载资产) | `install-zsh.sh`, `VGPU/*.so` | [Modules/CLAUDE.md](./Modules/CLAUDE.md) |
|
||||||
| `Docs/` | Markdown | 补充文档与《重构计划》设计稿 | `future-guide.md`, `重构计划-PVE-Tools模块化拆分.md` | -- |
|
| `Docs/` | Markdown | 补充文档与《重构计划》设计稿 | `future-guide.md`, `重构计划-PVE-Tools模块化拆分.md` | -- |
|
||||||
@@ -214,6 +215,7 @@ foo_menu_dispatch() { # case 处理选项;未识别 return 1;末尾必
|
|||||||
|
|
||||||
| 日期 | 变更 | 来源 |
|
| 日期 | 变更 | 来源 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| 2026-08-19 | 硬件直通一键配置 (IOMMU) 新增可选增强参数:iommu=pt 与 pcie_acs_override=downstream,multifunction(强制拆分 IOMMU 组,解决 GPU 与系统盘同组时 vfio-pci 误接管系统盘问题);关闭流程同步移除 | GitHub Issue |
|
||||||
| 2026-07-26 | 交互层框架化:新增 lib/menu.sh,全部菜单迁移 run_menu;确认体系两档成文;GPU 直通 marker 统一与互斥检测;GRUB 参数函数数组化;文档按现实重写(修正入口行数/远程模式/shc 等失真);仓库卫生清理;CI 护栏补全 | 交互层收口整理 |
|
| 2026-07-26 | 交互层框架化:新增 lib/menu.sh,全部菜单迁移 run_menu;确认体系两档成文;GPU 直通 marker 统一与互斥检测;GRUB 参数函数数组化;文档按现实重写(修正入口行数/远程模式/shc 等失真);仓库卫生清理;CI 护栏补全 | 交互层收口整理 |
|
||||||
| 2026-07-08 | 项目模块化重构完成:单文件拆分为 lib/ + src/modules/(10 子模块)。新增 build.sh/dev.sh。Web/ 目录移除。 | claude-init 架构师 |
|
| 2026-07-08 | 项目模块化重构完成:单文件拆分为 lib/ + src/modules/(10 子模块)。新增 build.sh/dev.sh。Web/ 目录移除。 | claude-init 架构师 |
|
||||||
| 2026-04-28 | 初始化 CLAUDE.md 体系 | claude-init 架构师 |
|
| 2026-04-28 | 初始化 CLAUDE.md 体系 | claude-init 架构师 |
|
||||||
|
|||||||
47
Docs/CHANGELOG.md
Normal file
47
Docs/CHANGELOG.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# 更新日志 (Changelog)
|
||||||
|
|
||||||
|
更新日志明细,面向用户。线上更新检测数据源见根目录 `UPDATE` 文件(本文件为详细版)。
|
||||||
|
|
||||||
|
## v11.1.0 (2026-08-19)
|
||||||
|
|
||||||
|
### 新增:获取帮助板块(主菜单 11)
|
||||||
|
|
||||||
|
新增独立板块,二级菜单三个入口:
|
||||||
|
|
||||||
|
1. **加 Q 群水群** — QQ 群 `1031976463`,PVE 玩法与踩坑经验交流
|
||||||
|
2. **加聊天社区咨询** — Telegram 群 `https://t.me/pvetools233`,与 QQ 水群相互独立
|
||||||
|
3. **加作者付费咨询** — 一对一技术支持 / 紧急情况 / 深度排查 / 合作洽谈
|
||||||
|
|
||||||
|
付费咨询说明:项目免费开源,但作者**一般不提供免费的技术支持和免费解答方案**;紧急情况或谈合作欢迎直接联系作者(QQ `1520942621` / 微信 `kilomaple2024` / Telegram `https://t.me/pvetools_bot` / 邮件 `contact@u3u.icu`)。觉得工具好用想赞助作者,可前往官网支持页 `https://pve.u3u.icu/support` 或直接联系作者转账。
|
||||||
|
|
||||||
|
### 新增:硬件直通一键配置 (IOMMU) 可选增强参数
|
||||||
|
|
||||||
|
在「4. 硬件直通与显卡 → 6. 硬件直通一键配置 (IOMMU)」开启流程中,新增可选确认步骤,可选择写入直通增强参数:
|
||||||
|
|
||||||
|
- `iommu=pt` — 开启 IOMMU 直通模式,减少 DMA 重映射开销
|
||||||
|
- `pcie_acs_override=downstream,multifunction` — 强制拆分 IOMMU 组
|
||||||
|
|
||||||
|
适用场景:部分主板在 PCIe 拆分后会将 GPU 与系统盘/NVMe 分配到**同一个 IOMMU 组**,GPU 直通时 vfio-pci 会按组接管所有设备(包括系统盘),导致开机即崩溃。本选项可避免此问题。关闭流程已同步移除这两个参数。
|
||||||
|
|
||||||
|
### 修复:温度监控误报 nvme0
|
||||||
|
|
||||||
|
修复了无 NVMe 硬盘时温度监控误报「检测到 nvme0 / 已添加 1 块」的问题。根因是 bash glob 在无匹配时返回字面模式字符串 `/dev/nvme[0-9]`,被误当作真实设备;现在循环内增加真实块设备校验,无设备时正确显示「已添加 0 块」。
|
||||||
|
|
||||||
|
### 其他
|
||||||
|
|
||||||
|
- 修正 MAC 绑定接口名校验的错误提示文案(「不允许特殊字符」)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v11.0.0 (2026-07-26)
|
||||||
|
|
||||||
|
- 交互层框架化:新增 `lib/menu.sh`,全部菜单迁移 `run_menu`,统一 EOF/Ctrl+C 守卫与 pause 节奏
|
||||||
|
- 确认体系两档成文:轻档 `confirm_action` / 重档 `confirm_high_risk_action`(指定确认词)
|
||||||
|
- GPU 直通加固:marker 统一写入、多方案互斥检测、IOMMU 开/关强制确认;去掉写死 PCI ID 与默认核显黑名单
|
||||||
|
- GRUB 参数数组化精确增删,新增 `grub_has_param`;默认内核优先 `proxmox-boot-tool kernel pin`
|
||||||
|
- 远程安装与自更新改走 GitHub Releases 完整单文件;修正 vGPU so 真实路径
|
||||||
|
- CI 护栏补全:源码 shellcheck、构建函数一致性、UPDATE 新鲜度、dist 安全扫描、发版前校验与 SHA256SUMS
|
||||||
|
- 文档与仓库卫生:按现实重写 CLAUDE/AGENTS;修正 README-JP 文件名;清理历史截图与无关大文件
|
||||||
|
- Build 代号更新为 Liino
|
||||||
|
|
||||||
|
更早期版本历史请见根目录 `UPDATE` 文件与 GitHub Releases。
|
||||||
6
UPDATE
6
UPDATE
@@ -1,3 +1,9 @@
|
|||||||
|
v11.1.0
|
||||||
|
- 新增「获取帮助」板块(主菜单 11):QQ 水群 / Telegram 聊天社区 / 作者付费咨询与赞助入口
|
||||||
|
- 硬件直通一键配置 (IOMMU) 新增可选增强参数:iommu=pt 与 pcie_acs_override=downstream,multifunction(强制拆分 IOMMU 组,解决 GPU 与系统盘同组时 vfio-pci 误接管系统盘问题)
|
||||||
|
- 修复温度监控在无 NVMe 硬盘时误报 nvme0 的问题(glob 无匹配陷阱)
|
||||||
|
- 修正 MAC 绑定接口名校验的错误提示文案
|
||||||
|
|
||||||
v11.0.0
|
v11.0.0
|
||||||
- 交互层框架化:新增 lib/menu.sh,全部菜单迁移 run_menu,统一 EOF/Ctrl+C 守卫与 pause 节奏
|
- 交互层框架化:新增 lib/menu.sh,全部菜单迁移 run_menu,统一 EOF/Ctrl+C 守卫与 pause 节奏
|
||||||
- 确认体系两档成文:轻档 confirm_action / 重档 confirm_high_risk_action(指定确认词)
|
- 确认体系两档成文:轻档 confirm_action / 重档 confirm_high_risk_action(指定确认词)
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
| `check_debug_mode()` | 解析 `--i-know-what-i-do` 和 `--debug` 参数 |
|
| `check_debug_mode()` | 解析 `--i-know-what-i-do` 和 `--debug` 参数 |
|
||||||
| `check_pve_version()` | PVE 版本检测(非 PVE9 环境需确认风险,拦截高危自动化) |
|
| `check_pve_version()` | PVE 版本检测(非 PVE9 环境需确认风险,拦截高危自动化) |
|
||||||
| `block_non_pve9_destructive()` | 非 PVE9 环境拦截换源/升级等破坏性操作 |
|
| `block_non_pve9_destructive()` | 非 PVE9 环境拦截换源/升级等破坏性操作 |
|
||||||
| `show_menu()` | 主菜单(10 个功能入口 + 一言 Tips) |
|
| `show_menu()` | 主菜单(11 个功能入口 + 一言 Tips) |
|
||||||
| `main()` | **脚本主入口**:trap INT(Ctrl+C 中断当前输入回上级而非杀进程)-> 权限/许可/调试/PVE 版本/网络检查 -> 更新检查 -> 主循环(read 带 EOF 守卫优雅退出;子菜单返回不重复 pause) |
|
| `main()` | **脚本主入口**:trap INT(Ctrl+C 中断当前输入回上级而非杀进程)-> 权限/许可/调试/PVE 版本/网络检查 -> 更新检查 -> 主循环(read 带 EOF 守卫优雅退出;子菜单返回不重复 pause) |
|
||||||
|
|
||||||
## 关键依赖与配置
|
## 关键依赖与配置
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Copyright (C) 2026 Ciriu Networks
|
# Copyright (C) 2026 Ciriu Networks
|
||||||
|
|
||||||
# 版本信息
|
# 版本信息
|
||||||
CURRENT_VERSION="11.0.0"
|
CURRENT_VERSION="11.1.0"
|
||||||
BUILD_NICKNAME="Liino"
|
BUILD_NICKNAME="Liino"
|
||||||
VERSION_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/VERSION"
|
VERSION_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/VERSION"
|
||||||
UPDATE_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/UPDATE"
|
UPDATE_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/UPDATE"
|
||||||
|
|||||||
@@ -137,15 +137,14 @@ show_menu() {
|
|||||||
show_menu_option "8" "诊断工具与项目信息 ${CYAN}( 系统信息 / 救砖 / 脚本管理 )${NC}"
|
show_menu_option "8" "诊断工具与项目信息 ${CYAN}( 系统信息 / 救砖 / 脚本管理 )${NC}"
|
||||||
show_menu_option "9" "安全中心 ${CYAN}( 风险检查 / SSH加固 / CVE修补 )${NC}"
|
show_menu_option "9" "安全中心 ${CYAN}( 风险检查 / SSH加固 / CVE修补 )${NC}"
|
||||||
show_menu_option "10" "第三方工具 ${CYAN}( CoolerControl / IT87驱动 / 社区脚本 )${NC}"
|
show_menu_option "10" "第三方工具 ${CYAN}( CoolerControl / IT87驱动 / 社区脚本 )${NC}"
|
||||||
|
show_menu_option "11" "获取帮助 ${CYAN}( 联系作者 / 付费咨询 / 社区 )${NC}"
|
||||||
echo "$UI_DIVIDER"
|
echo "$UI_DIVIDER"
|
||||||
show_menu_option "0" "${RED}退出脚本${NC}"
|
show_menu_option "0" "${RED}退出脚本${NC}"
|
||||||
show_menu_footer
|
show_menu_footer
|
||||||
echo
|
echo
|
||||||
echo -e " ${YELLOW}Tips: ${SESSION_TIP:-一言获取失败,本次会话不再重试。}${NC}"
|
echo -e " ${YELLOW}Tips: ${SESSION_TIP:-一言获取失败,本次会话不再重试。}${NC}"
|
||||||
echo -e "本项目正在收集用户意见,如您愿意,请前往填写问卷,这能帮到整个项目!"
|
|
||||||
echo -e "-> https://wj.qq.com/s2/27286538/9d9d/"
|
|
||||||
echo
|
echo
|
||||||
echo -ne " ${PRIMARY}请输入您的选择 [0-10]: ${NC}"
|
echo -ne " ${PRIMARY}请输入您的选择 [0-11]: ${NC}"
|
||||||
}
|
}
|
||||||
# 应急救砖工具箱菜单
|
# 应急救砖工具箱菜单
|
||||||
main() {
|
main() {
|
||||||
@@ -212,6 +211,9 @@ main() {
|
|||||||
10)
|
10)
|
||||||
third_party_tools_menu
|
third_party_tools_menu
|
||||||
;;
|
;;
|
||||||
|
11)
|
||||||
|
help_center_menu
|
||||||
|
;;
|
||||||
0)
|
0)
|
||||||
echo "感谢使用,谢谢喵"
|
echo "感谢使用,谢谢喵"
|
||||||
echo "再见!"
|
echo "再见!"
|
||||||
@@ -219,7 +221,7 @@ main() {
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
log_error "哎呀,这个选项不存在呢"
|
log_error "哎呀,这个选项不存在呢"
|
||||||
log_warn "请输入 0-10 之间的数字"
|
log_warn "请输入 0-11 之间的数字"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
## 模块职责
|
## 模块职责
|
||||||
|
|
||||||
承载 PVE Tools Pro 全部业务逻辑,按主菜单编号拆分为 10 个子模块。每个子模块的 `init.sh` 为菜单入口函数,其余文件按功能领域进一步拆分。所有脚本由 `PVE-Tools.sh` 或 `dev.sh` 在 lib/ 加载完成后统一 source。
|
承载 PVE Tools Pro 全部业务逻辑,按主菜单编号拆分为 11 个子模块。每个子模块的 `init.sh` 为菜单入口函数,其余文件按功能领域进一步拆分。所有脚本由 `PVE-Tools.sh` 或 `dev.sh` 在 lib/ 加载完成后统一 source。
|
||||||
|
|
||||||
## 入口与启动
|
## 入口与启动
|
||||||
|
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
| 8 | `08-tools-about/` | 诊断工具与项目信息 | 3 | 低 |
|
| 8 | `08-tools-about/` | 诊断工具与项目信息 | 3 | 低 |
|
||||||
| 9 | `09-security/` | 安全中心 | 4 | 中等 |
|
| 9 | `09-security/` | 安全中心 | 4 | 中等 |
|
||||||
| 10 | `10-third-party/` | 第三方工具 | 5 | 低 |
|
| 10 | `10-third-party/` | 第三方工具 | 5 | 低 |
|
||||||
|
| 11 | `11-help/` | 获取帮助 | 1 | 低 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -214,6 +215,19 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 11-help -- 获取帮助
|
||||||
|
|
||||||
|
**菜单入口**: `help_center_menu()` 定义于 `init.sh`
|
||||||
|
|
||||||
|
| 文件 | 核心函数 | 功能 |
|
||||||
|
|---|---|---|
|
||||||
|
| `init.sh` | `help_center_menu()` | 二级菜单 |
|
||||||
|
| `info.sh` | `help_show_qq_group()`, `help_show_telegram_group()`, `help_show_paid_consult()` | 联系/付费咨询/社区信息展示 |
|
||||||
|
|
||||||
|
**依赖**: 仅依赖 `lib/`(`show_menu_header` / `UI_DIVIDER` 展示组件)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 关键依赖与配置
|
## 关键依赖与配置
|
||||||
|
|
||||||
- **lib/ 先决条件**: 所有模块均依赖 `lib/config.sh`(全局变量)和 `lib/core.sh`(日志/UI/备份函数)
|
- **lib/ 先决条件**: 所有模块均依赖 `lib/config.sh`(全局变量)和 `lib/core.sh`(日志/UI/备份函数)
|
||||||
@@ -221,7 +235,7 @@
|
|||||||
- `04-gpu-passthrough`: nvidia.sh 的辅助函数被 amd-*.sh 复用;iommu.sh 被多个子模块复用
|
- `04-gpu-passthrough`: nvidia.sh 的辅助函数被 amd-*.sh 复用;iommu.sh 被多个子模块复用
|
||||||
- `05-vm-container`: storage-helper.sh 被 7 个同模块文件复用
|
- `05-vm-container`: storage-helper.sh 被 7 个同模块文件复用
|
||||||
- `06-networking`: interface.sh 被 6 个同模块文件复用
|
- `06-networking`: interface.sh 被 6 个同模块文件复用
|
||||||
- **无跨模块依赖**: 模块 01/02/03/07/08/09/10 仅依赖 lib/,不存在模块间引用
|
- **无跨模块依赖**: 模块 01/02/03/07/08/09/10/11 仅依赖 lib/,不存在模块间引用
|
||||||
|
|
||||||
## 测试与质量
|
## 测试与质量
|
||||||
|
|
||||||
@@ -258,6 +272,7 @@ src/modules/
|
|||||||
08-tools-about/ (3 文件) -- 诊断工具与项目信息
|
08-tools-about/ (3 文件) -- 诊断工具与项目信息
|
||||||
09-security/ (3 文件) -- 安全中心
|
09-security/ (3 文件) -- 安全中心
|
||||||
10-third-party/ (4 文件) -- 第三方工具
|
10-third-party/ (4 文件) -- 第三方工具
|
||||||
|
11-help/ (2 文件) -- 获取帮助
|
||||||
```
|
```
|
||||||
|
|
||||||
## 变更记录 (Changelog)
|
## 变更记录 (Changelog)
|
||||||
|
|||||||
@@ -327,6 +327,9 @@ EOF
|
|||||||
log_info "检测系统中的 NVME 硬盘"
|
log_info "检测系统中的 NVME 硬盘"
|
||||||
nvi=0
|
nvi=0
|
||||||
for nvme in /dev/nvme[0-9]; do
|
for nvme in /dev/nvme[0-9]; do
|
||||||
|
# 控制器节点为字符设备(如 /dev/nvme0,major 243),命名空间才是块设备(/dev/nvme0n1,不匹配本模式);
|
||||||
|
# 字符设备校验同时兼容 glob 无匹配场景(字面模式字符串非字符设备,自然跳过)
|
||||||
|
[ -c "$nvme" ] || continue
|
||||||
chmod +s /usr/sbin/smartctl 2>/dev/null
|
chmod +s /usr/sbin/smartctl 2>/dev/null
|
||||||
|
|
||||||
cat >> $tmpf << EOF
|
cat >> $tmpf << EOF
|
||||||
|
|||||||
@@ -110,6 +110,34 @@ kvmgt"
|
|||||||
log_info "/etc/modules 中已存在 vfio 模块,跳过。"
|
log_info "/etc/modules 中已存在 vfio 模块,跳过。"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 可选增强:部分主板的 PCIe 拆分会将 GPU 与系统盘/NVMe 分到同一 IOMMU 组,
|
||||||
|
# GPU 直通时 vfio-pci 会误接管系统盘控制器导致开机崩溃;
|
||||||
|
# 常规单显卡直通不受影响,因此确认后由用户决定是否开启。
|
||||||
|
echo -e "${YELLOW}是否同时启用直通增强参数 iommu=pt 与 pcie_acs_override=downstream,multifunction?${NC}"
|
||||||
|
echo -e "${RED}仅在 GPU 与系统盘/NVMe 同属一个 IOMMU 组、GPU 直通时 vfio-pci 误接管系统盘导致开机崩溃的情况下建议开启;会强制拆分 IOMMU 组并开启直通模式,参数配置错误可能导致开机失败。${NC}"
|
||||||
|
if confirm_high_risk_action \
|
||||||
|
"写入直通增强参数 iommu=pt 与 pcie_acs_override=downstream,multifunction" \
|
||||||
|
"会修改 GRUB 内核参数并强制拆分 IOMMU 组、开启直通模式,需重启生效" \
|
||||||
|
"参数配置错误可能导致宿主机开机失败或 IOMMU 组隔离异常;非必要场景不建议开启" \
|
||||||
|
"脚本会自动备份 /etc/default/grub,可通过 GRUB 备份恢复功能回滚" \
|
||||||
|
"IOMMU-ENHANCE"; then
|
||||||
|
if grub_add_param "iommu=pt"; then
|
||||||
|
if ! grub_add_param "pcie_acs_override=downstream,multifunction"; then
|
||||||
|
# 回滚本次已成功写入的参数,避免留下半套配置
|
||||||
|
grub_remove_param "iommu=pt"
|
||||||
|
log_error "直通增强参数写入失败,已回滚本次写入,未应用更改"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
# 即使基础 IOMMU 参数已存在(grub_changed=0),本次新写入也必须触发 update-grub
|
||||||
|
grub_changed=1
|
||||||
|
else
|
||||||
|
log_error "直通增强参数 iommu=pt 写入失败,未应用更改"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_info "已跳过直通增强参数。若后续遇到 IOMMU 分组问题,可重新运行本菜单开启。"
|
||||||
|
fi
|
||||||
|
|
||||||
# 屏蔽核显/声卡驱动仅适用于"把核显直通给虚拟机"的场景;
|
# 屏蔽核显/声卡驱动仅适用于"把核显直通给虚拟机"的场景;
|
||||||
# 宿主机还需要本地显示输出时开启会导致控制台黑屏,因此默认不开启。
|
# 宿主机还需要本地显示输出时开启会导致控制台黑屏,因此默认不开启。
|
||||||
# 设备级 vfio-pci ids 绑定由各显卡专用直通菜单按实际硬件写入,此处不再写死。
|
# 设备级 vfio-pci ids 绑定由各显卡专用直通菜单按实际硬件写入,此处不再写死。
|
||||||
@@ -160,7 +188,11 @@ disable_pass() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
grub_remove_param "$iommu"
|
# 任一移除失败即中止,避免静默留下残留参数(未配置过的参数移除无副作用)
|
||||||
|
if ! grub_remove_param "$iommu" || ! grub_remove_param "iommu=pt" || ! grub_remove_param "pcie_acs_override"; then
|
||||||
|
log_error "GRUB 参数移除失败,请检查 /etc/default/grub 后重试"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
backup_file "/etc/modules"
|
backup_file "/etc/modules"
|
||||||
# 先移除本工具的 marker 配置块,再精确清理历史版本写入的裸模块行(含 kvmgt,不误删其它行)
|
# 先移除本工具的 marker 配置块,再精确清理历史版本写入的裸模块行(含 kvmgt,不误删其它行)
|
||||||
remove_block "/etc/modules" "IOMMU_BASE_MODULES"
|
remove_block "/etc/modules" "IOMMU_BASE_MODULES"
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ host_network_create_mac_binding() {
|
|||||||
read -r -p "请输入固定接口名称(如 lan0、pve-eth0): " fixed_name
|
read -r -p "请输入固定接口名称(如 lan0、pve-eth0): " fixed_name
|
||||||
[[ -n "$fixed_name" ]] || { display_error "接口名称不能为空"; return 1; }
|
[[ -n "$fixed_name" ]] || { display_error "接口名称不能为空"; return 1; }
|
||||||
host_network_validate_systemd_link_name "$fixed_name" || {
|
host_network_validate_systemd_link_name "$fixed_name" || {
|
||||||
display_error "接口名称不合法: $fixed_name" "名称需为 1-15 位,只允许字母、数字、_、.、-,且不能是纯数字或保留名。"
|
display_error "接口名称不合法: $fixed_name" "名称需为 1-15 位,只允许字母、数字、下划线、点、连字符。且不能是纯数字或保留名。"
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
48
src/modules/11-help/info.sh
Normal file
48
src/modules/11-help/info.sh
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
# Copyright (C) 2026 Ciriu Networks
|
||||||
|
|
||||||
|
# 加 Q 群水群(闲聊交流为主,技术问题不保证有解答)
|
||||||
|
help_show_qq_group() {
|
||||||
|
clear
|
||||||
|
show_menu_header "加 Q 群水群"
|
||||||
|
|
||||||
|
echo " 欢迎加入 PVE-Tools QQ 水群,与大家交流 PVE 玩法与踩坑经验。"
|
||||||
|
echo
|
||||||
|
echo " QQ 群号: ${CYAN}1031976463${NC}"
|
||||||
|
echo
|
||||||
|
echo -e "${YELLOW}提示:${NC} 本群以闲聊交流为主,技术问题不保证有解答;需要技术支持请前往付费咨询。"
|
||||||
|
echo "${UI_DIVIDER}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 加聊天社区咨询(Telegram 群,与 QQ 水群相互独立)
|
||||||
|
help_show_telegram_group() {
|
||||||
|
clear
|
||||||
|
show_menu_header "加聊天社区咨询"
|
||||||
|
|
||||||
|
echo " 欢迎加入 PVE-Tools Telegram 聊天社区,与全球用户交流使用心得。"
|
||||||
|
echo
|
||||||
|
echo " Telegram 群: ${CYAN}https://t.me/pvetools233${NC}"
|
||||||
|
echo
|
||||||
|
echo -e "${YELLOW}提示:${NC} 本社区与 QQ 水群相互独立;技术问题不保证有解答,需要技术支持请前往付费咨询。"
|
||||||
|
echo "${UI_DIVIDER}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 加作者付费咨询(不提供免费技术支持,赞助入口一并展示)
|
||||||
|
help_show_paid_consult() {
|
||||||
|
clear
|
||||||
|
show_menu_header "加作者付费咨询"
|
||||||
|
|
||||||
|
echo " 写脚本、维护项目需要时间和精力,这也是作者的饭碗。本工具免费开源,"
|
||||||
|
echo " 但一般不提供免费的技术支持和免费解答方案,感谢理解~"
|
||||||
|
echo
|
||||||
|
echo -e " ${RED}紧急情况 / 深度排查 / 谈合作:${NC}"
|
||||||
|
echo " QQ: 1520942621"
|
||||||
|
echo " 微信: kilomaple2024"
|
||||||
|
echo " Telegram: https://t.me/pvetools_bot"
|
||||||
|
echo " 邮件: contact@u3u.icu"
|
||||||
|
echo
|
||||||
|
echo " 想赞助作者:去官网支持一下,或直接加联系方式给作者转钱,感谢投喂!"
|
||||||
|
echo " 官网支持页: ${CYAN}https://pve.u3u.icu/support${NC}"
|
||||||
|
echo "${UI_DIVIDER}"
|
||||||
|
}
|
||||||
24
src/modules/11-help/init.sh
Normal file
24
src/modules/11-help/init.sh
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
# Copyright (C) 2026 Ciriu Networks
|
||||||
|
|
||||||
|
# 获取帮助菜单
|
||||||
|
help_center_menu() {
|
||||||
|
run_menu "获取帮助" help_center_menu_render help_center_menu_dispatch "0-3"
|
||||||
|
}
|
||||||
|
|
||||||
|
help_center_menu_render() {
|
||||||
|
show_menu_option "1" "加 Q 群水群 ${CYAN}(闲聊交流)${NC}"
|
||||||
|
show_menu_option "2" "加聊天社区咨询 ${CYAN}(Telegram 群)${NC}"
|
||||||
|
show_menu_option "3" "加作者付费咨询 ${CYAN}(一对一技术支持)${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
help_center_menu_dispatch() {
|
||||||
|
case "$1" in
|
||||||
|
1) help_show_qq_group ;;
|
||||||
|
2) help_show_telegram_group ;;
|
||||||
|
3) help_show_paid_consult ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
return 0
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user