果報

二度寝して待つ

初代Raspberry Pi Zero W/WHでPiKVMを動かす

はじめに

長年ホコリを被っていたRaspberry Pi Zero WHにPiKVMをインストールして、自宅サーバにリモートKVMで接続できるようにしました。

pikvm.org

なお、Raspberry Piが「Zero 2」ではなく「Zero」、つまり初代というのがミソで、ハードウェアが古すぎるため、公式サポートは数年前に終了しています。

そのため、この記事は「それでも何らかの理由でRaspberry Pi ZeroでPiKVMを構築したい」という方に向けて書きます。

用意するもの

PiKVMを使うには、Raspberry Pi本体の他にいくつか必要なものがあります。

  • HDMI-CSIアダプタ
  • HDMIケーブル
  • MicroUSBケーブル(データ転送用、電源用)
  • MicroSDカード(32GB以上、Class10推奨)

MicroUSBケーブルは、データ転送と電源を兼ねる(KVM接続先から電源を供給する)こともできますが、その場合は接続先の電源が落ちたらPiKVMにも接続できません。

今回はAmazonで以下の商品を購入しました(MicroUSBケーブル(電源用)とMicroSDカードは家に余ってたものを流用)。

HDMI-CSIアダプタ

HDMIからの出力信号をRaspberry Piに入力する機器。PiKVMはHDMI-CSIの他にHDMI-USBも対応していますが、Raspberry Pi Zeroの場合はHDMI-CSIのみなので注意。

なお、Amazonの商品ページではPiKVMが推奨するTC358743チップの搭載有無が不明でしたが、製品Wikiにはちゃんと書いてありました。

HDMIケーブル

構造上、ケーブルが長いと余ってしまうため、短いコイルタイプを選択。

USBドングル拡張ボードキット

MicroUSBケーブル(データ転送用)の代わりに、少々値が張るものの専用のUSB拡張ボードを購入。機能というより見た目が目的です。

組み立て

Raspberry PiをUSB拡張ボードに取り付け後、Raspberry PiとHDMI-CSIアダプタを付属のFPC(フラットケーブル)で接続します。

実際に完成したものがこちら。この組み立てのために六角スペーサーも追加で購入しました(完全に散財)。

真横から見るとこんな感じ。FPCが湾曲して基板に接触してるのが気になりますが、最悪ダメになってもスペアあるので、しばらく様子見…。

ちなみに、電源を入れるとアクリル部分が青く光ってカッケーです。

PiKVMのインストール

まず、PiKVMのイメージファイルをダウンロードします…が、ここで問題が発生。

Raspberry Pi Zeroのサポートは終了しているので、ダウンロードページには案内がありません。

ただ、かろうじて公式アーカイブが残っていたので、ここからv2-hdmi-zerow-20211120.img.xzをダウンロードします。

files.pikvm.org

MicroSDカードにダウンロードしたPiKVMのイメージを書き込みます。今回はRaspberry Piが公開している「Raspberry Pi Imager」を使いました。

www.raspberrypi.com

書き込み画面で以下を選択します。

  • Raspberry Piデバイス:Raspberry Pi Zeroを選択
  • OS:「Use custom」を選択後、「v2-hdmi-zerow-20211120.img.xz」を選択
  • ストレージ:MicroSDカードのドライブを選択

書き込み完了後、MicroSDカードをエクスプローラで開き、直下にあるpikvm.txtをメモ帳などで開きます。

以下の公式ガイドを参考に、Wi-Fiなどの設定を行います。

docs.pikvm.org

最終的に、今回の設定は以下になりました。

FIRST_BOOT=1
WIFI_ESSID='XXXXXXXXXX'
WIFI_PASSWD='xxxxxxxxxx'
ETH_ADDR=192.168.0.153/24
ETH_DNS=192.168.0.53
ETH_GW=192.168.0.1

PiKVMの起動

MicroSDカードをRaspberry Piに差し込み、HDMIケーブル、データ転送用USBをKVMの対象機器に接続後、起動します。

起動後、ウェブブラウザからhttps://pikvmにアクセスするとログイン画面が表示されます。初期のUsername/Passwordは「admin/admin」です。

ログイン後、左端の「KVM」をクリックすると、PiKVM経由で自宅サーバのデスクトップ画面を表示できました。

反応速度は許容範囲内で、操作感も悪くないです。

PiKVMへのアクセス

PiKVM本体への接続は、ウェブUI上の「Terminal」、またはSSHを利用するのが便利です。

docs.pikvm.org

WindowsからSSHで接続する場合、PowerShellを起動し、以下のコマンドでログインできます。rootユーザの初期Passwordは「root」です。

> ssh root@pikvm

前述のとおり、PiKVMは既にサポートを終了しているので、できることは限られています。ただし、リポジトリのURLを書き換えることで、PiKVMのベースとなるArch Linuxが2022年時点まで公開していたリソースに更新することは可能です。

# su -
# rw
# nano /etc/pacman.d/mirrorlist

mirrorlistにあるリポジトリのURLを以下のとおり書き換えます。

# Server = http://de3.mirror.archlinuxarm.org/$arch/$repo
Server = http://tardis.tiny-vps.com/aarm/repos/2022/01/08/$arch/$repo

ただし、あくまで更新できるのはArch Linuxが公開していたもののみです。PiKVMが公開していたARMv6版のリソースも探しましたが、残念ながら見つかりませんでした。

おわりに

本当はTailscaleを入れて自宅外からでも接続できるようにしたかったのですが、過去のバージョンを利用することによるセキュリティ懸念があるため断念しました。かといって「Zero 2」を買うほどの意欲もないので、ひとまずこの状態で使うつもりです。

副次効果として、自宅サーバ(Ubuntu)にKVM接続できるようになったことで、xrdpがたまに不安定で接続できないストレスが解消されました。多少の遅延はありますが、確実に接続できるほうがはるかにマシです。

HDMI-CSIアダプタなど、準備段階でのハードルはあるものの、一度構築すれば基本的にどんな機器にも応用が利くので、おすすめです。