18

穷人的IP-KVM远程访问

 1 year ago
source link: https://blog.heysh.xyz/2023/05/20/ipkvm_4_poor_man/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

穷人的 IP-KVM 远程访问

说起 DIY 的 IP-KVM,当然是 PiKVM 以及一系列衍生项目,可是对于那些把钱投入庞氏骗局的穷人来说,RPI4 已经远不能称为 inexpensive。近几天,我从垃圾堆里翻出了同样昂贵的 Phicomm N1 和一张 30 块的视频采集卡,发现正好也能用。

有较强的自我管理能力.png

有较强的自我管理能力.png

把远程控制取名叫作 IP-KVM,这对于 SEO 来说过于不友好了。每当搜索 Google 的时候,总会看到有人试图在 N1 上跑虚拟化(aka KVM),可能是对 2G 内存有些什么不切实际的幻想。最后,在 GitHub 上找到了在 N1 上安装 PiKVM 的脚本:toss-a/pikvm-armbian。不过这里的说明也稍微有些简略,我会努力稍微详细一点点,尽量。

那么,需要准备下面这些东西:

  1. N1 一台;

    我的 N1 是从垃圾堆里捡回来的,如果是新购的话,应该会有一些更新、更好的选择。注意,这些选择需要能够 OTG。

  2. USB 公对公数据线一条;

    因为 N1 的 USB 口有 OTG 功能,直接连接被控电脑就可以模拟鼠标和键盘。

  3. 视频采集卡一张,配 HDMI 线一条;

    因为 N1 没有 USB3.0 接口,MS2109 芯片就足够了,可以跑 1080p@30Hz。

    大概长这样:
  4. U 盘一块;
  5. Linux 知识一些;
  6. 可能会需要:
    1. USB 键盘一个;
    2. USB 延长线一条;
    3. 理想的上网环境。

      根据相关法律法规和政策(下略)

不需要准备 Arduino、BadUSB、USB Rubber Ducky,或者其他的单片机,虽然我的垃圾堆里也有不少。

安装系统:Armbian(Ubuntu 口味的)

这部分已经有很多人写过了,大概步骤是降级 —BalenaEcther 镜像写入 U 盘 —Armbian 写入 EMMC。可以参考 GitHub 说明其他人的博客或者 B 站。要注意,在盒子的原始系统尚未关机时不要插入 U 盘,Android 系统会破坏 U 盘文件的权限。

Armbian 镜像我使用的是 Armbian_23.05.0_amlogic_s905d_jammy_6.1.27_server_2023.05.13.img.gz,其中,S905d 是 N1 所用的芯片,Jammy 是 Ubuntu 的版本号,6.1.27 代表使用的是最新版本的 Linux 内核。如果安装 PiKVM,Debian 系列(bullseye)的软件包有些太老了。

修改 dtb 文件

好,到这里时,我会假设:N1 已经刷成了 Ubuntu 风味的 Armbian 系统;连接好网络,有线无线都可以;能够输入命令 —— 不管是直接插键盘显示器,或是通过 SSH,还是直接从电路板上引出导线。

在上述的 Armbian 引导文件中,默认的 USB 模式是 Host,为了模拟鼠标、键盘等设备,需要将 dr_modehost 更改为 peripheral1。那么,我们需要重新编译 dtb 文件:

# 将dtb编译为dts文件
dtc -I dtb -O dts -o test.dts /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb
# 用你喜欢的编辑器打开这个文件
vim test.dts

test.dts 中搜索 dr_mode,寻找首个 dr_mode = "host";,改为 dr_mode = "peripheral";。 这里的上下文大概是这样:

注意红字位置

后面的 dr_mode 不必修改。不要问我为什么,这部分超出了我的能力。之后重新把 dts 编译回去,移动到 /boot/dtb/amlogic/,并且修改启动项:

dtc -I dts -O dtb -o n1-test.dtb test.dts
sudo mv n1-test.dtb /boot/dtb/amlogic/
sudo vim /boot/uEnv.txt

FDT 一行改为 FDT=/dtb/amlogic/n1-test.dtb

最近觉得carbon.now.sh还挺棒哒

然后重启系统。

此时,假设你能够透明地访问 github 和其他网站,curl google.com 返回 302 或者 200。如果不行的话,可以尝试在 N1 上安装 zfl9/ss-tproxy,让 N1 同时承担旁路网关的功能。

git clone https://github.com/toss-a/pikvm-armbian.git
cd pikvm-armbian
./install.sh

在提示 "Do you want to apply custom patches? [y/n] " 时,选择 N。

接下来,重启系统,再次运行 install.sh,然后关机。

连线和启动

N1 靠近 HDMI 接口的 USB 口已经改为 OTG 从机模式,把双公头 USB 线插在这里,另一头插到被控计算机上。这时候,如果视频采集卡插不上的话,拿出提前准备好的延长线。下面的照片来自这里,照相技术牛逼疯了。

牛逼疯了!

重新插入电源,用随便的浏览器访问 N1 的 IP 地址,并忽略证书错误提示。初始用户名和密码都是 admin,别忘了修改登录密码,用 sudo kvmd-htpasswd set admin

另外,感谢 pikvm 项目,有钱的话就去支持 [他们的硬件]((https://pikvm.org/) 吧!


  1. Ref:README,这个写的其实挺清楚的,比我的好。 ↩︎


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK