0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【KVM/QEMU】検証環境構築方法(VirtualBox/VMwareWorkstation/Hyper-v)

Posted at

はじめに

LPIC305に向けて仮想化環境について学習すべく、学習環境の構築を行いましたが参考となるドキュメントが少なく苦労したため、KVM/QEMUについて学習する方向けに環境構築方法をまとめました。

1. 環境

Hyper-vに関しては、検証端末が異なりますので2環境分の情報を記載します。
また、ここではホストOSは仮想化ソフトウェアでインストールした仮想マシンのことを指し、ゲストOSはKVMで構築した仮想マシンとします。
なお、本環境は入れ子の仮想環境となるため、PCのCPU・メモリ・HDDが十分あることを前提にした内容としておりますので、ご了承ください。

※下記に構成図兼名称定義を示します
 例えば、お手元の端末をPC、PCにインストールした仮想化ソフトウェアを通じて構築した仮想マシンをホストOS、ホストOS上で更に仮想化したマシンをゲストOSと定義します

1-1. 環境①

環境①は、Oracle VirtualBoxおよびVMware WorkStation Proを使用した環境の情報です

 環境  ソフトウェア バージョン
PC Microsoft Windows Windows 11 Home
CPU Intel Corei7
仮想化ソフトウェア Oracle VirtualBox 7.0.8 r 156879
仮想化ソフトウェア VMware Workstation 17 Pro 17.6.1 build-24319023
ホストOS Ubuntu Desktop 24.04.1
ゲストOS Ubuntu Server 24.04.1

1-2. 環境②

環境②は、Hyper-Vを使用した環境の情報です
Windows Proが必要だったため、Hyper-Vについては別のPCを使用しています

 環境  ソフトウェア バージョン
PC Microsoft Windows Windows 11 Pro
CPU Intel Corei7
仮想化ソフトウェア Hyper-V
ホストOS Ubuntu Desktop 24.04.1
ゲストOS Ubuntu Server 24.04.1

2. 各環境の設定手順

  • VirtualBox、VMwareWorkstation Pro、Hyper-Vの各環境毎の仮想マシン構築手順を記載します

  • 各ソフトウェアに関しては、デフォルト設定としているため、インストール手順は割愛します

  • PC自体の仮想化機能(BIOS設定)については、有効化されていることが前提となります
    ※BISO設定は、端末によって操作手順が異なるため、ここでは記載しませんので、各端末のマニュアルを参考にしてください

  • BIOS画面の出し方は、下記を参考にしてください

  • QEMUでは、デスクトップ環境が必要になるため、Ubuntu Desktopをインストールします
    そのため、事前にインストールメディアをダウンロードしてください
    下記サイトから、Ubuntu Desktopをダウンロード可能です

2-1. VirtualBox

VirtualBoxで環境構築する場合の手順です
インストールについては下記で実施したことがあるため、参考にしてみてください
※ただし、インストールしているバージョンは異なります

①下記設定をして「次へ」を押下します

  • 名前:任意の仮想マシン名
  • Folder:仮想マシンファイルを保存する場所
  • ISO Image:インストールに使用するISOファイル(ここではubuntu-24.04.1-desktop-amd64.iso)
  • Skip Unattended Installation:有効

image.png

②メモリとCPUを設定して、「次へ」を押下します
 ※ここでは、メモリ8192GB、CPU2コアで設定しています

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
例えば、ゲストOSがUbuntu Serverであれば、4GB+2GB=6Gよりも大きいメモリ容量にします
また、PCのリソースを超えない範囲で設定してください

image.png

③ハードディスクを設定して、「次へ」を押下します
 ※ここでは、50GBで設定しています

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
例えば、ゲストOSがUbuntu Serverであれば、25GB+5GB=30Gよりも大きいメモリ容量にします
また、PCのリソースを超えない範囲で設定してください

image.png

④設定内容問題ないことを確認したら、「完了」を押下します
image.png

⑤仮想マシン作成されたら、ネットワーク設定を行い、インターネット接続できるようにします

注意
ここでは、ブリッジアダプター(PCと同じNW環境になる設定)を実施しています
共用のNW環境の場合は、IP重複する可能性等があるため、NAT+ホストオンリーアダプター等を使用した方法を行ってください

image.png

