{{category Raspberry Pi,nolink}}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 以降のビルドではデフォルトで使用可能になっている) *Pi-KVM **https://pikvm.org/ **https://docs.pikvm.org/ **https://github.com/pikvm/pikvm !!!セットアップ !!イメージファイルのダウンロード サイト 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 が初期化が行われる。 そのため、この行を消してしまうと必要な初期処理が行われない。 ** https://docs.pikvm.org/on_boot_config/ !!ネットワーク設定 !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 以降のイメージから)。 ** https://docs.pikvm.org/on_boot_config/#setting-up-wi-fi !イーサネット(有線) の固定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 !!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 で読み取り専用に戻る必要がある。 ** https://docs.pikvm.org/_passwd/ !!アップデート 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 ** https://docs.pikvm.org/_update_os/ !!アップデート(旧) これは、該当機能が必要な場合のみに推奨される。 それ以外の場合は、物理的にディバイスの近くにいて、回復手段として SDカード を作り直せる場合のみに実行する。 PiKVM OS は Arch Linux ARM がベースになっており、pacman コマンドで更新ができる。 # rw # pacman -Syu # reboot pacman は、ロールバックできるように古いバージョンが保存されている。 更新し、すべての機能の確認が終わったら、SDカードの容量を圧迫しないように、クリアする。 # rw; rm -rf /var/cache/pacman/pkg; ro !!!設定変更 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 * https://docs.pikvm.org/msd/#disable-msd !!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 * https://docs.pikvm.org/wol/#simplified-method-one-host !!HID - Mouse Jiggler マウスを微妙に動かすマウスジグラー機能がある。 設定ファイル /etc/kvmd/override.yaml を修正する。機能を有効にするかと起動時にONにするか。 kvmd: hid: jiggler: enabled: true active: false * https://docs.pikvm.org/mouse_jiggler/ !!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 * https://docs.pikvm.org/gpio/#cmd !!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に戻される。 * https://docs.pikvm.org/audio/ !!!Tailscale VPN [Tailscale|https://tailscale.com/] を利用して、外部から内部ネットワーク上の Pi-KVM にアクセスする。 Tailscale は、オープンソースの WireGuard をベースに、公開鍵を管理することなく、P2PのVPN接続を簡単にできるサービス。 * https://docs.pikvm.org/tailscale/ !!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: 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 でも確認できる。