ヒスねこTechBlog

日々の気になる技術をまとめてます。

Raspberry Pi 3にQEMUを入れたりlibvirtを試したり

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書込みを行います。

www.raspberrypi.com

このとき、OS選択後に出てくる右下の歯車マーク(Advanced options)を押して、以下の項目を設定しておきました。ラズパイ出始めの時と比べると、圧倒的に環境構築しやすくなっていて驚きです。

  • Set hostname
  • Enable SSH
  • Set username and password
  • Set locale settings

Raspberry Pi Imager

ラズパイに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をインストールして再起動までしようと思ったけれど、いったんここまで。