⑥CPUの仮想化支援機能を有効化します
 IntelのCPUの場合は、グレーアウトしているため、コマンドで有効化します

image.png

コマンドプロンプト
> VBoxManage modifyvm 仮想マシン名 --nested-hw-virt on

注意
パスが通っていない場合は、VirtualBoxのインストールフォルダまで移動したうえで実行してください
デフォルトのインストール先は「C:\Program Files\Oracle\VirtualBox」です

以上でVirtualBoxの設定は完了です
続いて、「3. Ubuntu Desktopインストール手順」を実施します

2-3. VMware Workstation Pro

VMware Workstation Proで環境構築する場合の手順です
なお、VMware Workstation Proのインストール手順は割愛します
下記の公式サイトをご確認ください

①「新規仮想マシンの作成」を押下し、インストーラディスク(ここではubuntu-24.04.1-desktop-amd64.iso)を設定して、「次へ」を押下します
image.png

②ユーザー名とパスワードを設定して、「次へ」を押下します
image.png

③仮想マシン名と仮想マシンファイルを保存する場所を設定して、「次へ」を押下します
image.png

④ディスク容量を設定して、「次へ」を押下します

  • ディスク最大サイズ:Ubuntu Desktop25GB+ゲストOS分の容量
  • 「仮想ディスクを単一ファイルとして格納」を選択

image.png

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
例えば、ゲストOSがUbuntu Serverであれば、25GB+5GB=30Gよりも大きいメモリ容量にします
また、PCのリソースを超えない範囲で設定してください

⑤赤枠の設定内容が問題ないことを確認したら、「ハードウェアをカスタマイズ」を押下します
image.png

⑥メモリ容量を調整します

image.png

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
例えば、ゲストOSがUbuntu Serverであれば、25GB+5GB=30Gよりも大きいメモリ容量にします
また、PCのリソースを超えない範囲で設定してください

⑦CPUの設定をします
 仮想化エンジンの「Inter VT-x/EPT または AMD-V/RVIを仮想化」を有効化します
image.png

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
また、PCのリソースを超えない範囲で設定してください

⑧NWの設定をして、「閉じる」を押下します
image.png

注意
ここでは、ブリッジアダプター(PCと同じNW環境になる設定)を実施しています
共用のNW環境の場合は、IP重複する可能性等があるため、NAT、ホストオンリー等を使用した方法を行ってください

⑨設定内容が問題ないことを確認して、「完了」を押下します
image.png

以上でVMwareWorkstationProの設定は完了です
続いて、「3. Ubuntu Desktopインストール手順」を実施します

2-3. Hyper-V

Hyper-V環境で構築する場合の手順です
Hyper-Vは通常のHomeエディションでは使用できないため、エディションを確認してみてください

※確認方法
Windowsキー+Rを押下>ファイル名を指定して実行>「winver」と入力してOK
赤枠がWindows Proであること(Homeの場合は、2-1. VirtualBoxか2-2. VMware Workstation Proの手順を実施してください)
image.png

①Windowsの機能の有効化または無効化で、Hyper-Vを有効化して、再起動します

image.png
image.png

②Hyper-Vマネージャーを開き、新規を押下します

image.png

③開始する前ににて、「次へ」を押下します
image.png

④名前と場所の指定にて、名前に任意の仮想マシン名を入力して、「次へ」を押下します
image.png

⑤世代の指定にて、第2世代を選択して、「次へ」を押下します
image.png

⑥メモリの割り当てにて、起動メモリを設定して、「次へ」を押下します

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
例えば、ゲストOSがUbuntu Serverであれば、4GB+2GB=6Gよりも大きいメモリ容量にします
また、PCのリソースを超えない範囲で設定してください

image.png

⑦ネットワークの構成にて、「Default Switch」を選択して、「次へ」を押下します
image.png

⑧仮想ハードディスクの接続にて、「仮想ハードディスクを作成する」を選択します
 ディスクサイズを設定して、「次へ」を押下します

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
例えば、ゲストOSがUbuntu Serverであれば、25GB+5GB=30Gよりも大きいメモリ容量にします
また、PCのリソースを超えない範囲で設定してください

image.png

⑨要約にて、赤枠内の内容が問題ないことを確認して、「完了」を押下します
image.png

⑩Hyper-Vマネージャーから、PC名>ホストOSの仮想マシン名を選択して、「設定」を押下します
 セキュリティを選択して、セキュアブートを無効にします

