2022-01-30 PiKVM 導入
2021/12 に PiKVM を導入した記録。
目的
IPMI も vPro も無い NUC を、遠隔から ESXi インストールができるようにしたい。
できること
- PC / iPad などのブラウザから、遠隔地の PC やサーバを IP 経由でコントロールできる
- HDMI 出力・キーボード・マウス接続を、Web ブラウザからコントロール
- 市販の HDMI エクステンダでは、HDMI --- LAN --- HDMI のため手軽さが無い
- 市販の HDMI + KVM スイッチは、非常に高価
- USB 経由で ISO をマウントし、OS をインストールできる
- インターネット経由だと転送が遅いため、PiKVM がある場所に Windows VM + NAS があると速い
- Read-Only ファイルシステムのカスタム Arch Linux で動作し、SD カードの書き換え限界を回避
- カスタム Arch Linux の GUI の出来が非常に良い
- ATX 電源であれば、電源 off / on も可能
- hkatou Lab はインテリジェント PDU で off / on しているため、未使用
- Tailscale VPN で外部アクセス不可な NAT 配下の環境でも、外部からアクセスが可能
できないこと
- IPMI とは違い、対象機器の CPU 温度などはモニタできない
- リアルタイム性はそれなりで、~100ms 程度の遅延がある
コスト
構成 | 品名 | 購入先 | 価格 | 個数 | 備考 |
---|---|---|---|---|---|
PiKVM | Raspberry Pi4 Model B 4GB | スイッチサイエンス | \7,700 | 1 | 本体 |
Pi4 用 AC アダプタ | Amazon.co.jp | \1,139 | 1 | ||
PiKVM v3 HAT + Steel Case | kickstarter | \20,125 | 1 | Pi4 にかぶせる HAT とケース | |
HDMI ケーブル | \0 | 1 | そのへんにあった短いやつ | ||
小計 | \28,964 | ||||
オプション | ezcoo HDMI KVM Switch | Amazon.com | \15,374 | 1 | HDMI と USB3.0 の KVM スイッチ |
USB 3.0 A-Aオスケーブル 0.5M x2 | Amazon.co.jp | \1,199 | 1 | A-A で非常に珍しいもの 2 個入 | |
Micro <-> A USBケーブル 0.3m | \698 | 1 | PiKVM -> ezcoo コントロール用 | ||
HDMI(オス)to mini HDMI(オス)
ケーブル 0.5m |
\699 | 2 | NUC の mini HDMI <-> ezcoo 間 | ||
小計 | \17,970 | ||||
合計 | \47,633 |
PiKVM と ezcoo はドル決済のため、$1 = 115 円で計算
市販の HDMI KVM エクステンダは 10 万円くらい、IP-KVM エクステンダは 20 万円くらいする (しかも 1 ポート) ため、
吊るしで買う機器よりは安いです。
全体構成
PiKVM と ezcoo HDMI KVM スイッチは、以下で接続します。
- 左下 : ezcoo コントロール用 Micro USB
- 中央 : KVM 用 USB-A - C + HDMI
- 右上 : USB A-to-A x2 + HDMI-to-mini-HDMI x2
- ↑はわかりにくい写真ですが、KVM 用ケーブルなので PiKVM 本体とは接続されてません ↓ の写真を参照
ezcoo の右上にマウスとキーボードを別々に接続する USB ポートがありますが、PiKVM は兼用のため、この画像の背面側に接続します。
PiKVM
左上から
- PiKVM v3 HAT
- PiKVM スチールケース
- HDMI - mini HDMI ケーブル
- USB A - Micro USB ケーブル
- Raspberry Pi4
- Pi4 AC アダプタ
FAN や有機 EL ステータス表示液晶などが入っています。
ピンアサイン含め、内容物は公式が詳しいので、そちらで。
https://www.kickstarter.com/projects/mdevaev/pikvm-v3-hat/description
組み立て手順
細かい組み立て手順は、公式 Youtube と 憧れのKVM over IPを手軽?に導入 を参考にさせてもらいました。
初期設定
First steps を見てやれば OK.
最低限 SSH CLI パスワードと、https GUI パスワードを設定します。
ezcoo HDMI KVM スイッチ
デフォルトだと 1 台のみコントロールできる、PiKVM を 4 台対応にできる HDMI+KVM スイッチ。
日本では出回っていないため、US の Amazon.com から購入しました。
ezcoo HDMI+KVM スイッチ用の PiKVM 設定追加
以下を見て設定します。
私の設定は以下です。
[root@pikvm ~]# cat /etc/kvmd/override.yaml
####################################################################
# #
# Override Pi-KVM system settings. This file uses the YAML syntax. #
# #
# https://github.com/pikvm/pikvm/blob/master/pages/config.md #
# #
# All overridden parameters will be applied AFTER other configs #
# and "!include" directives and BEFORE validation. #
# Not: Sections should be combined under shared keys. #
# #
####################################################################
#
#########
# Wrong #
#########
#kvmd:
# gpio:
# drivers: ...
#kvmd:
# gpio:
# scheme: ...
#
###########
# Correct #
###########
#kvmd:
# gpio:
# drivers: ...
# scheme: ...
#
###########
# Example #
###########
#vnc:
# # See https://github.com/pikvm/pikvm/blob/master/pages/vnc.md
# keymap: /usr/share/kvmd/keymaps/ru # Set russian keymap
# auth:
# vncauth:
# enabled: true # Enable auth via /etc/kvmd/vncpasswd
kvmd:
gpio:
drivers:
ez:
type: ezcoo
protocol: 2
device: /dev/ttyUSB0
wol_server1:
type: wol
mac: 00:00:00:00:00:201
ip: 192.0.2.1
port: 9
wol_server2:
type: wol
mac: 00:00:00:00:00:02
ip: 192.0.2.2
port: 9
scheme:
ch0_led:
driver: ez
pin: 0
mode: input
ch1_led:
driver: ez
pin: 1
mode: input
ch2_led:
driver: ez
pin: 2
mode: input
ch3_led:
driver: ez
pin: 3
mode: input
ch0_button:
driver: ez
pin: 0
mode: output
switch: false
ch1_button:
driver: ez
pin: 1
mode: output
switch: false
ch2_button:
driver: ez
pin: 2
mode: output
switch: false
ch3_button:
driver: ez
pin: 3
mode: output
switch: false
wol_server1:
driver: wol_server1
pin: 0
mode: output
switch: false
wol_server2:
driver: wol_server2
pin: 0
mode: output
switch: false
view:
table:
- ["#Input 1", ch0_led, ch0_button]
- ["#Server 1", "wol_server1|Send Wake-on-LAN"]
- ["#Input 2", ch1_led, ch1_button]
- ["#Server 2", "wol_server2|Send Wake-on-LAN"]
- ["#Input 3", ch2_led, ch2_button]
- ["#Input 4", ch3_led, ch3_button]
kvmd: 配下を追加します。MAC アドレスと IP アドレスは、環境に合わせて書き換えが必要です。
yaml の設定・サービス再起動がうまく行っていれば、上記の表示になり、以下が可能です。
- Click ボタンをクリックすると、PiKVM から ezcoo のポートを切り替え可能
- Send Wake-on-LAN をクリックすると、指定した MAC アドレスに WoL を送信、電源 On
神だ・・・
TailScale VPN による VPN アクセス
Tailscale VPN を見て設定。あとはコントロール元の Windows PC にもインストールすれば、
100.64.0.0/10 のインターフェース経由でリモートアクセスが可能になります。
仕組みはここの記事[1]が詳しいです。
外部リンク
100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!?
- ↑ 100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!? https://internet.watch.impress.co.jp/docs/column/shimizu/1303751.html