ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

PiKVM 自定义命令按钮实战:KVMD 3.36 的 pseudo-GPIO CMD 驱动与 Web 菜单集成指南

2026/9/24 16:29:19 拓冰建站 浏览量
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),仅供参考