x86_64マシンで構築した自宅内のProxmox VE (Proxmox Virtual Environment) はサーバ実験などで重宝している (参考: Proxmox VEで仮想化プラットフォームを簡単構築 [2022-04-09])。そのProxmox VEをRaspberry Pi 4でも動かせると知ったので試してみよう。ラズパイ4なら、搭載メモリ量やマシンパワーは抑えられてしまうけれども、x86_64マシンよりも省電力な仮想化プラットフォームになりうる。
項目 | 内容 | 備考 |
---|---|---|
ラズパイ | Raspberry Pi 4 Model B (4GB) | 余り物 |
SATA SSD | Samsung SSD 850 EVO 500GB | 余り物 |
2.5インチHDDケース | USB 3.0接続のもの | 余り物 |
【国内正規代理店品】Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品【RS・OKdo版】
Raspberry Pi RS・OKdo
Samsung 870 EVO 500GB SATA 2.5インチ 内蔵 SSD MZ-77E500B/EC 国内正規保証品
日本サムスン
今回の試みのひと工夫として、最初に、Raspberry Pi 4をmicroSDカードではなく外付けのUSB-SSDから起動するようにしておく。
ラズパイ4本体のbootloaderを最新にしておくために、ラズパイ4をUSB接続のSSDから起動する方法(USBブート) | ラズパイダ を参考に次の作業を進める。
sudo raspi-config
> 6 Advanced Options > A7 Boot ROM Version > E1 Latest: Use the latest version boot ROM software を選択 (再起動する)sudo raspi-config
> 6 Advanced Options > A6 Boot Order > B2 USB Boot: Boot from USB if available, otherwise boot from SD Card を選択当環境の場合、bootloaderのバージョンは次のように変化した。
## bootloader更新前
$ vcgencmd bootloader_version
Apr 29 2021 17:11:25
version c2f8c388c4ee37ad709ace403467d163e8dd91ce (release)
timestamp 1619712685
update-time 1643339737
capabilities 0x0000001f
## bootloader更新後
$ vcgencmd bootloader_version
2022/10/18 11:57:44
version 23aa699d0e70ed543c1ddcd17bed6446bfb6866e (release)
timestamp 1666090664
update-time 1667475307
capabilities 0x0000007f
$ sudo rpi-eeprom-update
BOOTLOADER: up to date
CURRENT: Tue 18 Oct 10:57:44 UTC 2022 (1666090664)
LATEST: Tue 18 Oct 10:57:44 UTC 2022 (1666090664)
RELEASE: stable (/lib/firmware/raspberrypi/bootloader/stable)
Use raspi-config to change the release.
VL805_FW: Dedicated VL805 EEPROM
VL805: up to date
CURRENT: 000138a1
LATEST: 000138a1
上記で用意したmicroSDカードの内容をまるごとUSB-SSDへ複製する。(※今回はUSB-SSDで起動するOSとしてmicroSDカードと同じ「Raspberry Pi OS (64-bit) Lite」を想定しているため、この複製の手順を実施しています)
/dev/sda
、コピー先 (USB-SSD) = /dev/sdb
とわかる## 作業用パソコンにて
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
〜(snip)〜
sda 8:0 1 14.9G 0 disk
├─sda1 8:1 1 256M 0 part /media/USER/boot
└─sda2 8:2 1 14.6G 0 part /media/USER/rootfs
sdb 8:16 0 465.8G 0 disk
〜(snip)〜
## 作業用パソコンにて
sudo dd if=/dev/sda of=/dev/sdb bs=256M
sudo raspi-config
> 6 Advanced Options > A1 Expand Filesystem: Ensures that all of the SD card is available を選択 (再起動も選択する)$ sudo fdisk -l /dev/sda
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SSD 850 EVO 500G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0523bb15
Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/sda2 532480 976773167 976240688 465.5G 83 Linux
上記の設定を行って起動デバイスとしてUSB-SSDが利用できるようにしたラズパイ4で、OSの再インストールを行う時には、自分に染み付いているこれまでのラズパイの常識を忘れる必要がある。なぜなら、ラズパイ4をUSB-SSDから起動できるのだからmicroSDカードへのイメージ焼きはもう不要で、Raspberry Pi Imagerで任意のOSイメージを「USB-SSD」へ焼いてそのUSB-SSDからラズパイ4を起動すればよいので。
Raspberry Piに移植されたProxmox VE (OSS仮想化プラットフォーム) の「Pimox」を、手順1で用意したラズパイ4にインストールする。
https://[PimoxのIPアドレス]:8006/
を開く## CONF_SWAPSIZE=100 の100を1024へ変更し、swapのサービスを再起動
sudo vim /etc/dphys-swapfile
sudo service dphys-swapfile restart
Pimox管理画面を見る限り、本家Proxmox VEとの機能的な違いは見つけられない。妙な感覚なのだがついつい、小さい筐体の割に頼もしいなと思ってしまった。
Pimoxの上に仮想マシン (VM; Virtual Machine) を作ってみる。仮想マシンのOSとして、ここではUbuntu Server 22.04 LTS (ARMv8/AArch64) を選択した。
ubuntu-22.04.1-live-server-arm64.iso
をPimoxのストレージに保存するsudo apt install qemu-guest-agent
)さらに、仮想のUbuntu ServerへRDP接続 (リモートデスクトップ接続) を行いたいならば、次のコマンドを実施すればよい (参考: Oracle Cloud InfrastructureのArmインスタンスでリモートデスクトップしたいのでxrdpを使う: Ubuntu編 [2021-06-14])。
sudo apt install xrdp
sudo apt install xfce4
sudo sed -i.original -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config # ←「allowed_users」の行を置換
echo "xfce4-session" > ~/.xsession
Pimox (Proxmox VE) には仮想マシン用のそれと同様にコンテナ用の管理機能も備わっているので、Pimoxの上にコンテナ (LXC Container) も作ってみる。コンテナのOS環境として、ここではRocky Linux 9 (arm64) を選択した。
rootfs.tar.xz
は、https://uk.lxd.images.canonical.com/images/ から探っていくと次のURLだとわかるrockylinux-9.tar.xz
が使用できるようになるので、コンテナを作成する$ sudo wget -O /var/lib/vz/template/cache/rockylinux-9.tar.xz https://uk.lxd.images.canonical.com/images/rockylinux/9/arm64/default/20221104_02:06/rootfs.tar.xz
$ ls -l /var/lib/vz/template/cache/
total 97308
-rw-r--r-- 1 root root 99642792 Nov 4 12:10 rockylinux-9.tar.xz
uname -a
とcat /etc/os-release
を実行したところ、Pimox環境のカーネルの上にRocky Linux 9環境が乗っていることが確認できる実はProxmox VE上にコンテナを作ったのは今回が初めて。コンテナをGUIで簡単に扱えそうだ。特にラズパイ4はRAMが4GBもしくは8GBと少なめであるし、隔離環境を作る類の実験がもしコンテナで済むなら、私としては新技術習得の意味も含めて、仮想マシンよりも軽量なコンテナに慣れていくほうが良さそうである。
また、冒頭に掲げた「省電力な仮想化プラットフォーム」の実現度合いについてはどうであるか。今回のシステム全体の消費電力をワットモニターで実測してみたところ、ラズパイ4に外付けSSDをUSB接続し、Pimox (Proxmox VE) で仮想マシン1個とコンテナ1個を稼働させて特に負荷はかけていない状態で、消費電力は「5W前後」であった。他との比較をしていないが、期待を裏切らない数値ではあると思う。
サンワサプライ ワットモニター 消費電力(W)・積算電力量(kWh)・積算時間(Hour)・積算電力料金(円)・CO2排出量(kg)測定可能 TAP-TST8N 電源コード式 ホワイト
サンワサプライ(Sanwa Supply)