Pikvm:基于Raspberry Pi的开放廉价DIY IP-KVM

2020-09-06 23:46:52

一个非常简单且功能齐全的基于Raspberry Pi的IP-KVM,您可以自己动手制作。此设备有助于远程管理服务器或工作站,而不管操作系统的运行状况如何或是否安装了服务器或工作站。您可以使用虚拟CD-ROM或闪存驱动器修复任何问题、配置BIOS,甚至重新安装操作系统。

网址:pikvm.org。也可以加入不和谐社区聊天,获取新闻、问题和支持!

通过Web UI或VNC访问,能够使用IPMI BMC和局域网唤醒来控制服务器;

价格更便宜,但比商业解决方案更好,价格在30美元到100美元之间,具体取决于所需的功能。即使是最昂贵的配置也会比500美元的商业IP-KVM便宜。

易于构建只需运行Make Build即可创建即用型操作系统,并使用Make Install将其安装到SD卡上。硬件可以在半小时内制作完成,而且不需要焊接。

最广泛的硬件支持有多种构建PI-KVM的方法。可以使用CSI-2或USB接口连接视频捕获设备。可以使用树莓PI型号2、3、4或ZeroW。支持任何硬件组合,并且PI-KVM实现了最大可能的功能集。

非常低的延迟,大约100毫秒的视频延迟。这是所有现有解决方案中延迟最小的。

超轻巧别致的Web UI,没有奇怪的专有客户端。没有难看的Java小程序。只需使用您最喜欢的浏览器连接到PI-KVM即可。也没有Flash插件!

键盘和鼠标的使用直接在浏览器中工作。键盘仿真器支持显示键盘LED的状态。

Raspberry PI 4和ZeroW上的海量存储驱动器,PI-KVM可以模拟虚拟CD-ROM或闪存驱动器。可以上传实时映像以引导连接的服务器。

ATX电源管理通过可以组装在面包板上的非常简单的电路,可以使用主板上的ATX按钮接头控制连接的服务器的电源按钮。

安全PI-KVM可以向Internet开放,没有密码任何人都不能访问。SSL加密用于保护流量不被第三方拦截。

本地监控PI-KVM监控树莓PI板的健康状况,并会警告您它是否过热或没有获得足够的电力。

基于Linux的嵌入式操作系统PI-KVM操作系统基于Arch Linux ARM,可以根据任何需要进行定制。数以千计的预建二进制包为您服务,只需一个命令即可更新!

只读文件系统默认情况下,操作系统像嵌入式系统一样以只读模式运行。这可防止因突然断电而损坏存储卡。

VNC服务器受控服务器及其BIOS可以使用支持JPEG压缩的常规VNC客户端访问。

IPMI BMC使用ipmitool、ipmiutil或任何支持IPMI的现有网络基础设施来监控和管理服务器的电源。

可以将LAN唤醒PI-KVM配置为使用WOL为受控服务器通电。这将在Web菜单中可用。

可扩展授权方法可以将多个PI-KVM配置为使用公共授权服务。PAM及其丰富的授权机制还可以用于将PI-KVM集成到您现有的身份验证基础设施中。

宏脚本如果必须在连接的服务器(或多个不同的服务器)上执行重复操作,则可以使用键盘和鼠标操作录制宏并可以多次回放。

社区与支持PI-KVM有一个很大的社区。如果你有任何问题,请加入不和谐的聊天室。

可扩展的PI-KVM被设计为一组具有插件架构的微服务。它非常容易修改和维护。

全面的API可以通过用户界面完成的所有操作也可以通过强大的HTTP API完成。

技术诀窍我们创建了我们自己的MJPG视频服务器,它用C编写,支持多线程和GPU视频编码-这是目前可用的最快的流媒体解决方案,可以为PI-KVM提供最佳的视频质量。我们还测试了许多硬件配置,以便您可以确保您组装的设备能够可靠地工作。

PI-KVM支持几种不同的硬件配置,称为平台。现已推出:V2和V0。

推荐:V2是Raspberry PI 4和ZeroW最现代的实现,支持PI-KVM的所有功能,包括大容量存储驱动器。它也是最容易制作的。

V0设计用于Raspberry PI 2和3,这两个版本没有OTG,需要更多组件才能进行基本实现。它也不支持大容量存储驱动器功能。

视频捕获设备:...。或HDMI到USB加密狗(不适用于ZeroW)-高延迟~200ms,不太可靠)。

仅适用于Raspberry PI ZeroW:1x Raspberry Pi Zero相机电缆(如果使用HDMI至CSI-2桥,但与AuVidea B101不兼容,请检查引脚引线)。

它完全受支持,PI-KVM与它配合使用效果很好。但与推荐的HDMI-CSI网桥相比,它有一些缺点:USB的延迟很大(200ms比100ms),而且它不支持流压缩控制(你将无法在互联网连接较差的地方使用PI-KVM)。它也不能自动检测屏幕分辨率。所有这些都是由加密狗本身的硬件限制造成的。此外,一些用户报告硬件问题:转换器可能无法在BIOS中工作,或者只是在一段时间后停止工作。这是一个黑匣子,没人知道里面装的是什么。如果你用它有问题,就不可能修复它们。

如果您想从您的服务器捕获VGA而不是HDMI,请购买VGA到HDMI转换器。

PI-KVM可以使用PoE供电,但不建议使用官方的PoE HAT:它不可靠,并且与HDMI网桥不兼容。使用任何其他不带I2C风扇控制器的PoE HAT。

不要使用随机继电器模块或随机光耦合器!一些继电器或光耦合器可能对覆盆子PI不够灵敏,另一些可能是低电平控制的。要么使用由高逻辑电平激活的继电器,要么按照提供的设计购买OMRON。请在此处查看详细信息。

我们目前还在为Raspberry PI 4开发我们自己的帽子。它将拥有v2平台的所有功能,包括:

基于TC358743的HDMI捕获(超低延迟和许多功能,如压缩控制)。

思科风格的USB串行控制台端口(用于管理PI-KVM OS或与服务器连接)。

可选的基于AVR的HID(适用于一些稀有和奇怪的主板,其BIOS不理解OTG仿真键盘)。

不需要焊接或其他组装。这是一个现成的,可靠的董事会,您可以使用自己或提供给您的客户。

它的价格约为100美元-或者更低,我们正在努力使其尽可能便宜。

听起来很有趣?在此表格中订阅或加入https://discord.gg/bpmXfz5,我们会让您知道何时可以购买黑板。样机将于2020年第四季度准备就绪,并将很快提供预购。如果您正在考虑批量订购,请发送电子邮件至[email protected]

将HDMI网桥的柔性扁平电缆插入Raspberry PI(最靠近大型USB插座)上的白色窄连接器中。确保电缆插入正确的一侧,直到其停止,然后卡住黑色闩锁。切勿将扁平电缆与通电设备连接或断开。这不是即插即用的,你可能会损坏它。另外,请仅使用设备封装中附带的电缆,或确保第三方电缆具有正确的引脚引线。

将USB加密狗正好连接到此端口。它绑定在软件中,这样操作系统就不会将视频设备与其他东西混淆。

有许多版本的树莓圆周率董事会,你可能会遇到一个,我们没有测试。如果绑定失败,该设备将可用于所有端口。一切都会正常工作,但如果您使用的是网络摄像头,并且Linux将其误认为是加密狗,请写信给我们,我们会修复它。

这里的图表显示了如何连接所有的部件(单击以全尺寸)。

覆盆子PI 4注:由于一个USB-C母式连接器用于供电和执行键盘/鼠标/驱动器仿真,因此必须制作一条特殊的Y型电缆来分割USB-C的数据线和电源线(参见原因)。它可以由两根合适的连接电缆制成,也可以从零开始焊接在一起。请务必检查下面的电路图,否则可能会损坏您的设备。可以很容易地在Google上找到合适的USB引脚。请注意,如果您用两根未命名的电缆制作Y形电缆,则导线的颜色可能与所示的颜色不匹配。使用万用表确保连接正确。

另外,看看这个ATX的小PCB(如果你知道如何制造PCB的话)。

我们为Raspberry PI 4平台v2-HDMI(CSI-2网桥)和v2-hdmiusb(USB加密狗)提供现成的映像。按照以下说明快速安装操作系统。

对于其他主板和平台,您需要手动构建操作系统。别担心,这很简单!只要按照这些说明去做就行了。如果您确实需要:)您还可以手动构建RPi4的操作系统。)

祝贺你!。您的Pi-kvm将通过SSH(ssh root@<;addr>;默认密码为root)和HTTPS(默认情况下尝试在浏览器中打开URL https://<;addr>;,登录管理员和密码admin)获得。对于HTTPS,默认情况下使用自签名证书。

要更改root密码,请通过SSH或WebTerm使用命令passwd。要更改PI-KVM Web密码,请使用kvmd-htpasswd set admin。如登录屏幕所示,在发出这些命令之前,使用rw使根文件系统可写。进行更改后,请确保运行命令ro。

如果路由器上的端口443具有外部IP地址,则可以对其使用端口转发。在所有其他情况下,您可以使用优秀的免费VPN服务Tailscale,它是通过几个简单的命令在PI-KVM上配置的。

在极少数情况下,旧主板包含一个错误BIOS,无法识别v2平台的键盘(如下所示)。原因是BIOS没有正确地完全实现复合设备的USB HID堆栈。同时,将检测到大容量存储驱动器。对于这种情况,我们建议在v2中使用来自v0平台的Arduino HID。因此,PI-KVM将通过两根USB电缆连接到主板:其中一根负责键盘和鼠标,另一根负责其他一切。看这里。

在使用UEFI的设备上可以观察到类似的问题:键盘工作正常,但鼠标无法正常工作。这个问题不太严重,因为所有的UEFI都可以使用键盘和热键配置,而不需要鼠标。如果您想要一个鼠标,解决方案将是相同的:使用Arduino HID,就像上面的建议一样。

我们未来的v3平台将包含一个针对此类情况的可选HID模块,因此您不必自己构建任何东西。

PI-KVM文件系统始终以只读模式挂载。这可以防止它因突然停电而损坏。要更改配置,您必须首先从root使用命令rw将文件系统切换到写入模式。更改之后,请确保运行命令ro将其切换回只读状态。

切勿编辑/etc/kvmd/main.yaml。使用/etc/kvmd/override.yaml重新定义系统参数。也不建议编辑的所有其他文件都具有只读权限。如果编辑这些文件中的任何一个,则需要在升级系统时手动对其进行更改。您可以使用命令kvmd-m查看当前配置和所有可用的KVMD参数。

几乎所有KVMD(控制PI-KVM的主守护进程)配置文件都使用YAML语法。有关格式语法的信息可以在提供的链接中找到。

如果您不需要ATX电源控制,您可以禁用/etc/kvmd/override.yaml中的相关Web-UI菜单:

要将局域网唤醒与您的服务器一起使用,您必须定义一些选项,如服务器的MAC地址和(可选)IP地址。使用/etc/kvmd/override.yaml。格式为:

将ff:ff替换为您的服务器的MAC。默认情况下,数据包通过广播请求发送到整个IPv4网络(255.255.255.255,端口9),但您可以将其寻址到特定的静态地址:

要使用IPMI BMC,您需要设置适当的帐户并运行kvmd-ipmi守护进程(systemctl enable--现在是kvmd-ipmi)。虽然PI-KVM支持IPMI协议,但由于该协议的不安全性,我们强烈建议您不要在受信任的网络之外使用它。请参考文件/etc/kvmd/ipmipasswd配置IPMI帐户。

为大容量存储驱动器加载映像时意外中断如果在上载即使是小磁盘映像时也出现问题,则可能是由于网络操作不稳定或防病毒软件造成的。众所周知,卡巴斯基防病毒软件会在上传过程中切断PI-KVM连接,因此您应该将PI-KVM网站添加到卡巴斯基的例外列表中,或者不使用防病毒软件过滤Web请求。防病毒程序还会影响某些界面元素的性能,例如质量滑块。

对于卡巴斯基,将Pi-KVM网站的网络地址添加到排除列表的步骤是:保护-&>私人浏览-;类别和排除-&>排除。

BIOS分辨率有问题/错误在某些主板上,BIOS可能以较低的分辨率显示,或者出现一些渲染问题/故障,特别是在较新的ASUS主板上。

这可以通过在BIOS中启用兼容性支持模块(CSM)来解决,通常在Boot Options(引导选项)下。

如果您不能或不想启用CSM,您可以尝试连接DisplayPort显示器或虚拟插头。如果卸下DP电缆/适配器,该错误将再次出现。

如果这些都不起作用,请先尝试连接DP电缆,引导进入BIOS,禁用CSM并关闭(不要重新启动)您的PC。然后,在关闭PC之前引导进入BIOS并启用CSM。然后连接HDMI并再次打开您的电脑。

Linux上的WM有时无法识别电缆上视频输出的变化。也就是说,如果先将电缆插入显示器,然后将其重新连接到PI-KVM,则可能看不到图像。似乎问题出在令人敬畏的WM上,因为例如使用KDE它不能复制。如果在已经连接PI-KVM的情况下打开工作站,一切都会正常工作。

问:我是否可以将多台服务器连接到单个PI-KVM?是的,但是需要额外的工作才能设置。PI-KVM可以连接到多端口HDMI/USB开关,开关的按钮可以通过光电耦合器连接到PI的GPIO引脚,以切换通道。如果您的KVM使用键盘快捷键切换频道,则可能无法使用OTG(v2平台,见下文),因为它没有完全实现USB堆栈。在这种情况下,您必须使用Arduino板来模拟键盘和鼠标。(PI-KVM支持此配置)。

问:我可以将PI-KVM与非树莓PI板一起使用吗?是的,但是您必须自己准备主板操作系统。对于PI-KVM软件,您需要更换RPi.GPIO模块和一些文件(如udev规则)。如果您是开发人员或有经验的系统管理员,您在这方面不会有任何问题。此外,我们对补丁持开放态度。如果您在这方面需要帮助,请通过DISCORD联系我们:https://discord.gg/bpmXfz5。

这个项目是由开源爱好者在非商业基础上开发的。如果您发现PI-KVM很有用,或者它使您不必长途跋涉去检查没有响应的服务器,您可以通过Patreon或PayPal捐赠几美元来支持首席开发人员。有了这笔钱,他将能够购买新的硬件(Raspberry PI板和其他组件)来测试和维护PI-KVM的各种配置,并且通常会在项目上投入更多的时间。在这一页的底部是所有用他们的捐款帮助这个项目发展的人的名字。我们的感激之情无穷无尽!

如果您希望在生产中使用PI-KVM,我们接受订单以根据您的需要进行修改或实施您需要的自定义功能。通过实时聊天或通过电子邮件联系主要开发人员:[email protected]

这些好心人向Pi-KVM项目捐款,并支持该项目的工作。我们非常感谢他们的帮助,纪念他们的名字是我们至少可以做的回报。