リモートKVMをラズパイで実現する「PiKVM」を試した

リモートKVMをラズパイで実現する「PiKVM」を試した
Page content

遠隔操作機能は外付けできる

サーバやPCといった機器を遠隔操作する場面を想像してみます。当該機器のOSが起動してネットワークに接続完了した状態であれば、OSやその上の何らかの機能 (SSHログインやRDP) を用いて、ネットワーク経由でその機器を操作できます。一方、次の場合には遠隔操作ができませんので、通常は、実機のある現場に出向いてキーボードやモニターを接続してから直接操作することになります。

  • 当該機器がネットワークに接続完了する前である (例: OS導入途中やBIOS画面状態)
  • 当該機器がそもそもネットワーク未接続・ネットワーク分離されている

しかしながら、上記の状況で実機に接続するキーボード・モニター・マウス (KVM: Keyboard, Video, Mouse) を遠隔から扱えるタイプに換えることができれば、これら一式を“リモートKVM・IP-KVM”として、当該機器をネットワーク経由で遠隔操作できるはずです。いわば、HPEのiLODELLのiDRACが提供するサーバ管理機能 (BMC) の一部を外付けするイメージです。

今回試してみるオープンソースソフトウェア「PiKVM」 (π-pvm: The Open Source IP-KVM) は、安価なラズパイ本体とHDMIのビデオキャプチャデバイスを用いて、このリモートKVM機能を実現します。

PiKVMを試す

レシピと材料

レシピとして次の2つのサイトを参照します。

私の予備のラズパイとしては現在「2」と「4」と「400」の3台があり、当初は「Raspberry Pi 2」を使ってPiKVMを実験したかったのですが、「2」本体はハードウェア的にUSB OTGをサポートしていないようでした。今回はレシピのお勧め通り「Raspberry Pi 4」を使います。

また、オプションのATX制御は行わず、1系統の「キーボード・モニター・マウス」を操作するリモートKVM機能だけを試せれば良いとすると電子工作的な準備は不要で、必要な材料は次の通りです。

必要な材料今回はどうしたか
Raspberry Pi 4 (2GBモデルで充分、1GBモデルでも可)4GBモデル
MicroSDカード (16GB以上推奨)64GB
HDMI to USBドングル; ビデオキャプチャデバイスTHANKO SHDSLRVCを3,000円弱で購入
a) 電源供給用の線が生えているY字型のUSBケーブル + USB充電器 (3Aかラズパイ公式のもの) or b) USB type-CとPCを直結するUSBケーブルa) ポータブルHDDケースの付属品 + 適当にあった物

「a) 電源供給用の線が生えているY字型のUSBケーブル + USB充電器」は、PiKVMを試す程度であれば必須ではなく、代わりに「b) USB type-CとPCを直結するUSBケーブル」でも事足りると思います。

しかしb)には難点があり、ラズパイ4への電源供給が1系統のみとなるため、接続されたPCの電源をOFFにするなどでUSB給電が止まるとラズパイ4の電源も強制切断されることに留意が必要です。ちなみにPiKVMはread-only filesystemで構成されており、耐障害性は比較的ありそうに思います。

サンコー(Sanko) レアモノショップ 一眼カメラやビデオカメラをWEBカメラに!「HDMI to USB WEBカメラアダプタ」

サンコー(Sanko) レアモノショップ 一眼カメラやビデオカメラをWEBカメラに!「HDMI to USB WEBカメラアダプタ」

サンコー

お試し手順

手順はPiKVM Handbookに沿って進めます。

  1. Flashing the OS image - PiKVM Handbookにあるように、For HDMI-USB dongleであるv2-hdmiusb-rpi4-latest.img.xzイメージをダウンロードし、「Raspberry Pi Imager」などを使ってMicroSDカードにイメージを書き込みます
  2. ラズパイ4とPiKVMで制御するPCとを、次の表・写真のように配線します。さらにラズパイ4をLANへ接続します
    [ラズパイ4](途中)[PiKVMで制御するPC]
    USB type-C端子Y字型のUSBケーブルがあるならば電源供給用の線にUSB充電器を接続任意のUSB端子
    USB type-A端子 (USB2.0 黒の下側端子)HDMI to USBドングルHDMI等の映像出力端子
  1. First steps - PiKVM Handbookにあるように、PiKVMのイメージを書き込んだMicroSDカードでラズパイ4を起動し、ラズパイ4がDHCPで取得したIPアドレスを調べたのち、ウェブブラウザでhttps://ラズパイ4のIPアドレス/を開きます。ログイン画面に入力するIDとPasswordは、デフォルトですと admin, admin です
  2. PiKVMへのログイン後、[KVM] [Terminal] [Logout] を選択できるメニューが現れますので左側の [KVM] をクリックします。真ん中の [Terminal] はPiKVMのシェル画面 (ベースはArch Linux) に繋がります

PiKVMの使用例

基本) KVM機能

PiKVMに接続したPCの映像出力はブラウザ上で確認できます。画面表示が出ないなど何かおかしい時は、右上のSystemの中にあるReset streamをクリックしてみます。また、キーボードやマウスの動きがおかしい時はReset HIDをクリックしてみます。なお、Mute HID input eventsというスイッチはデフォルトOFFで、これをONにするとキーボードとマウスの入力がPCへ伝わらなくなり、画面閲覧専用モードになります。

ちなみにPiKVMはPCからどのように認識されているのかを調べるため、Linux機に接続してlsusbすると次のように表示されました。

$ lsusb
(snip)
Bus 002 Device 007: ID 1d6b:0104 Linux Foundation Multifunction Composite Gadget
(snip)

基本) Mass Drive Storage機能

PiKVMには、PiKVMのMicroSDカード内に保存したISOイメージをPCでマウントできる「Mass Storage Drive」という機能が備わっており、Mass Storage Drive - PiKVM Handbookにその詳細があります。この機能をPCの起動時に用いれば、PiKVMに載せている任意のISOイメージでPCを遠隔操作で起動できます。下の画面では例として「Clonezilla」を起動しています。

応用) Tailscale VPN, ウェブカメラも組み合わせ可能

Tailscale VPN - PiKVM Handbookに記載の導入手順で、PiKVMをTailscaleに接続できます。実際にやってみると導入はすんなり簡単で、導入後は、インターネットからPiKVMへアクセスする経路を作っていなくても、同じTailscale VPNに参加している他のPC環境からhttps://PiKVMのTailscaleでのIPアドレス/でPiKVMへアクセスできるようになります。

また、PiKVMへの映像入力としてHDMI to USBドングル (ビデオキャプチャデバイス) の代わりに手元のウェブカメラを接続してみると、ウェブカメラが撮る映像をPiKVMのブラウザ画面に出すことができました。おそらくUVC (USB Video Class) 対応デバイスであれば何でもPiKVMへ映像入力できるのでしょう。

ここで思いつくのは、これら2つを組み合わせることです。Tailscale VPNとウェブカメラを組み合わせれば、たとえば『OKリモート』という医療現場向けソリューションと同等の遠隔操作機能をPiKVMに持たせることもできそうです。さらに、データ通信用USBモデムがPiKVMで認識できるものであれば、インターネット環境が利用できないところでの機器の遠隔操作も可能だと思います。

追記 [2024-03-23]: PiKVMのLTE対応版をDIYしてみました

参考リンク