INDEX
- Pi-KVM
- セットアップ
- イメージファイルのダウンロード
- イメージファイルの書き込み
- 起動時の構成
- ネットワーク設定
- IP-KVM へアクセス(Web UI)
- IP-KVM へアクセス(SSH)
- パスワード変更
- アップデート
- アップデート(旧)
- PiKVM V3 HAT USB-C VCP
- 設定変更
- ホスト名を変える
- PiKVM の認証を無効にする
- Web UI の ATX機能を無効にする
- Mass Storage Drive を無効にする
- Wake-on-LAN (one host)
- HID - Mouse Jiggler
- GPIO - CMD - reboot
- HDMI Audio (PiKVM v3 HAT only)
- Tailscale VPN
Raspberry Pi を用いた KVM over IP。
Pi-KVM
Raspberry Pi を用いた KVM over IP で、4 および Zero (2) W 用に Arch Linux ARM をベースにしたイメージが公開されている。
画面は、USBに接続したHDMIキャプチャディバイスか、カメラ用のCSIで取得され、操作は、USB Type-C の OTG で行われる。電源供給も Type-C で行われるため、接続したPCから必要な電力が供給できない場合、スプリッタなどを用意/DIYする必要がある。
また、CD-ROM または Flash Drive をエミュレーション、ATX 制御(電源・リセット スイッチ、パワー・HDDアクセス ランプ)、VNCサーバ などの機能も用意されている。
CSIを利用した場合、H.264 エンコーディングと P2P接続とUDPで WebRTC によるビデオ転送が利用できる。これにより、トラフィックの削減、ネットワークの負荷軽減が可能になる。(2021.06.10 以降のビルドではデフォルトで使用可能になっている)
セットアップ
イメージファイルのダウンロード
サイト https://pikvm.org/download/ から、適切なプラットフォームのイメージを取得する。
Pi 4 は、CSI bridge を利用するか、USB dongle を利用するかで分かれている(Pi Zero (2) W は、CSI bridge のみ)。
イメージファイルの書き込み
取得したイメージファイルの圧縮を展開し、SDカードに書き込む。
SDカードは、16GB クラス10 以上を推奨。
書き込みは balenaEtcher や Raspberry Pi Imager などを利用する。
起動時の構成
イメージファイルが書き込まれたSDカードのFAT32領域に pikvm.txt と言うファイルが存在する。起動時に設定が行われ、設定を適用すると、ファイルは自動的に削除されます。
特に初回起動の場合「FIRSTBOOT=1」の行が指定されており、これによって Pi-KVM が初期化が行われる。そのため、この行を消してしまうと必要な初期処理が行われない。
ネットワーク設定
Wi-Fi の設定
pikvm.txt に、WiFi の設定の記述を追加する。それにより、 /etc/systemd/network/wlan0.network (NICの設定)と /etc/wpa_supplicant/wpa_supplicant-wlan0.conf (ESSIDの設定)が作成される。
WIFI_ESSID="mynet" WIFI_PASSWD="p@s$$w0rd"
また、非表示 Wi-Fi ネットワークに接続する場合は、「WIFI_HIDDEN=1」も追加する(2024.03.12 以降のイメージから)。
イーサネット(有線) の固定IPアドレス
pikvm.txt に、IPアドレス・サブネット などの設定を追加する。
ETH_ADDR=192.168.0.100/24 ETH_DNS=8.8.8.8 ETH_GW=192.168.0.1
Wi-Fi (無線) の固定IPアドレス
pikvm.txt に、IPアドレス・サブネット などの設定を追加する。WIFI_ESSID および WIFI_PASSWD と同時に設定する。
WIFI_ADDR=192.168.0.100/24 WIFI_DNS=8.8.8.8 WIFI_GW=192.168.0.1
Avahi
avahi-daemon を有効にする場合は、pikvm.txt に下記を追加する。
ENABLE_AVAHI=1
IP-KVM へアクセス(Web UI)
ブラウザから Pi-KVM を入れたRaspberry Pi にアクセスする(初期設定では https://pikvm/ )。ログイン画面となるので ID/PW を入力する(初期設定では admin/admin )。
IP-KVM へアクセス(SSH)
SSH クライアントで、Pi-KVM を入れたRaspberry Pi にアクセスする(初期ユーザは root/root )。
また、SSH サーバのポート番号を変更する場合、pikvm.txt に「SSH_PORT=1234」を記載することで、1234 に変更される。
パスワード変更
SSH で接続するか、Web UI のターミナルで操作する(Web UI の場合、su - コマンドで root になってから行う)。
# rw # passwd root # kvmd-htpasswd set admin # ro
※PiKVM は読み取り専用でマウントされているので、rw で読み書き可能にスイッチ、ro で読み取り専用に戻る必要がある。
アップデート
root ユーザで、下記のコマンドを実行する。
[root@pikvm ~]# pikvm-update
『pikvm-update: command not found』となる場合は、古いリリースのOSを使用してるので、下記のコマンドを実行してOSを更新する。次回からは、pikvm-update の通常の方法で行える。
[root@pikvm ~]# rw [root@pikvm ~]# pacman -Syy [root@pikvm ~]# pacman -S pikvm-os-updater [root@pikvm ~]# pikvm-update
アップデート(旧)
これは、該当機能が必要な場合のみに推奨される。それ以外の場合は、物理的にディバイスの近くにいて、回復手段として SDカード を作り直せる場合のみに実行する。
PiKVM OS は Arch Linux ARM がベースになっており、pacman コマンドで更新ができる。
# rw # pacman -Syu # reboot
pacman は、ロールバックできるように古いバージョンが保存されている。更新し、すべての機能の確認が終わったら、SDカードの容量を圧迫しないように、クリアする。
# rw; rm -rf /var/cache/pacman/pkg; ro
PiKVM V3 HAT USB-C VCP
PiKVM V3 HAT には、GPIO14,GPIO15 の UART につながった、RJ-45 および USB-C シリアル コンソール ポートがある。有効にするには、UART アクセス ジャンパー を TX, RX 共にショートしておく。また、USB と RJ-45 は共有され、USB が優先される。
USB-C は、Silicon Laboratories の USB to UART Bridge コントローラーが使用されている。従って、USB をつないでシリアルコンソールにつなぐ場合には、事前に Silicon Labs ( https://www.silabs.com/ )から CP210x VCP Drivers をインストールしておく必要がある。
RJ-45 は、Cisco/MikroTik 互換のケーブルを接続する。
設定変更
PiKVM の構成ファイルは /etc/kvmd ディレクトリにほとんどある。編集が推奨されないファイルについては、読み取り専用となっている。
/etc/kvmd/main.yaml は、プラットフォーム構成を定義するため編集しない。設定を上書きするには、 /etc/kvmd/override.yaml を使用する。また、/etc/kvmd/meta.yaml で、ホストに関する情報を設定できる。
すべてのパラメーターの完全なリストは、kvmd -m コマンドで確認・表示できる。
ホスト名を変える
# rw # hostnamectl set-hostname yournewhostname.domain # ro # reboot.
Web UI に表示されるホスト名を変える
設定ファイル /etc/kvmd/meta.yaml を修正する。
server:
host: localhost.localdomain
PiKVM の認証を無効にする
設定ファイル /etc/kvmd/override.yaml を修正する。
kvmd:
auth:
enabled: false
- https://docs.pikvm.org/faq/#first-steps
- How do I completely disable authorization in PiKVM?
Web UI の ATX機能を無効にする
設定ファイル /etc/kvmd/override.yaml を修正する。
kvmd:
atx:
type: disabled
- https://docs.pikvm.org/faq/#first-steps
- I don't need ATX functions. How do I disable this in the Web UI?
Mass Storage Drive を無効にする
設定ファイル /etc/kvmd/override.yaml を修正する。
kvmd:
msd:
type: disabled
Wake-on-LAN (one host)
設定ファイル /etc/kvmd/override.yaml を修正する。
kvmd:
wol:
mac: ff:ff:ff:ff:ff:ff
# ip: 192.0.2.4 # 255.255.255.255 By default
# port: 9 # By default
HID - Mouse Jiggler
マウスを微妙に動かすマウスジグラー機能がある。
設定ファイル /etc/kvmd/override.yaml を修正する。機能を有効にするかと起動時にONにするか。
kvmd:
hid:
jiggler:
enabled: true
active: false
GPIO - CMD - reboot
PiKVM OS を再起動する、reboot コマンドを実行するボタンを追加する。
設定ファイル /etc/kvmd/override.yaml を修正する。実行するコマンド、ボタンの表示などを設定していく。
gpio:
drivers:
reboot:
type: cmd
cmd: [/usr/bin/sudo, reboot]
scheme:
reboot_button:
driver: reboot
pin: 0
mode: output
switch: false
view:
table:
- ["reboot_button|confirm|Reboot PiKVM"]
また、リブートコマンドを sudo で実行するためには、sudo でコマンドを許可しておく必要がある。/etc/sudoers.d/custom_commands に、kvmd ユーザが実行できるように設定を追加する。
kvmd ALL=(ALL) NOPASSWD: /usr/bin/reboot
HDMI Audio (PiKVM v3 HAT only)
HDMIでオーディオもキャプチャする。PiKVM V3 ディバイスのみのサポートされ、WebRTC モードでブラウザに送信される。
- PiKVM v3 HAT の Audio capture ジャンパーを外している場合は戻す。
- コンフィグ /boot/config.txt から、dtoverlay=tc358743-audio の行も削除している場合は戻す。
- pacman コマンドで、システム・パッケージをアップデートしておく。
- janusの設定 /etc/kvmd/janus/janus.plugin.ustreamer.jcfg にオーディオの設定があることを確認する(ドキュメントだと追加しろ、だけど 2022/11/16 のイメージ (kvmd Ver.3.183、streamer Ver.5.34) だとすでに入っていた)。
- kvmd-edidconf --set-audio=yes のコマンドを実行して、HDMI EDID でオーディオを有効にする。
[root@pikvm ~]# cat /etc/kvmd/janus/janus.plugin.ustreamer.jcfg
video: {
sink = "kvmd::ustreamer::h264"
}
audio: {
device = "hw:0,0"
tc358743 = "/dev/kvmd-video"
}
[root@pikvm ~]#
[root@pikvm ~]# kvmd-edidconf
Manufacturer ID: LNX
Product ID: 0x???? (?????)
Serial number: 0x???????? (??????????)
Monitor name: PiKVM
Basic audio: no
[root@pikvm ~]# kvmd-edidconf --set-audio=yes
Manufacturer ID: LNX
Product ID: 0x???? (?????)
Serial number: 0x???????? (??????????)
Monitor name: PiKVM
Basic audio: yes
[root@pikvm ~]#
HDMI Audio が有効になると、WebRTC モードを選んだ際に「Audio volume」のスライダーが表示される。適切な音量に調整する。ブラウザの仕様で再表示させると常に0に戻される。
Tailscale VPN
Tailscale を利用して、外部から内部ネットワーク上の Pi-KVM にアクセスする。
Tailscale は、オープンソースの WireGuard をベースに、公開鍵を管理することなく、P2PのVPN接続を簡単にできるサービス。
Installation - PiKVM side
Pi-KVM のコンソールで、次のコマンドを実行してセットアップを行う。
[root@pikvm ~]# rw
[root@pikvm ~]# pacman -Syu tailscale-pikvm
:: Synchronizing package databases...
:中略
:: Proceed with installation? [Y/n] y
:: Retrieving packages...
:中略
:: Running post-transaction hooks...
[root@pikvm ~]#
[root@pikvm ~]# systemctl enable --now tailscaled
Created symlink /etc/systemd/system/multi-user.target.wants/tailscaled.service -> /usr/lib/systemd/system/tailscaled.service.
[root@pikvm ~]#
[root@pikvm ~]# tailscale up
To authenticate, visit:
https://login.tailscale.com/a/xxxxxxxxxxxx
Success.
[root@pikvm ~]#
表示されるURLにアクセスして、Tailscale にログインし、Pi-KVM をマシン登録・承認する。完了すれは、 Success が表示され完了する。
成功したら、reboot コマンドを実行して、すべてが正しく機能することを確認する。
Tailscale IP アドレスは、ip addr show tailscale0 コマンドを実行して確認できる。
[kvmd-webterm@pikvm ~]$ ip addr show tailscale0
4: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 100.xxx.xxx.xxx/32 scope global tailscale0
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link stable-privacy
valid_lft forever preferred_lft forever
[root@pikvm ~]#
Pi-KVM へアクセス
Tailscale をセットアップしたディバイスで、Tailscale に接続した状態にして、Tailscale IP アドレスで、Pi-KVM に接続する(ブラウザでアクセスする)。
Tailscale IP アドレスは、Tailscale にログインして管理者画面 https://login.tailscale.com/admin でも確認できる。
最終更新時間:2025年02月28日 12時57分33秒 指摘や意見などあればSandBoxのBBSへ。