使用 Orangepi Zero 构建一个低成本的 Pikvm
准备工作
一个 Orangepi Zero。
一个 HDMI to USB 的采集卡。
一个>4GB 的 TF 卡 及 读卡器。
一根网线。(仅需要百兆,四芯线即可)
两根 USB-A to micro-USB 数据线。 (或"一根 USB-A to micro-USB 或一根 其他 to USB-A")*若主板支持USB关机供电可以直接使用一根USB-A to micro-USB 数据线
一根电烙铁,部分松香及焊锡(如果有的话)
如果被控机没有HDMI接口请自备一个转HDMI的转换器
缺点
一些非UEFI BIOS 可能无法使用虚拟键盘控制。
最后一次更新为2020 两年未更新。
Orangepi Zero只有百兆网口,若需要远程安装镜像,传输过程将会很久。
开关机解决方案
可以使用Wake-on-LAN进行网络唤醒。
可以在BIOS中设置来电自启,再配置一个智能插座也可以实现远程开关机。
参考 https://github.com/Yura80/pikvm-rock64/issues/6
相关链接
https://github.com/Yura80/os/releases
https://github.com/pikvm/pikvm
价格参考
物品| 参考价格(CNY) | 备注 |
OrangePi Zero | 50.00 | 闲鱼上的二手板子,现在好像没有这个价了 |
HDMI to USB采集卡 | 35.00 | 在淘宝上随便找即可 |
网线 | 8.00 | 在淘宝上随便找即可 |
USB-A to micro-USB 数据线*2 | 9.90 | 在淘宝上随便找即可 |
HDMI线 | 9.90 | 在淘宝上随便找即可 |
除了OrangePi Zero、HDMI to USB采集卡,其他均为乱标
提示
尽量放在通风的地方,如果可以请加装一个1.4cm的散热片在CPU上。
介绍
什么是 Orangepi Zero?
这是一款便宜的开发板,可以让我们使用更低的成本搭建一个 pikvm,不必使用昂贵的 raspberry pi 进行搭建。
什么是 pikvm?
pikvm 是一个开源的 KVM over IP 项目,它可以让你在局域网内对一台计算机或服务器进行远程管理。你可能会想到 IPMI,那是一个对专属服务器进行远程管理的模块,无法使用其对普通计算机进行管理。
什么情况下我需要使用到 pikvm?
当你管理的主机出现网络异常等情况你可以使用 Pikvm 进行连接管理,当网络修好以后就可以继续使用 RDP、ssh 协议继续连接。pikvm 相当于一台主机最后的远程访问后盾。
为什么我要使用 Orange Pi Zero 来搭建 Pikvm?
因为疫情原因导致停工停产, raspberry pi 的价格水涨船高。
虽然就算 raspberry pi 不涨价我也买不起,但是我在群友的分享下找到了 50 块的 Orangepi Zero,此前我就在 reddit 上找到了有人构建出了 OrangePi Zero 的 Pikvm 镜像。不过除了我这个方式我见 Github 上还有使用一台 X86 主机安装 Docker 运行 Pikvm 镜像的,方法不唯一吧。
步骤
制作数据线
*如果你的主板支持USB关机供电可以直接在BIOS中开启该功能。然后只需要一根USB-A to Micro-USB的数据线就可以实现该功能。
本步骤亦可参考视频 BV1TL4y1375U (00:27 ~ 02:00)。
将一条 USB-A to micro-USB 的外皮中间部分剥开,这时你应该看到四种颜色的线: 红,黑,白,绿。(若该线只有红黑说明这条线无法使用。)
将红黑线剪断,如果做不到可以全部剪断。
将另一条线剪断。
将 USB-A 那头的尾端部分外皮剥开,将红线和黑线的外皮剥开,露出铜芯。

将线按照上图连接起来,有电烙铁最好使用一些焊锡将其焊上。
数据线制作完成。
刷入镜像
从 https://github.com/Yura80/os/releases 下载需要的镜像,文件名"v2-hdmiusb-generic-aarch64-orangepi-zero-plus.img.bz2" "v2-hdmiusb-generic-arm-orangepi-zero.img.bz2"(该区域曾经出现过错误,现因评论区提醒已修正,请注意。非常抱歉。)

