環境
Raspberry Pi 4 Model B(8GB)
SATA SSD(ADATA製)120 GB
SATA USB変換ケーブル(GROOVY UD-3101P)
事前準備(ホストマシンの構築)
ここは省略気味で説明します。Raspberry Pi ImagerでRaspberry Pi OS Liteの64bit版をSDカードやSSDに書き込んでください。64bit版でないと仮想化できないので要注意。
書き込みの前にRaspberry Pi Imagerの歯車マークからSSH接続を有効にしておいてください。その際、ユーザー名とパスワード、ホスト名の設定をしてください。変更することをお勧めしますが、記事中では話を簡単にするためにデフォルトのユーザー名=pi、パスワード=raspberrypi、ホスト名=picloudで説明します。
書き込みが終わったら作ったブートメディアをラズパイにセットし、電源を入れましょう。少し待って、コマンドプロンプトからSSH接続します。雛形は以下の通りです。
ssh <ユーザー名>@<ホスト名>.local
//もしくは
ssh <ユーザー名>@<ipアドレス>
今回の場合は以下のようになります。ラズパイに割り当てられたipアドレスを確認するには、ルーターの管理画面の接続されているデバイス一覧などから確認してください。
ssh pi@raspberrypi.local
//もしくは
ssh pi@192.168.*.***
パスワードを求められたら入力し、以降の設定に続きます。
IPアドレスの固定
サーバーとして稼働してもらうのに再起動ごとにIPアドレスが変更されると困るので固定します。
まだどのデバイスにも割り当てられていないIPアドレスを選択します。ルーターの管理画面から確認してください。割り当て方はご自身のネットワークのサブネットマスクなどを確認して設定します。ですが、大雑把に説明すればたいていの場合、192.168.*.2~192.168.*.255の中から決める(*は環境によって1だったり11だったりするがどちらも同じ数字)ことになります。よって、ピリオドで区切られた4つ目の区画を被らない任意のものにします。ちなみに192.168.1.1はルーターのIPアドレスになっていることが多いです。
上記を守ってIPアドレスを決めたら実際に設定します。以下のコマンドで設定ファイルを開き、
sudo nano /etc/dhcpcd.conf
設定を追記します。雛形は以下。
interface wlan0
static ip_adress=<任意のIP>/<サブネットマスク>
static routers=<ルーターのIP>
static domain_name_servers=<DHCPサーバーのIP>
<ルーターのIP>と<DHCPサーバーのIP>は一般的には同じIPです。分からない場合はルーターの管理画面から確認してください。私の環境では次のようになりました。
interface wlan0
static ip_adress=192.168.1.101/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
完了したら、「ctrl + S」で保存し、「ctrl + X」で編集画面を閉じます。
再起動して設定を反映させます。
sudo reboot
今後SSH接続する際はホスト名でログインするか、今回設定したIPアドレスで接続します。
お約束(パッケージ更新)
以下のコマンドでパッケージ一覧の更新とパッケージの更新を行います。
sudo update
sudo upgrade
Proxmoxのインストール
ルートでログインします。パスワードが求められたら入力します。
sudo -s
Proxmoxのインストール用シェルスクリプトをダウンロードします。
curl https://raw.githubusercontent.com/pimox/pimox7/master/RPiOS64-IA-Install.sh > RPiOS64-IA-Install.sh
権限を変更します。
chmod +x RPiOS64-IA-Install.sh
以下のようにしてシェルスクリプトを実行します。実行したら案内通りに設定を行います。
> ./RPiOS64-IA-Install.sh
Enter new hostname e.g. RPi4-01-PVE : picloud
Enter new static IP and NETMASK e.g. 192.168.0.100/24 : 192.168.1.101/24
Is 192.168.1.1 the correct gateway ? y / n : y
New password:(Proxmoxのrootログインに使う)
Retype new password:(再度入力)
Proxmoxにアクセス
Proxmoxのインストール終了時に「ここにアクセスして管理画面を開いてくださいね」という趣旨の表示がされるので、それをブラウザのURLバーにコピペすればOKです。以下のようなアドレスになっているはずです。
<自分で決めたラズパイのIPアドレス>:8006
ポート番号が8006であることに注意しましょう。私は今回ラズパイのIPアドレスを192.168.1.101に決めたので、次のようになります。
192.168.1.101:8006
接続時に「この接続ではプライバシーが保護されません」という警告が出ますが、chromeの場合「詳細設定」>「192.168.1.101 にアクセスする(安全ではありません)」を選んで先に進みます。
ログイン画面が表示されます。ユーザー名は「root」、パスワードは設定したもの、レルムは「Linux PAM standard authentication」、言語は「Japanese」を選び、ログインします。
警告が出ますが、無視します。
トップ画面はこのようになっています。
新規仮想マシン(VM)の作成~起動まで
ISOファイルのアップロード
VMを作成する前にVMで使うOSのISOファイルをアップロードする必要があります。今回はUbuntu ServerのArm版を使用します。
①「local」>②「ISOイメージ」を選択し、③「URLからダウンロード」を押します。「アップロード」をすることもできますが、私の環境ではエラーが出てしまいアップロードできませんでした。なお、ラズパイにsftpなどで事前にisoファイルを所定のディレクトリに置いておくことでもProxmoxに認識させることができます(筆者はこの方法でやりました)。
次にダウンロードURLを指定します。
URLはこちらのUbuntu for ARMのページにあるダウンロードボタンを右クリック>「リンクのアドレスをコピー」でコピーします。
URLの欄にペーストし「クエリURL」を押下します。ファイル名やサイズなどが自動で判別されます。OKであればダウンロードします。
VMの新規作成
仮想マシンを作成します。画面右上の「VMを作成」を押すと設定画面がポップアップします。
デフォルトでOKです。「名前」はVMを判別しやすい名前にしたい場合のみ設定します。
「ストレージ」をlocalに、「ISOイメージ」は先ほどアップロードしたものを指定します。
この設定は重要です!「BIOS」を既定のSeaBIOSからOCMF(UEFI)に変更します。デフォルトの状態ではVMが起動しません。
変更したら追加設定が出てくるので「EFI Storage」でlocalを選択します。
デフォルトでOKです。
任意のものに変更してください。デフォルトでも動きます。
任意の値にしてください。ただしホストマシンのメモリ容量を超過しない値に設定する必要があります。
デフォルトでOKです。
最終確認し、良ければ「完了」を押下します。
実はラズパイでProxmoxを使う場合はVMはまだ起動できません。「ハードウェア」から既存の「SD/DVDドライブ(ide2)」を削除し、「SD/DVDドライブ(scsi1)」に修正する必要があります。
画面左のVM一覧から作成したVMを選択し、「ハードウェア」>「SD/DVDドライブ(ide2)」を押下、「削除」を押してください。
次に「追加」>「CD/DVDドライブ」を選択。
以下の画像の通り「バス/デバイス」は「SCSI」で「1」を、「ストレージ」はlocal、「ISOイメージ」は使用するOSのISOファイルを指定します。
VMの起動
ようやく起動できる状態になりました。
①VMを選択し、②「開始」を押します。
VM上のOSの初期設定などをするために③「コンソール」に入ります。
数十秒待つとProxmoxのロゴが表示されます。いつまでたっても表示されない場合、VMの設定が間違っている可能性があります。
Proxmox側の設定は以上です。この先は上記のコンソール画面にて仮想マシンのOSの初期設定を行ってください。
VMの削除
仮想マシンを削除したい場合は対象のVMを選択した状態で、画面右上の「More」>「削除」を選びます。
削除するVMのIDを入力して削除します。