ARMv8から仮想化支援機能が実装されているので、Raspberry Pi 3(Cortex-A53コア)以降はKVMが使用可能とのこと。前々から気になっていたlibvirtのお試しもかねて導入してみました。
HW準備
ラズパイは4まで出ていることはもちろん知っているんですが、昨今の半導体不足もあって入手できておらず。とりあえず家に転がっていた3で試します。
それから、せっかくの機会なのでUSBブートでSSDに置いたOSを起動してみます。今回はバッファロー製のものを使用しました。これも家に転がってた。
OSセットアップ
Raspberry Pi OSは64bit版でないとKVM対応していない(おそらく互換性の問題で仮想化支援命令を使えない)。よって64bit版をインストール。
Raspberry Pi Imagerを使用して、PCにUSB接続したSSDのフォーマットとOS書込みを行います。
このとき、OS選択後に出てくる右下の歯車マーク(Advanced options)を押して、以下の項目を設定しておきました。ラズパイ出始めの時と比べると、圧倒的に環境構築しやすくなっていて驚きです。
- Set hostname
- Enable SSH
- Set username and password
- Set locale settings
ラズパイにSSDをUSB接続して電源投入。問題なく起動することが確認できたらSSH接続も試します。「ssh ユーザ名@ホスト名」でPCから接続できるはず。
QEMUとlibvirtの導入
次にQEMUを入れました。
$ sudo apt update $ sudo apt upgrade $ sudo apt install qemu-system
この時点ではlibvirtは入っていない。virshも触ってみたかったので以下で導入。
$ sudo apt install libvirt-clients virtinst
# 動作確認
$ virsh list
Id Name State
--------------------
仮想マシンの作成
仮想マシン起動のお試しとして、QCOW2(QEMUのディスクイメージ)を作成し、Alpine Linuxのaarch64版を立ち上げてみました。
$ mkdir images $ cd images # Alpine LinuxのISO入手(バージョンは適宜選択のこと) $ wget https://dl-cdn.alpinelinux.org/alpine/v3.16/releases/aarch64/alpine-standard-3.16.0-aarch64.iso # ディスクイメージと仮想マシンの作成 $ qemu-img create -f qcow2 alpine.qcow2 8G $ virt-install --name alpine --ram 512 --disk=alpine.qcow2,bus=virtio --boot hd --cdrom alpine-standard-3.16.0-aarch64.iso -v
しばらく待つとAlpine Linuxが立ち上がります(RAM割り当てに失敗する場合は--ramの引数を小さくすること)。
ディスクイメージにAlpineをインストールして再起動までしようと思ったけれど、いったんここまで。