Ubuntu 環境で KVM 仮想化環境を構築するには、通常、以下のコアステップを順に実行します:ハードウェア確認 ➔ コンポーネントのインストール ➔ ユーザー権限の設定 ➔ ネットワークの設定 ➔ 仮想マシンの作成。
本ガイドは Ubuntu 20.04、22.04、24.04 LTS(デスクトップ版・サーバー版の両方)に対応しています。
1. CPU のハードウェア仮想化支援の確認
まず、CPU がハードウェア仮想化(Intel の vmx または AMD の svm)をサポートしているか確認します:
egrep -c '(vmx|svm)' /proc/cpuinfo
- 出力が 0 より大きい場合:CPU は仮想化をサポートしています。
- 出力が 0 の場合:BIOS / UEFI 設定に入り、
Intel VT-xまたはAMD-Vを有効にしてください(一部のクラウドサーバーでは、ネストされた仮想化がサポートされていない場合があります)。
また、システムアーキテクチャが 64 ビットであることを確認します(KVM の必須条件):
uname -m
# x86_64 または aarch64 と出力されるはずです
2. KVM および関連ツールのインストール
パッケージリストを更新し、KVM スィートをインストールします:
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager virtinst
コアコンポーネントの説明:
qemu-kvm:KVM コアエミュレーションモジュール。libvirt-daemon-system:統一された管理インターフェースを提供する libvirt デーモン。libvirt-clients:virshなどのコマンドライン管理ツール。bridge-utils:ネットワークブリッジ設定用ツール(オプション。高度なブリッジが不要な場合は省略可能)。virt-manager:仮想マシンのグラフィカル管理インターフェース(GUI、ヘッドレスサーバーではインストール不要)。virtinst:virt-installやvirt-cloneなどのコマンドライン作成ツール。
3. インストールの検証とサービスの起動
libvirtd サービスの状態を確認して起動し、KVM カーネルモジュールがロードされていることを確認します:
# libvirtd のステータス確認
sudo systemctl status libvirtd
# 実行されていない場合は、起動して自動起動を有効化
sudo systemctl enable --now libvirtd
# KVM モジュールがロードされているか検証(kvm_intel または kvm_amd が含まれていること)
lsmod | grep kvm
4. 現在のユーザーをグループに追加(root 不要での管理)
すべての操作に sudo をつけずに済むよう、現在のユーザーを libvirt および kvm グループに追加します:
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
コマンド実行後、一度ログアウトして再度ログインするか、次のコマンドを実行してグループメンバーシップを即時反映させます:
newgrp libvirt
5. ネットワーク設定(オプション)
KVM はデフォルトで default という名前の NAT 仮想ネットワーク(セグメント 192.168.122.0/24)を作成し、仮想マシンがホスト経由で外部ネットワークにアクセスできるようにします。
# デフォルトネットワークの確認
virsh net-list --all
# 起動していない場合は、有効化して自動起動を設定
virsh net-start default
virsh net-autostart default
ブリッジネットワーク(Bridge モード)の設定
仮想マシンをホストマシンと同じローカルネットワークに配置する必要がある場合は、Netplan を使用してネットワークブリッジを設定できます。
ネットワーク設定ファイルを編集します(例:/etc/netplan/01-netcfg.yaml、ファイル名はシステムによって異なります):
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
bridges:
br0:
interfaces: [enp3s0]
dhcp4: true
ネットワーク設定を適用します:
sudo netplan apply
注意:ブリッジは物理ネットワークインターフェースを占有します。操作ミスによるネットワーク切断を防ぐため、事前に別のリモート接続手段(IPMI や追加の NIC など)が確保されていることを確認してください。後で仮想マシンを作成する際、ネットワークとして
br0を選択します。
6. 最初のエンドユーザー仮想マシンの作成
方法 A:グラフィカルインターフェース (virt-manager)
- 端末で
virt-managerと入力するか、アプリケーションメニューから起動します。 - File ➔ New Virtual Machine の順に進み、ISO イメージ、メモリ、ディスクサイズなどを選択します。
- ネットワーク設定のステップで、NAT ネットワークの場合は
defaultを選択し、事前に作成したブリッジネットワークの場合はbr0を選択します。
方法 B:コマンドラインインターフェース (virt-install)
Ubuntu Server をインストールする場合の例:
sudo virt-install \
--name ubuntu-test \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu-test.qcow2,size=20,format=qcow2 \
--os-variant ubuntu22.04 \
--network network=default \
--graphics spice,listen=0.0.0.0 \
--console pty,target_type=serial \
--cdrom /path/to/ubuntu-22.04-live-server-amd64.iso
--disk:qcow2形式を使用し、フォーマットを簡素化してディスク容量を節約します。--network:デフォルトの NAT ネットワークを使用します。- VNC / SPICE 経由でリモート接続する場合は、
--graphics vnc,listen=0.0.0.0に変更できます。
7. 一般的な管理コマンド (virsh)
| 操作 | コマンド |
|---|---|
| すべての仮想マシンの確認 | virsh list --all |
| 仮想マシンの起動 | virsh start <vm-name> |
| 通常のシャットダウン | virsh shutdown <vm-name> |
| 強制シャットダウン | virsh destroy <vm-name> |
| 仮想マシンとディスクの削除 | virsh undefine <vm-name> --remove-storage all |
| テキストコンソールへの接続 | virsh console <vm-name> |
8. リモート管理(オプション)
- SSH + Virsh によるリモート管理:
virsh -c qemu+ssh://user@host/system list - Web コントロールパネル (Cockpit):ブラウザから
sudo apt install cockpit cockpit-machineshttps://<ホストIP>:9090にアクセスします。
トラブルシューティング
- 権限エラー (Permission denied):
ユーザーが
libvirtおよびkvmグループに追加されており、セッションに再ログインしていることを確認してください。 - 仮想マシンがインターネットに接続できない:
defaultネットワークが起動しているか、ホストマシンで IP フォワーディングが有効になっているか(cat /proc/sys/net/ipv4/ip_forwardが1であること)を確認してください。 kvm: permission deniedエラー: 現在のユーザーに/dev/kvmへのアクセス権がない可能性があります。ls -l /dev/kvmを実行してグループがkvmになっているか確認し、ユーザーがそのグループに含まれていることを確認してください。