RaspberryPiにProxmoxVEをインストールする


2021/11/16追記

Raspberry Pi OS Bullseyeがリリースされたことに伴い、記事を更新しました。
こちらをご覧ください。

https://qiita.com/wancom/items/c6b5ca66ab421d696beb


某散財系鯖主ProxmoxVEという仮想化プラットフォームについて話していました。

ちょうど最近、仮想化基盤について興味が出てきていたので試したいと思いつつamd64のマシンが手元にないため羨ましく眺めていました。
使えそうなマシンといえばRaspberryPiだけしかないので流石に無理でしょうと思いつつ調べたらこんなものが。

はい。早速やってみましょう!!

ちなみに上記のページにもありますがRaspberryPi4の4GB以上のモデルを使用してください。

TL;DR

  • 64bit版のRaspberryPiをダウンロードして書き込む。
    自分はこのバージョンのOSをダウンロードしましたが、おそらく他のバージョンでも大丈夫だと思います。
    2021-03-04-raspios-buster-arm64.zip
    他のバージョンはここから探してみてください。

    2021/7/23追記
    上記はデスクトップ版のイメージですが、ちゃんと探してみたら64bit版のlite版もありました。
    2021-05-07-raspios-buster-arm64-lite.zip
    2021/7/23現在最新の上記のイメージでも正常に動くことを確認したので、特に理由がなければこちらを使用したほうが余計なパッケージもないためいいかもしれません。
    最新バージョンはここから探してみてください。

  • IPアドレスを固定する

/etc/dhcpcd.conf
# 下記を自分の環境に合わせて追記する。
interface eth0
static ip_address=192.168.0.11/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
  • hostsファイルを修正する
    hostsファイルを修正しないとProxmoxが正常に起動できないので注意してください。
# おそらく下記のような行があると思うのでコメントアウトまたは削除し、
# 127.0.1.1         raspberrypi

# 代わりに下記のように2で割り当てたIPアドレスと対応する行を追加する
192.168.0.11        raspberrypi
  • RaspberryPi用のProxmoxを提供しているAPTリポジトリを追加する
curl https://gitlab.com/minkebox/pimox/-/raw/master/dev/KEY.gpg | sudo apt-key add -
curl https://gitlab.com/minkebox/pimox/-/raw/master/dev/pimox.list | sudo tee /etc/apt/sources.list.d/pimox.list
sudo apt update
  • Proxmoxをインストールする
sudo apt install pve-manager
  • 最後に再起動する

簡単に解説

自分も最近始めたてで詳しくないので細かい言及は避けますが、少しだけ。

64bit版のRaspberryPi OSをインストールする

今回は通常使われている32bit版のOSではなく、ベータ扱いの64bit版のOSを使用しました。
これは64bit版のlinuxでは仮想マシンで使用するKVMに対応しているためです。
KVMに対応していると仮想マシンの性能が大きく向上します。
興味がある方はKVMについて調べてみてください。

/etc/hostsファイルを修正する

自分で試した時に最初127.0.1.1 raspberrypiの項目を残していたところ、Proxmoxのサービスが正常に起動できませんでした。
そこまで苦戦する箇所ではありませんが、何かうまくいかない時は/etc/hostsファイルを確認してみてください。
ちなみにホスト名を変更する場合はraspberrypiをホスト名に合わせてください。

RaspberryPi用のProxmoxを提供しているaptリポジトリを追加する

有志がRaspberryPi用にパッチを当てたProxmoxのバイナリ版を配布しているようなのでそれをありがたく使わせてもらいます。
大丈夫だとは思いますが、第3者のリポジトリは自己責任で利用してください。
ここではgpg鍵の登録とリポジトリを追加する参照設定を行い、最後にパッケージリストの更新をしています。

Proxmoxをインストールする

最後にProxmoxをインストールします。
通常はproxmox-veを入れるようなのですが、参考にした掲示板の書き込みによるとカーネル周りでトラブルが起きるかもしれないとのことだったのでpve-managerをインストールしています。

ちょっと試してみる

ProxmoxをインストールしたらやはりVMを起動してみたいですよね。少しだけ試してみましょう。

Proxmoxにログインする

