必要なパッケージのインストール
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