将 TF 卡插入读卡器后将读卡器插入电脑。
使用 SD 卡烧录工具,如 Win32DiskImager 进行烧入。(如果可以最好使用 SD Card Formatter 先格式化一下)
当提示"Write Successful"。说明镜像刷入完成。
启动前准备
将 HDMI-to-USB 采集卡插入 Orangepi Zero 唯一的 USB 口。
将网线接入需要连接的交换机或路由器,如果房间的网口无法插入两个设备,可以购买一台交换机。(?
将 TF 卡插入 Orangepi Zero 的 TF 卡槽。
一切准备就绪,将数据线 USB-A 供电一头插入充电器或排插,另一条 USB-A 插入主机,Micro-USB 插入 Orangepi Zero。
等待开机完成,完成后会在 Micro-USB 口附近亮绿灯。
连接 Pikvm
在浏览器输入路由器的地址(一般家庭为 192.168.1.1),在设备管理一栏(或者家长控制之类的)找到设备名称为 Pikvm 的设备,将 IP 复制。
将 IP 粘贴到浏览器地址栏,会提示不安全连接,这是因为 Pikvm 的自签名证书在你的主机上不可信。我们不需要管因为这说明了我们的访问是经过加密的,我们选择"高级"-"继续前往"。
现在我们会到一个登录界面,我们使用用户名(Username) admin 密码(password) admin 登录即可
登录成功后我们选择"KVM",即可对被控机进行控制。(请不要闲的没事使用被控机控制被控机)
修改密码
使用 pikvm 的默认密码是非常不安全的,我们需要对其进行修改密码的操作。
进入pikvm的浏览器界面。
选择 "Terminal" 进入pikvm的终端。
输入 "su" 后回车。然后,输入默认密码 "root" (不会显示,不用理会),回车。
这时候,你应该能看到左边的用户名从 kvmd-webterm 变成了 root。

输入"rw"后回车(使储存可写)。
以下步骤为修改浏览器中所使用的登陆密码及账号。
输入"kvmd-htpasswd del admin"后回车。删除默认账号。
输入"kvmd-htpasswd set {你想要的用户名}"后输入密码,输入后回车输入第二遍。
输入"systemctl restart kvmd kvmd-nginx" 后回车,应用更改。
以下步骤为修改系统账户的密码。
输入"passwd"修改 pikvm 的 root 密码,最好与上面的密码不一致,输入后回车输入第二遍。
修改密码完成。
设置静态 IP
进入pikvm的浏览器界面。
选择 "Terminal" 进入pikvm的终端。
输入 "su" 后回车。然后,输入你的密码(不会显示,不用理会),回车。
这时候,你应该能看到左边的用户名从 kvmd-webterm 变成了 root。
输入"rw"后回车(使储存可写)。
输入"vim /etc/systemd/network/eth0.network"回车。
按下 i 进入编辑模式,使用方向键将光标跳到"DHCP=yes",将"yes"改为"no"。
将光标移到文档最后,回车新建一行,输入"Address={需要的 IP}/{掩码,一般为 24}"。
将光标移到文档最后,回车新建一行,输入"Gateway={路由器的 IP}"。
将光标移到文档最后,回车新建一行,输入"DNS={一个 DNS IP, 例如阿里的 223.5.5.5}"。
按下 ESC,输入":wq"保存后,输入 reboot 重启。

- 设置静态 IP 完成,以后连接 pikvm 只需要输入{需要的 IP}即可
我此前从未写过哔哩哔哩专栏,以上文档是使用Markdown进行编写后稍微进行修改的。
若无法正常阅读请见谅。
这也是本人第一次写教程,本来是想当个视频文案的,但我现在根本不敢上传视频。
本教程几乎没有任何技术含量,本教程所走的方法是我能想到最简单最便宜的了。不需要重新编译镜像,主要难点或许就只有制作数据线了。
数据线如果不想做也可以直接拿一个四芯的MicroUSB to USB-A的数据线,然后直接连接被控机,但这样Pikvm将无法一直通电。
有问题请在评论区说明,尽量回答。
本教程创立之初没有任何诋毁、指责、人身攻击、踩一捧一、针对任何团体及个人,创立原因纯属兴趣及在和别人讨论时出现的想法,本教程也不对除了Orangepi Zero以外的任何产品做推荐,品牌的要求。你也可以将所使用的开发板换成其他的开发板。
镜像作者不是我,出现问题请前往Github(https://github.com/Yura80/pikvm-rock64)提交Issues。
本教程仅提供一种简单便宜的方式,解决方案。并没有说"不能使用raspberry pi。"或"使用raspberry pi的都是笨蛋"等内容。希望不要以本方式对我进行讨伐。
若文章中出现了什么错误也请在评论区下进行说明,本人语言组织能力也不太行,出现语病你也可以在下面说明。如果能直接给出解决方案就更好了。
在文中如果感觉到自己被我攻击或出现版权许可等问题,给出的理由恰当我会立即删除本文章。
祝成功。