サーバやPCといった機器を遠隔操作する場面を想像してみます。当該機器のOSが起動してネットワークに接続完了した状態であれば、OSやその上の何らかの機能 (SSHログインやRDP) を用いて、ネットワーク経由でその機器を操作できます。一方、次の場合には遠隔操作ができませんので、通常は、実機のある現場に出向いてキーボードやモニターを接続してから直接操作することになります。
しかしながら、上記の状況で実機に接続するキーボード・モニター・マウス (KVM: Keyboard, Video, Mouse) を遠隔から扱えるタイプに換えることができれば、これら一式を“リモートKVM・IP-KVM”として、当該機器をネットワーク経由で遠隔操作できるはずです。いわば、HPEのiLOやDELLのiDRACが提供するサーバ管理機能 (BMC) の一部を外付けするイメージです。
今回試してみるオープンソースソフトウェア「PiKVM」 (π-pvm: The Open Source IP-KVM) は、安価なラズパイ本体とHDMIのビデオキャプチャデバイスを用いて、このリモートKVM機能を実現します。
レシピとして次の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カメラアダプタ」
サンコー
手順はPiKVM Handbookに沿って進めます。
For HDMI-USB dongle
であるv2-hdmiusb-rpi4-latest.img.xz
イメージをダウンロードし、「Raspberry Pi Imager」などを使ってMicroSDカードにイメージを書き込みます[ラズパイ4] | (途中) | [PiKVMで制御するPC] |
---|---|---|
USB type-C端子 | Y字型のUSBケーブルがあるならば電源供給用の線にUSB充電器を接続 | 任意のUSB端子 |
USB type-A端子 (USB2.0 黒の下側端子) | HDMI to USBドングル | HDMI等の映像出力端子 |
https://ラズパイ4のIPアドレス/
を開きます。ログイン画面に入力するIDとPasswordは、デフォルトですと admin, admin です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)
PiKVMには、PiKVMのMicroSDカード内に保存したISOイメージをPCでマウントできる「Mass Storage Drive」という機能が備わっており、Mass Storage Drive - PiKVM Handbookにその詳細があります。この機能をPCの起動時に用いれば、PiKVMに載せている任意のISOイメージでPCを遠隔操作で起動できます。下の画面では例として「Clonezilla」を起動しています。
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で認識できるものであれば、インターネット環境が利用できないところでの機器の遠隔操作も可能だと思います。