PiKVM 自定义命令按钮实战:KVMD 3.36 的 pseudo-GPIO CMD 驱动与 Web 菜单集成指南
文档教程【免费下载链接】pikvmOpen and inexpensive DIY IP-KVM based on Raspberry Pi项目地址https://gitcode.com/gh_mirrors/pi/pikvm点击查看免费下载KVMD 3.36 为 PiKVM 的 Web 界面菜单引入了期待已久的自定义命令按钮功能通过一个名为cmd的 pseudo-GPIO伪 GPIO驱动用户可以让 Web 菜单中的按钮直接执行 PiKVM OS 上的任意命令例如一键重启 PiKVM、动态切换 USB 功能等。本文将以该发布说明为起点结合仓库中的 GPIO 文档 完整讲解 CMD 驱动的配置方法、/etc/kvmd/override.yaml的三段式结构、root 权限执行方案以及升级到 KVMD 3.36 的完整步骤读完即可在自己的 PiKVM 上落地一个可运行的自定义命令按钮菜单。KVMD 3.36 发布说明菜单中的自定义命令按钮2021-10-24 的发布文章 记录了 KVMD 3.36 的两个主要变化新增自定义命令按钮可以在 PiKVM 的 Web 菜单中加入一个按钮点击后执行预先定义好的任意命令。这是社区呼声很高的功能。文章作者原话是我不确定它为什么必要但既然总被问到那就做吧——它的实际价值在于把运维中最常用的操作重启 PiKVM、切换 USB gadget 模式、触发 WoL 等一键化、图形化不再需要 SSH 进设备敲命令。改善 Firefox 下视频流质量滑块的交互表现属于配套的 Web UI 体验修复。其中自定义命令按钮依赖一个pseudo-GPIO CMD 驱动才能工作官方帮助文档详见仓库中的 GPIO 指南 的 CMD 一节。所谓伪 GPIO是指 PiKVM 的 GPIO 抽象并不局限于树莓派物理引脚IPMI、Intel AMT、Wake-on-LAN、ezCoo KVM 切换器以及这里的主角cmd驱动都是通过模拟 GPIO API 来把非引脚资源接入统一配置体系的。前置概念PiKVM 的抽象 GPIO 与三段式配置要理解 CMD 驱动先要理解 PiKVM 的 GPIO 架构。按照 docs/gpio.md 的说明GPIO 接口被拆成三层全部配置集中在/etc/kvmd/override.yamlYAML 语法Drivers驱动层硬件/资源层定义用哪些 IO 通道——树莓派物理 GPIO、USB HID 继电器、IPMI 主机、或者一个待执行的命令。每个驱动有唯一的名称和类型类型决定由哪个插件负责通信。Scheme通道层把驱动映射成具名的输入/输出通道每个通道有pin、modeinput/output等属性。View视图层决定这些通道在 Web 界面菜单里如何渲染比如标签文本、LED 颜色、按钮文字等。三个小节必须合并到同一个kvmd.gpio键下而不是重复书写kvmd:顶级键。例如kvmd: gpio: drivers: ... scheme: ... view: ...另外注意命名规则驱动名和通道名不能重复用双下划线包裹的名字如__gpio__、__magic__为系统保留。配置 CMD 驱动让 Web 菜单执行任意命令cmd驱动的作用是在 PiKVM OS 上运行自定义命令。它有两个重要特性摘自 docs/gpio.md 的 CMD 一节不支持 bash 操作符管道、重定向、、;等它是带参数的命令直调。复杂逻辑请写成自己的 shell 脚本。命令以kvmd用户身份执行如需以 root 运行必须配置sudo。第一步在 Drivers 段声明命令在kvmd.gpio.drivers下声明一个类型为cmd的驱动cmd字段是命令 参数的列表kvmd: gpio: drivers: reboot: type: cmd cmd: [/usr/bin/sudo, reboot]这里定义了一个名为reboot的驱动它执行/usr/bin/sudo reboot——即以 sudo 方式重启 PiKVM 整机。第二步在 Scheme 段定义输出通道命令驱动只能作为output通道使用。由于重启这类动作没有持续状态可言应关闭switch模式只保留脉冲式按钮行为kvmd: gpio: scheme: reboot_button: driver: reboot pin: 0 mode: output switch: falsedriver: reboot引用上面定义的驱动pin: 0对于 CMD 驱动只是一个占位编号命令型驱动没有真实引脚约定即可switch: false表示禁用开关切换模式——通道只会显示为按钮不会出现可拨动的开关。第三步在 View 段把通道渲染成菜单按钮最后把通道放进菜单表格kvmd: gpio: view: table: - [reboot_button|confirm|Reboot PiKVM]reboot_button|confirm|Reboot PiKVM的语法含义是通道名 confirm点击后先弹确认框防止误触 自定义按钮标题Reboot PiKVM。保存后重启 KVMD 守护进程使配置生效systemctl restart kvmd以 root 权限执行命令sudoers 配置由于cmd驱动默认以kvmd用户执行凡是需要 root 权限的命令都要走 sudo。官方给出的做法是在/etc/sudoers.d/custom_commands中为特定命令放行做到最小权限kvmd ALL(ALL) NOPASSWD: /usr/bin/reboot含义允许kvmd用户免密以任意身份执行/usr/bin/reboot注意 NOPASSWD 后应紧跟命令的完整路径。如果希望/etc/kvmd/override.yaml中的命令形如cmd: [/usr/bin/sudo, reboot]前提就是这条 sudoers 规则已经就位。安全提示只给确实需要的命令放行 sudo避免把kvmd变成无限制的 root 通道。更多实用命令示例官方文档提供了两个启动示例帮助你理解命令列表的书写格式cmd: [/usr/bin/sudo, kvmd-otgconf, --disable-function, mass_storage.usb0]通过kvmd-otgconf动态禁用 USB 的 mass_storage虚拟 U 盘功能相当于在菜单里一键切换 USB gadget 配置cmd: [(absolute path to sudo, command, flag, flag, absolute path to file]即绝对路径的 sudo 命令 参数 绝对路径的目标文件这种规范写法。由于不支持 bash 操作符像cmd: [/bin/sh, -c, ...]这类包一层 shell 再拼字符串的做法在文档中并未被推荐官方建议直接写脚本文件。对于复杂操作多步、条件判断、日志输出正确的姿势是把逻辑写进一个 shell 脚本再在 CMD 驱动中直接调用该脚本的绝对路径。菜单交互细节标题、确认框与自动收起自定义命令按钮本质上只是 GPIO 视图渲染的一种形态因此 docs/gpio.md 中 View 段的全部定制规则对它同样适用可以让按钮体验更接近生产环境文本以#开头的是标签Label如#Reboot PiKVM输出通道默认渲染为开关 按钮switch: false时只显示按钮pulse被禁用时只显示开关按钮标题可用通道名|按钮文字自定义如relay1|My cool relay需要确认时写通道名|confirm|按钮文字第三个参数必填需要点击后自动收起菜单时写通道名|hide|按钮文字也可与确认组合通道名|confirm,hide|按钮文字输入通道以圆形 LED 呈现颜色可在通道名后指定led1|red可选green、yellow、red、blue、cyan、magenta、pink、white。完整的三段式 CMD 配置drivers scheme view合并到同一个kvmd.gpio键下后就是一个可直接复制的最小重启 PiKVM按钮方案。菜单的实际渲染效果可以参考 GPIO 文档中的示例截图升级到 KVMD 3.36要使用自定义命令按钮功能需要把系统升级到包含 KVMD 3.36 的版本。原发布说明给出的升级命令是rw pacman -Syu reboot这三条命令的语义值得展开说明rwPiKVM OS 默认以只读文件系统运行这是嵌入式设计防止意外断电损坏存储卡rw先把根文件系统切换为可读写否则pacman无法写入pacman -SyuPiKVM OS 基于 Arch Linux ARM这条命令执行全量系统升级包含 kvmd 与 KVMD 3.36reboot重启使新内核/新服务生效同时文件系统会在重启后自动回到只读状态。关于升级仓库文档还有两点补充见 docs/_update_os.md 与 2020-06-01 的发布文章更现代的 OS 版本建议直接使用官方封装的一键更新命令pikvm-updateroot 用户执行若提示command not found说明 OS 版本过旧可先rw后用pacman -Syy pacman -S pikvm-os-updater安装再执行若pacman -Syu报内核依赖冲突需要在/etc/pacman.conf中取消IgnorePkg注释并把报错的内核包加入例如IgnorePkg linux-raspberrypi linux-raspberrypi-headersZero 系列或linux-raspberrypi4 linux-raspberrypi4-headers随后重跑pacman -Syu并重启官方建议仅在能接触到设备物理存储卡的情况下执行升级PiKVM 不会被刷砖但极端情况下需要重新写卡。小结KVMD 3.36 的自定义命令按钮是 PiKVM 抽象 GPIO 架构的又一次自然延伸cmd驱动把执行命令伪装成一个 GPIO 输出通道从而复用 drivers/scheme/view 三层配置和 Web 菜单渲染体系。从本文可以看到从在菜单里加一个重启按钮到以 root 执行kvmd-otgconf切换 USB 功能核心只需在/etc/kvmd/override.yaml中完成三段配置并systemctl restart kvmd。对于更复杂的运维自动化场景结合confirm/hide等菜单交互选项和 sudoers 最小权限放行就能把 PiKVM 变成一台真正可点击操作的远程管理终端。赞分享文档教程【免费下载链接】pikvmOpen and inexpensive DIY IP-KVM based on Raspberry Pi项目地址https://gitcode.com/gh_mirrors/pi/pikvm点击查看免费下载相关推荐AI SDK Codemods 实战指南用自动化代码转换无缝完成 AI SDK 版本升级AI SDK Codemods 实战指南用自动化代码转换无缝完成 AI SDK 版本升级 AI SDK 在版本演进中会废弃、移除或重命名一批 API逐个文件文档教程AIEditor项目自定义气泡菜单中的AI功能按钮实现指南AIEditor项目自定义气泡菜单中的AI功能按钮实现指南 背景介绍 AIEditor作为一款现代化的富文本编辑器提供了强大的文本编辑和AI辅助功能。在最新前端富文本AI 应用3步解锁中文流放之路构建器告别英文困扰的终极指南3步解锁中文流放之路构建器告别英文困扰的终极指南 还在为《流放之路》复杂的角色构建而头疼吗面对全英文的Path of Building工具你是否需要频繁切游戏开发上一篇STAR 2.7.11b高性能RNA-seq比对工具的5个核心技术优势解析下一篇first-contributions 进阶学习资源导航Git 与开源贡献的完整自学路径创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026智能门锁技术趋势:从指纹识别到3D人脸与主动防御