image.png

image.png

⑪CPUの設定を修正します

注意
Ubuntu Desktopの最小要件のスペック+KVM上に構築するゲストOSへ割り当てるリソース分以上の容量を確保するようにしてください
また、PCのリソースを超えない範囲で設定してください

image.png

⑫PowerShellにて、下記コマンドを実行してネステッド仮想化設定を有効化します

コマンド
> Set-VMProcessor -VMName 仮想マシン名 -ExposeVirtualizationExtensions $true
確認コマンド
> Get-VM | Get-VMProcessor | Select-Object VMName, ExposeVirtualizationExtensions

※参考:https://tech.sadari.co.jp/server-os/windows-server/nested-hyperv-vm/

以上でHyper-Vの設定は完了です
続いて、「3. Ubuntu Desktopインストール手順」を実施します

3. Ubuntu Desktopインストール手順

KVM+QEMUを使用する際には、デスクトップ環境が必要になるため、Ubuntuデスクトップをインストールします

①仮想マシンを起動します
 Ubuntuへようこそ画面が表示されるため、言語「日本語」を選択して、「次」を押下します
image.png

 ※下記画面の場合、オレンジのボタンを押下すると①の画面に遷移します
image.png

②アクセシビリティ設定にて、設定せずに「次」を押下します
image.png

③キーボードレイアウトにて、「日本語」を選択して、「次」を押下します
image.png

④インターネットに接続にて、「有線接続を使用」を選択して、「次」を押下します
image.png

⑤Ubuntuを試用またはインストールにて、「Ubuntuをインストール」を選択して、「次」を押下します
image.png

⑥インストールの種類にて、「対話式インストール」を選択して、「次」を押下します
image.png

⑦アプリケーションにて、「規定の選択」を選択して、「次」を押下します
image.png

⑧コンピューターを最適化にて、ソフトウェアインストールせずに「次」を押下します
image.png

⑨ディスクのセットアップにて、「ディスクを削除してUbuntuをインストールする」を選択して、「次」を押下します
image.png

⑩アカウント設定にて、下記設定をして、「次」を押下します

  • あなたの名前:任意のユーザー名
  • コンピューターの名前:任意のサーバー名
  • ユーザー名:任意のユーザー名(ログインする際のユーザー名です)
  • パスワードを決めてください、パスワードをもう一度入力:任意のパスワード
  • ログイン時にパスワードを要求する:有効

image.png

⑪タイムゾーンを選択してくださいにて、タイムゾーンをAsia/Tokyoを選択して、「次」を押下します
image.png

⑫インストールの準備完了にて、設定内容が問題ないことを確認して、「インストール」を押下します
image.png

⑬インストールが完了するまで待機します
image.png

⑭完了したら、「今すぐ再起動」を押下します
image.png

⑮再起動後、Ubuntu24.04.1 LTSへようこその画面が表じされるため、右上の「次へ」を押下します
image.png

⑯Enable Ubuntu Proにて、「Skip for now」を選択して、「次へ」を押下します
image.png

⑰Ubuntuの改善を支援するにて、「いいえ」を選択して、「次へ」を押下します
image.png

⑱準備完了にて、「完了」を押下します
image.png

以上で、Ubuntu Desktopのインストールは完了です

4. QEMUインストール

KVMはLinuxに含まれるカーネルモジュールであるため、新たにインストールを行う必要はありません
ただし、KVMを使用するにはハードウェアエミュレータが必要になるため、エミュレータツールであるQEMUを使用します
KVMとQEMUを連携することで完全仮想化が実現できます

  • QEMUとは
    下記引用文の通り、オープンソースのハードウェアエミュレータ兼仮想化ツールであり、CPUやメモリ等の仮想化モデルを提供するソフトウェアです

QEMU is a generic and open source machine emulator and virtualizer.

QEMU can be used in several different ways. The most common is for System Emulation, where it provides a virtual model of an entire machine (CPU, memory and emulated devices) to run a guest OS. In this mode the CPU may be fully emulated, or it may work with a hypervisor such as KVM, Xen or Hypervisor.Framework to allow the guest to run directly on the host CPU.

※引用:https://www.qemu.org/docs/master/about/index.html

 
Ubuntu環境へのQEMUインストールは下記の公式サイトを参考に実施します

