Logo

libvirt を使わずに QEMU + KVM で VM を起動する

libvirt を使ったツール (virsh 等) を使わずに qemu コマンドから VM を起動するときの備忘録

Last Modified: 2025/04/29



必要なパッケージのインストール

sudo dnf install qemu qemu-kvm

KVM が有効か確認

> lsmod | grep kvm
kvm_intel             454656  0
kvm                  1482752  1 kvm_intel

ディスクイメージの用意

今回は Amazon Linux 2023 を起動させてみます。 Amazon Linux 2023 のディスクイメージは以下にあるのでここからダウンロード。

> wget https://cdn.amazonlinux.com/al2023/os-images/2023.7.20250331.0/kvm/al2023-kvm-2023.7.20250331.0-kernel-6.1-x86_64.xfs.gpt.qcow2

seed.iso の用意

VM に接続するために seed.iso を用意します。これはデフォルトの状態だとパスワード等が設定されていないためです。

https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/outside-ec2-configuration.html

デフォルトでは、Amazon Linux 2023 の仮想化マシンイメージにはユーザーパスワードや SSH キーはプロビジョニングされず、DHCP を経由して最初に検出されたネットワークインターフェイスからネットワーク設定を取得します。つまり、デフォルトでは、追加の設定を行わないと、生成された仮想化マシンに接続する方法はありません。

手順は以下を参考 https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/seed-iso.html

> mkdir seedconfig && cd seedconfig
> vim meta-data
> cat meta-data
#cloud-config
local-hostname: takloose
> vim user-data
> cat user-data
#cloud-config
#vim:syntax=yaml
users:
# A user by the name 'ec2-user' is created in the image by default.
  - default
  - name: ec2-user
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    lock_passwd: false
    plain_text_passwd: amazon
    ssh_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCBTtK6d8aOK5D/tcdvrWGlrEYhKSwTWee

> mkisofs -output seed.iso -volid cidata -joliet -rock user-data meta-data
I: -input-charset not specified, using utf-8 (detected in locale settings)
Total translation table size: 0
Total rockridge attributes bytes: 331
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
183 extents written (0 MB)
> ls seed.iso
seed.iso

起動

qemu-system-x86_64 \
  -enable-kvm \
  -m 2048 \
  -cpu host \
  -smp 2 \
  -boot d \
  -cdrom ./seed.iso \
  -drive file=al2023-kvm-2023.7.20250331.0-kernel-6.1-x86_64.xfs.gpt.qcow2,format=qcow2 \
  -nic user,model=virtio,hostfwd=tcp::2222-:22 \
  -nographic \
  -serial mon:stdio