2026智能门锁技术趋势:从指纹识别到3D人脸与主动防御

智能门锁看起来是一个消费电子产品,但从技术结构来看,它实际上是由身份识别、嵌入式控制、机电执行、传感器、网络通信和安全策略组成的一套门禁系统。过去智能门锁的核心是“电子化开锁”,而现在产品开始加入3D人脸、掌静脉、可视猫眼、异常…

2026/9/24 16:29:33 阅读更多 →
grammars-v4 中 Python 语法的 C++ 目标适配指南:transformGrammar 脚本与基类深度解析

grammars-v4 中 Python 语法的 C++ 目标适配指南:transformGrammar 脚本与基类深度解析

编程语言编译器开发工具 【免费下载链接】grammars-v4 Grammars written for ANTLR v4; expectation that the grammars are free of actions. 项目地址: https://gitcode.com/gh_mirrors/gr/grammars-v4 点击查看 免费下载 本篇技术指南围绕 python/python/Cpp/RE…

2026/9/24 16:29:33 阅读更多 →
protobuf-format-cj 快速开始:5分钟从编译构建到第一个 Protobuf JSON 序列化示例

protobuf-format-cj 快速开始:5分钟从编译构建到第一个 Protobuf JSON 序列化示例

protobuf-format-cj 快速开始:5分钟从编译构建到第一个 Protobuf JSON 序列化示例 【免费下载链接】protobuf-format-cj 根据 protobuf 数据,提供不同格式的序列化 项目地址: https://gitcode.com/Cangjie-TPC/protobuf-format-cj protobuf-forma…

