Oracle Cloud InfrastructureのArmインスタンスでNested VMしてx86_64を動かす
Page content
はじめに
本記事は、下記の導入記の派生です。
- Oracle Cloud InfrastructureのArmインスタンスでリモートデスクトップしたいのでxrdpを使う: Oracle Linux編 [2021-06-13]
- Oracle Cloud InfrastructureのArmインスタンスでリモートデスクトップしたいのでxrdpを使う: Ubuntu編 [2021-06-14]
Oracle Cloud Infrastructure (OCI) の無料枠「Always Free Arm」 (aarch64) のインスタンスを使えるようにした後、次に思いつくのは、「OCIのArmアーキテクチャの上で、x86_64アーキテクチャは動かせるのだろうか?」という妄想です。実際にやってみると一応は動くようなのでその記録です。
- 対象インスタンス: Oracle Cloud Infrastructure (OCI) 上の「OCI Ampere A1 Compute」の、
- Ubuntu 20.04 (aarch64)
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)
- オラクル、Armベースのプロセッサのパワーをコア時間あたり1セントで提供、エコシステムを拡張し、 アプリ開発を迅速化 | Oracle 日本
- Nested KVM Virtualization on Oracle Cloud Infrastructure