インストールが終わったら初めにrootアカウントにパスワードを設定します。

sudo passwd

rootアカウントのパスワードを設定したらhttps://192.168.0.11:8006/にアクセスしてみましょう。
自己署名証明書なのでアクセス時に警告画面がでますが、そのまま気にせすアクセスします。
そうするとログインを求められるのでrootアカウントでログインしましょう。
User namerootを、Passwordに先ほど設定したパスワードを入力します。
RealmLinux PAM standard authenticationを選択してください。

最後にLoginをクリックすればProxmoxにログインできるはずです。
No valid subscriptionというアラートが出ますが、気にせずOKで閉じてください。

ストレージを追加する

自分はRaspberryPiで立てたNFSのファイルサーバがあったのでそれをVMの保存先にするためストレージを追加します。他にもCIFS(Samba)やCephなど様々なストレージに対応しています。
左のツリービューでDatacenterを選択し、右のビューのStorageを選択、上のAddをクリックして追加するストレージの種類を選択します。
あとは表示に従って設定をし、ストレージを追加します。

ネットワークを使用するためブリッジを追加する

仮想マシンをインターネットに接続するためにブリッジを追加します。
ブリッジは仮想のネットワークスイッチのようなものです。
左のツリービューでDatacenter->raspberrypi(ノード)を選択し、右のビューのSystem->Networkを選択、上のCreateをクリックしてLinux Bridgeを選択します。
IPv4/CIDRにサーバのIPアドレスとネットマスクを、Gateway(IPv4)にルータのIPアドレスを、Bridge portsにeth0(使用しているNIC)を入力します。
最後にCreateをクリックします。

これだけではまだ設定が完了していないので上のApply Configurationをクリックします。
ここでおそらくifupdown2がないと言われると思うので、左のShellでターミナルを開き、インストールしましょう。

apt install ifupdown2

インストールが終わったら戻ってもう一度Apply Configurationをクリックします。

インストールディスクイメージをアップロードする

VMを作成する前にインストーラーを用意しておきましょう。
Ubuntuの公式サイトからarm64向けのインストールイメージをダウンロードします。amd64は使用できないので注意してください。
ダウンロードしたら、Proxmoxに戻り、左のツリービューでDatacenter->raspberrypi(ノード)->local(ストレージ)を選択します。
右のISO Imagesを選択し、上のUploadをクリックして、イメージファイルをアップロードします。
ちなみに自分はすでにファイルサーバ上にあったためそれをProxmoxのディレクトリ内にコピーして使用しました。

VMを作成、起動する

長らくお待たせしました。ようやくVMを起動する準備が整いました。
右上のCreate VMをクリックします。あとは画面の指示に従って設定してください。
気をつける点は

  • GeneralNameでVMの名前をつける
  • SystemBIOSOVMF(UEFI)を選択し、Add EFI Diskにチェックを入れ、Storageで保存先を選択する (なぜかSeaBIOSだとインストーラが起動しませんでした。)

ぐらいだと思います。
なぜかデフォルトで追加されるCD/DVD DriveIDEが原因で起動しないため、仮想マシンを起動する前に設定を変更します。
左のツリービューでDatacenter->raspberrypi(ノード)->VM(追加した仮想マシン)を選択します。
右のHardwareを選択し、CD/DVD Drive(ide*)Removeして、Addをクリック、CD/DVD Driveを選択します。
一番上のIDESCSIに変更し、隣の番号を空いているものに設定します。
あとは下の項目でインストールディスクイメージを選択し、Createをクリックします。

最後に設定が終わったら右上のStartをクリックして仮想マシンを起動してください。
近くにあるConsole->noVNCで仮想マシンの画面を表示できます。

あとがき

意外とこの手の記事はなさそうだったので忘れる前に記事にしてみました。
個人的にはRaspberryPiでも思った以上に動いて面白いと思いました。
ただ、ファイルサーバを使用しているためか、IOが遅いのでなんとかしたいところです。
(あとRaspberryPi4追加で2台欲しいな…)

バーっと書き上げたので誤字、脱字、間違い等があるかもしれません。
その際はご指摘いただければ幸いです。

Reference