2026/9/24 16:28:32 阅读更多 →

最新新闻

网盘文件丢给 IDM 或 Aria2?先装这个浏览器脚本把直链取出来

网盘文件丢给 IDM 或 Aria2?先装这个浏览器脚本把直链取出来

网盘文件丢给 IDM 或 Aria2?先装这个浏览器脚本把直链取出来 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …

2026/9/24 17:09:16 阅读更多 →
SDRPlusPlus Android后端NDK编译:从3条命令到完整ARM64构建

SDRPlusPlus Android后端NDK编译:从3条命令到完整ARM64构建

SDRPlusPlus Android后端NDK编译:从3条命令到完整ARM64构建 【免费下载链接】SDRPlusPlus Cross-Platform SDR Software 项目地址: https://gitcode.com/GitHub_Trending/sd/SDRPlusPlus SDR是一款跨平台的软件定义无线电软件,把手机变成能接收、…

2026/9/24 17:09:16 阅读更多 →
用 Truffle 与 GraalVM 打造高性能 Mal 解释器:java-truffle 实现的渐进式优化实战

用 Truffle 与 GraalVM 打造高性能 Mal 解释器:java-truffle 实现的渐进式优化实战

示例工程 【免费下载链接】mal mal - Make a Lisp 项目地址: https://gitcode.com/gh_mirrors/ma/mal 点击查看 免费下载 本篇技术指南围绕当前仓库 mal(Make a Lisp)中的 java-truffle 实现展开:它用 Oracle 的 Truffle 框架在 …

