MENU

玩客云上的pikvm,50元实现远控(最新完美版)

October 7, 2023 • 折腾,分享

KVM over IP可以远程管理服务器或工作站,无论操作系统或是否安装了操作系统。 相较于购买向日葵控控(¥7??)或树莓派开发板,50多的矿渣玩客云 + HDMI转USB采集卡的组合(不包含其他工具)运行PiKVM同样可以实现很好的效果。

功能特性:
1.HDMI(可VGA转接)采集:通过HDMI采集卡采集被控主机或服务器画面,通过WebUI串流至网页端,至高1080P30fps。
2.远程键鼠控制和镜像挂载:网页端键鼠事件采集,与HDMI采集功能搭配,实现网页端的远程桌面管理。同时可远程挂载镜像安装维护系统。
3.远程SSH:网页终端支持使用SSH客户端对外发起连接。
4.Linux丰富扩展:基于Armbian系统,可自行安装众多Linux软件,如Docker、FRP等。

此教程为更新版本,PiKVM在玩客云上可以稳定运行。

实际运行效果

屏幕截图(60).png

image-20230914132457011.png
image-20231020163805350.png

教程

必备硬件:玩客云(含USB刷机线),HDMI转USB采集卡(可以选最便宜的型号),最低成本约50元。

  1. 玩客云刷机

    使用 https://github.com/hzyitc/armbian-onecloud/releases/download/ci-20221026-074131-UTC/Armbian_22.11.0-trunk_Onecloud_jammy_legacy_5.10.149.burn.img.xz 线刷镜像刷入玩客云EMMC,SSH登录配置好密码和apt源。

    #linux通用一键换源脚本,只更新软件库缓存,请勿升级Linux内核版本
    bash <(curl -sSL https://linuxmirrors.cn/main.sh)

    玩客云刷机教程请自行百度,这里不再赘述。注意,作者只测试过此镜像可正常运行PiKVM,其他版本的镜像可能存在运行问题(不限于不包含OTG驱动,无所需Python版本,OTG拔插死机),不确定是否适用于此教程,如有问题请自行解决。

    注意:Amlogic USB Burning Tool建议使用 v2.1.3及以下版本,不要使用高版本(大坑,否则你可能会刷机刷到怀疑人生)。
    屏幕截图(93).png

  2. 配置hdmi口旁usb为otg模式

    cd /boot/dtb
    #反编译设备树文件
    dtc -I dtb -O dts  meson8b-onecloud.dtb -o meson8b-onecloud.dts
    #然后编辑dts文件查找usb@c9040000修改下面的dr_mode选项为"otg"
    mv meson8b-onecloud.dtb meson8b-onecloud.dtb.bak
    #编译设备书文件,一大串Warning是正常的
    dtc -I dts -O dtb meson8b-onecloud.dts -o meson8b-onecloud.dtb
    reboot

    image-20231006191052819.png

  3. 安装pikvm

    #建议提前配置好科学网络环境,示例:export https_proxy=http://192.168.1.1:7890
    apt update && apt install -y  vim make python3.10-dev gcc
    git clone https://github.com/srepac/kvmd-armbian.git
    
    #代码执行分两阶段,第一阶段执行完成后按Enter键自动重启,重启后继续执行第二阶段代码
    cd kvmd-armbian
    ./install.sh
    
    cd kvmd-armbian
    ./install.sh

    屏幕截图(100).png

    1. 可优化部分(可选):

      1. 在和网友的实际测试中,视频流占用带宽较大,默认配置有画面黑屏现象出现,可编辑 /etc/kvmd/main.yaml 文件将其中的jpeg替换为yuyv将带宽占用减小三倍(代价为CPU占用率提升一倍但实际影响不大),优化弱网环境体验。同时有其他需求(如修改密码)也可在 /etc/kvmd 目录下对应配置文件修改。经长时间测试,修改配置后软件运行稳定,长时间操控没也出现黑屏或远控失灵的的问题。

image-20231007141307324.png

  1. 玩客云OTG口连接运行的被控机时重启或开机时会卡“Checking USBBurn...”无法开机,一般来说拔了USB线再启动就行,在玩客云24小时开机运行的场景下此问题影响不大。

    彻底解决方法:使用TTL连接玩客云(请自行百度ttl连接方法,RX<-->TX TX<-->RX GND<-->GND缺一不可),在插电源开机时狂按Enter键中断UBboot输入以下命令。
    命令解释:设置跳过检测USBBurn 保存 重启UBoot

setenv check_usbburn 'print -n 'Skip Checking USBBurn...' '
saveenv
reset

image-20231019195055895.png
image-20231020154852817.png
image-20231020155055267.png

  1. 开启MSD功能(远程挂载镜像)

    这个地方我想充分利用所有EMMC空间不想新建分区走了一条弯路(缝合怪之路),使用了另一个项目脚本实现这个功能。如果你需要使用SD卡空间或使用单独分区的话可以按照Fruity PiKVM项目提供的方法进行配置。

    image-20231020162422437.png

    这是我选择的方案,使用了kvmd-debian项目中的安装脚本来开启MSD功能

    #破后而立,删除后重新安装PiKVM,有了前面的基础这个过程一路“Y”非常快只需几分钟(不能反过来)
    systemctl stop kvmd-otg kvmd kvmd-nginx
    cd kvmd-armbian
    bash uninstall-pikvm.sh
    TAG=debian-v3.142
    VERSION=$(echo "$TAG" | grep -oE '[0-9]+([\.-][0-9]+)+')
    curl -L -O "https://github.com/hzyitc/kvmd-debian/releases/download/${TAG}/{python3-kvmd_${VERSION}_all.deb,kvmd-platform-v2-hdmiusb-generic_${VERSION}_all.deb}"
    dpkg -i python3-kvmd_${VERSION}_all.deb
    dpkg -i kvmd-platform-v2-hdmiusb-generic_${VERSION}_all.deb
    apt install --fix-broken --yes
    
    sed -i -E 's/^([ \t]*)main\(\)$/\1#main()\n\1pass/' /usr/bin/kvmd-helper-otgmsd-remount
    mkdir -p /var/lib/kvmd/msd/{images,meta}
    chown kvmd -R /var/lib/kvmd/msd/
    #遇到下面这个情况重启一下服务就好了,不过main.yaml需要中ustreamer项可能需要配置。

    image-20231020160917755.png
    image-20231020165126139.png

  2. 开始使用

按图连接好设备(网口旁接USB采集卡,HDMI旁边的为OTG口接USB双公线,可以直接用刷机线),访问玩客云IP,默认账号密码 admin/admin,即可开始使用!

如果你在功能使用上遇到了疑惑,可翻阅PiKVM官方使用指南
1902747501.jpeg

最后

感谢其他大佬们的开源项目和众网友的努力(特别感谢H_xiaoming测试适配镜像、0蓝蓝0提供开机卡检测解决办法和浩龙的电子嵌入式之路的充电,PiKVM在玩客云上的适配接近完美,如果还问题可以留言或私信(可能会回复,时间有限请见谅)。

整体过程较为耗费时间,如果不想折腾也可以在海鲜市场购买成品。

参考项目:

  1. pikvm/pikvm: Open and inexpensive DIY IP-KVM based on Raspberry Pi (github.com)
  2. hzyitc/armbian-onecloud: Armbian for onecloud. 玩客云用armbian (github.com)
  3. srepac/kvmd-armbian: KVMD for Armbian Install Script (github.com)
  4. jacobbar/fruity-pikvm: Install Pi-KVM on debian SBCs such as Orange Pi, Banana Pi, Mango Pi, etc (github.com)
  5. hzyitc/kvmd-debian: PiKVM on Debian, Ubuntu or Armbian (github.com)