x86_64のLinuxMint/Ubuntu環境でARM64(KVM/QEMU)の仮想マシンを高速に動作させる方法

1.概要

2024年にubuntu-20.04環境のKVMでubuntu-20.04-arm64を動かしました。今回、LinuxMint環境で動作確認を再度作成したので、記事をリライトします。x86_64環境でarm64を動かすにはqemuのaarch64のエミュレーションを利用します。Virt-Managerでubuntuのarm64の環境にisoからインストールすることは可能ですが、遅くて実用的ではありません。理由はエミュレーションなので命令単位に実行するためです。

今回の試験は、KVM上でLinuxMint/Ubuntuのarm64が動作するのを確認して、arm64のPC購入の検討をする予定でした。従って、インストールすることでなく、動かすことが目標なので作成済み仮想マシンから導入するのが早道と考え直しました。その内容を記述します。

2.詳細

(1) LinuxMint環境

環境はLinuxMint 22.3です

(a)KVM環境を構築

$ sudo apt -y install virt-manager qemu-system

(b)ubuntu-24.04 server仮想マシンイメージ取得

$ https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-arm64.img

Diskサイズを10Gに変更

$ qemu-img resize noble-server-cloudimg-arm64.img 10G

(c)仮想マシン設定に必要な情報の作成

user-dataをvimで作成します

#cloud-config
user: ubuntu
password: password
chpasswd: { expire: false }
ssh_pwauth: true

user-data.isoを作成します

$ touch meta-data
$ genisoimage -output ./user-data.iso -volid cidata -joliet -rock user-data meta-data

(d)仮想マシンのインストール

$ virt-install \
--connect qemu:///system \
--name ubuntu-arm \
--vcpus 2 --ram 4096 \
--hvm --virt-type qemu \
--arch aarch64 \
--os-type linux --os-variant ubuntu24.04 \
--import --noreboot \
--disk ./noble-server-cloudimg-arm64.img \
--disk ./user-data.iso,device=cdrom

Virt-Managerにubuntu-armの仮想マシンが表示されるので起動します。
login情報はuser-dataに記載しています

(2) Ubuntu-20.04環境(参考)

新しくubuntu-20.04.6の環境を構築後、作業をします。
環境はAMD 4core Memory 16GB SSD 128GBです。

(a) qemu-system-aarch64の準備

$ sudo apt install -y qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
$ sudo apt install -y qemu-system-arm qemu-efi-aarch64 qemu-efi-arm

(b) arm版Ubuntuイメージ(cloud-init版)の準備

ubuntu-20.04のimageを利用します
$ wget https://cloud-images.ubuntu.com/focal/current/forcal-server-cloudimg-arm64.img

10GBに拡張します
$ qemu-img forcal-server-cloudimg-arm64.img 10G

(c) NoCloudデータの準備

user-dataをvimで作成します

#cloud-config
user: ubuntu
password: password
chpasswd: { expire: false }
ssh_pwauth: true

user-data.isoを作成します

$ touch meta-data
$ genisoimage -output ./user-data.iso -volid cidata -joliet -rock user-data meta-data

(d) 仮想マシンのインストール

Virtual Machine Managerを起動しても仮想マシンは存在しません。
virtコマンドで仮想マシンを作成します。

$ virt-install \
--connect qemu:///system \
--name ubuntu-arm \
--vcpus 2 --ram 4096 \
--hvm --virt-type qemu \
--arch aarch64 \
--os-type linux --os-variant ubuntu20.04 \
--import --noreboot \
--disk $PWD/forcal-server-cloudimg-arm64.img \
--disk $PWD/user-data.iso,device=cdrom

(e) 仮想マシンの起動

Virtual Machine Managerを起動すると、ubuntu-armが存在し、起動できます。
loginはcloud-initの処理が終了するのを待ってからです。

3.所見

ubuntu 20.04で試験をしたときは、isoファイルから導入することに気が付きませんでした。LinuxMintを利用した今回は、Virt-Managerからubuntu-24.04-live-server-arm64.isoをアーキテクチャ aarch64に直接導入することを最初に試しました。しかし、非常に遅くて耐えられません。そこで、ubuntu-20.04と同じ方式に変えました。

導入元が仮想マシンなので、すぐに試すことができます。実行速度はLocal環境のKVMにx86_64の仮想マシンを起動したときと比較すると非常に遅い。この環境を普通に使うことは無いと考えます。arm64で試す必要がある方向けの環境です。

アーキテクチャの違いを埋めることが、大きな処理負担になると実感しました。arm64のPC購入はこの時点ではハードルが高いと感じて、止めました。arm64のPCを使う理由が見つからなかったことが理由です。

参考

コメント