2026/9/24 17:09:16 阅读更多 →
nom 2.0 升级指南:从 nom 1.x 迁移的完整破坏性变更清单与修复方案

nom 2.0 升级指南:从 nom 1.x 迁移的完整破坏性变更清单与修复方案

nom 2.0 升级指南:从 nom 1.x 迁移的完整破坏性变更清单与修复方案 【免费下载链接】nom Rust parser combinator framework 项目地址: https://gitcode.com/gh_mirrors/no/nom 导读 本文基于 doc/archive/upgrading_to_nom_2.md 编写,是 nom 1.…

2026/9/24 17:09:16 阅读更多 →
Dopamine 分布投影详解:深入解析 `project_distribution` 与 C51 算法 Eq7 的实现

Dopamine 分布投影详解:深入解析 `project_distribution` 与 C51 算法 Eq7 的实现

Dopamine 分布投影详解:深入解析 project_distribution 与 C51 算法 Eq7 的实现 【免费下载链接】dopamine Dopamine is a research framework for fast prototyping of reinforcement learning algorithms. 项目地址: https://gitcode.com/gh_mirrors/do/dopami…

2026/9/24 17:09:16 阅读更多 →
AX背后的Google内部经验:分布式执行引擎共性提炼完整指南

AX背后的Google内部经验:分布式执行引擎共性提炼完整指南

AX背后的Google内部经验:分布式执行引擎共性提炼完整指南 【免费下载链接】ax Googles open agentic orchestration runtime 项目地址: https://gitcode.com/GitHub_Trending/ax11/ax AX(Agent Executor)是 Google 开源的分布式执行引…

2026/9/24 17:08:15 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →