Oracle Cloud InfrastructureのArmインスタンスでNested VMしてx86_64を動かす

Oracle Cloud InfrastructureのArmインスタンスでNested VMしてx86_64を動かす
Page content

はじめに

本記事は、下記の導入記の派生です。

Oracle Cloud Infrastructure (OCI) の無料枠「Always Free Arm」 (aarch64) のインスタンスを使えるようにした後、次に思いつくのは、「OCIのArmアーキテクチャの上で、x86_64アーキテクチャは動かせるのだろうか?」という妄想です。実際にやってみると一応は動くようなのでその記録です。

QEMUとx86_64 OSの導入手順

最初に、Oracle Cloud InfrastructureのArmインスタンスにて、RDP接続できるデスクトップ環境を用意します。下記記事の手順に沿いますと、Ubuntu 20.04上のXfceデスクトップ環境が用意できます。

ちなみに、OCIのArmインスタンス自体がQEMU+KVMにて構築されているようです。今回はこの上に仮想マシンを作る、いわゆる「Nested Virtualization」を行います。

dmesg | grep QEMU | grep BIOS
[    0.343414] DMI: QEMU KVM Virtual Machine, BIOS 1.4.1 12/03/2020

QEMUを導入

OCIのArmインスタンスに、QEMUをインストールします。Ubuntu 20.04では次の通り。

# インスタンスにて
sudo apt update
sudo apt install qemu-system-x86

x86_64のOSを導入

次に、仮想マシンにx86_64アーキテクチャのお好みのOSをインストールします。OSはここでは試しにDebianを選び、インストール画面では上から2番目のInstallを選択して適宜進めました。

# インスタンスのデスクトップ環境にて
wget https://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso
qemu-img create debian_x86_64.img 10G
# 2CPUでメモリ4GBを割り当て
qemu-system-x86_64 -drive format=raw,file=./debian_x86_64.img -cdrom debian-testing-amd64-netinst.iso -boot d -smp 2 -m 4096

仮想マシンへのOSインストールを完了した後、仮想マシン自体は次のようにすると起動できます。このNested VMの動作は高速ではないかもしれないですが、動いているだけでも偉い!と素直に思います。

# インスタンスのデスクトップ環境にて
qemu-system-x86_64 -drive format=raw,file=./debian_x86_64.img -smp 2 -m 4096

参考リンク

Oracle Cloud Infrastructure (OCI)

QEMU