①画面左下のメニューを押下し、「端末」を押下して、ターミナルを開きます
 ※SSH接続で設定しても問題ありません

image.png
image.png

②CPUの仮想化拡張機能が利用できるか確認します
 ※svmまたはvmxがあれば問題ありません

コマンド
grep -E 'svm|vmx' /proc/cpuinfo
結果
$ grep -E 'svm|vmx' /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch pti ssbd ibrs ibpb stibp tpr_shadow ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat vnmi md_clear flush_l1d arch_capabilities
vmx flags       : vnmi invvpid ept_x_only ept_ad tsc_offset vtpr mtf ept vpid unrestricted_guest ple ept_mode_based_exec
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch pti ssbd ibrs ibpb stibp tpr_shadow ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat vnmi md_clear flush_l1d arch_capabilities
vmx flags       : vnmi invvpid ept_x_only ept_ad tsc_offset vtpr mtf ept vpid unrestricted_guest ple ept_mode_based_exec

②カーネルモジュール確認します
 kvmがあれば問題ありません

コマンド
$ sudo lsmod | grep kvm
結果
$ lsmod | grep kvm
kvm_intel             487424  0
kvm                  1404928  1 kvm_intel

③パッケージリスト更新します

コマンド
$ sudo apt-get -y update

④パッケージアップグレード

コマンド
$ sudo apt-get -y upgrade

⑤QEMUインストールします

コマンド
$ sudo apt-get -y install qemu-system

これでQEMUのインストールは完了です

5. ゲストOSインストール

ゲストOSをインストールしてみます
ホストOS(Ubuntu Desktop)上にインストールメディアを用意してください
※ここでは、Ubuntu Server 22.04をインストールしますが、CentOSやalpine linux等、他のOSを使用しても問題ありません

①ディスク作成

コマンド
$ qemu-img create -f qcow2 [作成するディスク名フルパス] 10G

※ホームディレクトリ上のimagesディレクトリ上にubuntu.qcow2ファイルを作成しています

結果
$ qemu-img create -f qcow2 ~images/ubuntu.qcow2 10G
Formatting 'images/ubuntu.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16

②ディスク情報を確認します

コマンド
$ qemu-img info [作成したディスクのフルパス]
結果
$ qemu-img info ~/images/ubuntu.qcow2
image: /home/user/images/ubuntu.qcow2
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false
Child node '/file':
    filename: /home/user/images/ubuntu.qcow2
    protocol type: file
    file length: 192 KiB (197120 bytes)
    disk size: 196 KiB

※checkオプションを使うとエラーが無いか確認できます

出力例
$ qemu-img check ~/images/ubuntu.qcow2
No errors were found on the image.
Image end offset: 262144

③OSインストールします

  • qemu-system-x86_64:インストールコマンド(ホストシステムがx86_64のため末尾がx86_64のコマンドを使用しています)
  • enable-xkm:KNMの完全仮想化を有効化します
  • m:ゲストOSに割り当てるメモリを記載します(MiB単位)
  • boot:ブート順を設定(ISOからインストールしたいためdを選択します)
  • cdrom:参照するISOファイルのフルパスを記載します
  • 最終行:インストール先のディスクのフルパスを記載します
コマンド
$ qemu-system-x86_64 \
 -enable-kvm \
 -m 2048 \
 -boot d \
 -cdrom [isoファイルのフルパス] \
 [インストールするディスクのフルパス]

情報
※ISOファイルは~/iso/ubuntu-24.04.1-live-server-amd64.iso、ディスクは①で作成したものを使用しています
※「qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.svm [bit 2]」と表示されますが、QEMU画面は開くので静観します

結果
$ qemu-system-x86_64 \
> -enable-kvm \
> -m 2048 \
> -boot d \
> -cdrom ~/iso/ubuntu-24.04.1-live-server-amd64.iso \
> ~/images/ubuntu.qcow2
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.svm [bit 2]

別窓でQEMUの画面が表示されます
image.png

④Ubuntuの場合、インストール完了後に再起動が促されますが、このままRebootするとcdromから起動されてしまうため、ブート設定を変更します

image.png

⑤[View]>[compatmonitor0]を押下します(Ctrl+Alt+2でも問題ありません)
image.png

⑥下記コマンドを実行して、HDDから起動するように設定変更します

【コマンド】

(qemu) boot_set c

【結果】
image.png

⑦[View]>[VGA]を押下します(Ctrl+Alt+1でも問題ありません)
image.png

⑧[Reboot Now]を押下します
image.png

⑨再起動すると、ログイン画面が表示されます

【結果】
image.png

⑩ログイン確認が完了したら、シャットダウンします

コマンド
$ sudo shutdown -h now

⑪仮想マシンを起動してみます
 ログイン画面が別窓で開けば問題ありません

コマンド
$ qemu-system-x86_64 \
 -enable-kvm \
 -m 2048 \
 -boot c \
 [インストールしたディスクのフルパス]

【結果】
image.png

Appendix. スナップショット作成

スナップショットを取得してみましょう

qemuコマンドでの作成方法

①ゲストOSをシャットダウンしておきます
 ※起動中の場合は下記のようなエラーが発生します

エラー例
$ qemu-img snapshot -l ~/images/ubuntu.qcow2
qemu-img: Could not open '/home/user/images/ubuntu.qcow2': Failed to get shared "write" lock
Is another process using the image [/home/user/images/ubuntu.qcow2]?

①スナップショット確認
 ※この時点では何も表示されません

コマンド
qemu-img snapshot -l [ディスクイメージのフルパス]

※ディスクイメージが~/images/ubuntu.qcow2であれば下記のようになります

コマンド例
qemu-img snapshot -l ~/images/ubuntu.qcow2

②スナップショット作成

コマンド
qemu-img snapshot -c [スナップショット名] [ディスクイメージのフルパス]

※スナップショット名をsnapshot1、ディスクイメージが~/images/ubuntu.qcow2とすると下記のようになります

コマンド
qemu-img snapshot -c snapshot1 ~/images/ubuntu.qcow2
コマンド例
qemu-img snapshot -l ~/images/ubuntu.qcow2
Snapshot list:
ID        TAG               VM SIZE                DATE     VM CLOCK     ICOUNT
1         snapshot1             0 B 2024-11-26 04:50:55 00:00:00.000          0

③スナップショットリストア

スナップショット作成後に何かしらソフトウェアインストールを行った後に実施してみてください
インストール前の状態に戻るはずです

コマンド
qemu-img snapshot -a [リストアしたい地点のスナップショット名] [ディスクイメージのフルパス]

④スナップショット削除

コマンド
qemu-img snapshot -d [削除するスナップショット名] [ディスクイメージのフルパス]

※スナップショット名をsnapshot1、ディスクイメージが~/images/ubuntu.qcow2とすると下記のようになります

コマンド例
qemu-img snapshot -d snapshot1 ~/images/ubuntu.qcow2

QEMUモニタでの作成方法

①QEMU画面で[View]>[compatmonitor0]を押下します(Ctrl+Alt+2でも問題ありません)

②下記コマンドを実行してスナップショットを作成します

コマンド
(qemu) savevm

③下記コマンドを実行してスナップショットが作成されたことを確認します

コマンド
(qemu) info snapshots

【結果】
image.png

④何かしらソフトウェアインストールを行った後に、スナップショットリストアコマンドを実行します
 ※実行後ソフトウェアインストール前に戻っていることを確認します

コマンド
(qemu) loadvm [TAG名]

※③の結果の場合

コマンド例
(qemu) loadvm vm-20241126084550

⑤下記コマンドを実行して、スナップショットを削除します

コマンド
(qemu) delvm [TAG名]

※③の結果の場合

コマンド例
(qemu) delvm vm-20241126084550

⑥スナップショットを確認します

コマンド
(qemu) info snapshots

【結果】

image.png

おわりに

今回は様々なホストOS型の仮想化ソフトウェアを使ったQEMU検証環境の構築手順をご紹介しました
より高度な操作をする場合はlibvirtをインストールしますが、今回はQEMUを使った操作のみに絞ってみました
余力があれば、libvirtについてもまとめてみたいと思います
また、NW環境周りの設定する場合は、bridge-utils(現在は非推奨)やipコマンドを使用します

参考

  • QEMUインストール方法

  • QEMUコマンドオプション

  • QEMUモニタオプション

  • UbuntuサーバのKVM導入まとめ

  • KVM事前要件確認

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?