Windows 11を学ぼう⑯ Virtualization・WSL・Hyper-V 対応解説を徹底解説

Windows

はじめに

Windows 11には、仮想化技術(Virtualization)に関する強力な機能が標準搭載されています。その代表が Hyper-V(マイクロソフト純正ハイパーバイザー)と WSL(Windows Subsystem for Linux)です。

仮想化技術を活用すると、1台のWindowsマシン上で複数のOS環境を安全に動かすことができます。開発環境の構築、セキュリティ検証、Linuxコマンドの学習など、あらゆる用途に役立ちます。

この記事では、Windows 11の仮想化技術の基礎から、Hyper-V・WSL・Windows Sandboxの実践的な使い方まで、丁寧に解説します。

1. 仮想化技術の基礎

仮想化(Virtualization)とは

仮想化とは、物理的なハードウェアリソース(CPU・メモリ・ストレージ・ネットワーク)を抽象化し、複数の仮想環境として分割・共有する技術です。

仮想化の主なメリットは次のとおりです。

  • 1台のPCで複数のOSを同時に実行できる
  • 本番環境を汚さずにテストが可能
  • スナップショットで環境を瞬時に復元できる
  • アプリケーションの分離・セキュリティ向上
  • ハードウェア資源の有効活用

ハードウェア仮想化(VT-x / AMD-V)

現代の仮想化はCPUレベルのサポートが必要です。

  • Intel VT-x(Intel Virtualization Technology):Intel製CPU向けの仮想化支援機能
  • AMD-V(AMD Virtualization):AMD製CPU向けの仮想化支援機能
  • SLAT(Second Level Address Translation):メモリアドレス変換を高速化する機能(Intel EPT / AMD RVI)

これらはBIOS/UEFIで有効化が必要な場合があります。タスクマネージャー →「パフォーマンス」→「CPU」タブで「仮想化:有効」と表示されていれば、ハードウェア仮想化が利用できます。

ハイパーバイザーの種類

ハイパーバイザーは仮想マシンを管理するソフトウェアです。大きく2種類に分かれます。

  • Type 1(ベアメタル型):ハードウェア上に直接動作するハイパーバイザー。Hyper-V、VMware ESXi、Xenなどが該当。性能が高くサーバー用途に最適
  • Type 2(ホスト型):通常のOS上でアプリとして動作するハイパーバイザー。VMware Workstation、VirtualBoxなどが該当。導入が簡単でデスクトップ用途向き

Windows 11のHyper-Vは実はType 1に近い構造で、Windows自体がHyper-V上で動く「特権パーティション」として機能します。

2. Hyper-Vとは

Hyper-Vの概要

Hyper-Vは、Microsoftが開発したハイパーバイザーベースの仮想化プラットフォームです。Windows Server 2008から導入され、現在はWindows 11 Pro / Enterprise / Educationエディションに標準搭載されています(Homeエディションは非対応)。

Hyper-Vの主な特徴は次のとおりです。

  • Windows・Linux・BSDなど複数のOSを仮想マシンとして実行可能
  • スナップショット(チェックポイント)によるバックアップ・復元
  • 仮想ネットワークスイッチによるネットワーク制御
  • 動的メモリ(Dynamic Memory)によるメモリ最適化
  • 拡張セッションモードによるクリップボード・USB共有

Hyper-Vの必要条件

  • Windows 11 Pro / Enterprise / Education(Homeは非対応)
  • 64ビットプロセッサ(VT-x または AMD-V 対応)
  • SLAT(第2レベルアドレス変換)対応
  • RAM 4GB以上(推奨8GB以上)
  • BIOS/UEFIで仮想化機能が有効になっていること

Hyper-Vの有効化手順

方法①:Windowsの機能から有効化

  • スタート → 「Windowsの機能の有効化または無効化」と検索 → 「Hyper-V」にチェックを入れてOK → PCを再起動

方法②:PowerShellから有効化

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All:Hyper-Vをコマンドで有効化するPowerShellコマンドレット

有効化後にPCを再起動すると、スタートメニューに「Hyper-Vマネージャー」が追加されます。

仮想マシンの作成

Hyper-Vマネージャーを起動し、「新規」→「仮想マシン」から作成ウィザードを使います。主な設定項目は次のとおりです。

  • 世代の選択:第1世代(レガシーBIOS対応)または第2世代(UEFI・セキュアブート対応・推奨)
  • メモリの割り当て:固定メモリまたは動的メモリ(Dynamic Memory)を選択
  • ネットワークの構成:仮想スイッチを選択(外部・内部・プライベート)
  • 仮想ハードディスク:新規作成(VHDX形式)または既存を使用
  • インストールオプション:ISOイメージから起動してOSをインストール

仮想スイッチの種類

  • 外部スイッチ:物理NICと紐づけ、仮想マシンがインターネットやLANにアクセス可能
  • 内部スイッチ:ホストOSと仮想マシン間のみ通信可能。インターネットアクセスなし
  • プライベートスイッチ:仮想マシン同士のみ通信可能。ホストOSとも通信不可

チェックポイント(スナップショット)

チェックポイントは、仮想マシンの状態を特定の時点で保存する機能です。変更前にチェックポイントを作成しておけば、問題が発生した際に一瞬で元の状態に戻すことができます。

  • 標準チェックポイント:仮想マシンの実行状態(メモリを含む)を保存
  • 運用チェックポイント:ゲストOSと連携したアプリ整合性のある状態を保存(推奨)

3. WSL(Windows Subsystem for Linux)とは

WSLの概要

WSL(Windows Subsystem for Linux)は、Windows上でLinux環境をネイティブに動かす仕組みです。仮想マシンを立ち上げることなく、WindowsのターミナルからLinuxコマンドを直接実行できます。

WSLの主な用途は次のとおりです。

  • bash・Python・Ruby・Node.jsなどLinux向け開発環境の構築
  • シェルスクリプト・awkコマンドなどLinux特有ツールの利用
  • Dockerとの連携
  • LinuxコマンドでのWindowsファイル操作
  • クロスプラットフォーム開発・学習

WSL1 と WSL2 の違い

  • WSL1:Linuxシステムコールを翻訳してWindowsカーネルで実行。Linuxカーネルは使わない。Windowsファイルシステムへのアクセスが高速。ただしLinux互換性に限界あり
  • WSL2:軽量な仮想マシン上に本物のLinuxカーネルを搭載。システムコール互換性が大幅向上。Docker・systemdが動作可能。Windowsファイルへのアクセスはやや遅いが、Linux側ファイルは高速

現在のデフォルトはWSL2です。特別な理由がない限りWSL2を使用することを推奨します。

WSLのインストール手順

Windows 11ではコマンド1つでインストールできます。

wsl –install:WSLとUbuntu(デフォルト)を自動インストールするコマンド

インストール後にPCを再起動し、UbuntuのユーザーIDとパスワードを設定すれば完了です。

別のLinuxディストリビューションをインストールする場合は次のコマンドを使います。

wsl –list –online:インストール可能なLinuxディストリビューションの一覧を表示するコマンド

wsl –install -d Debian:Debianを指定してインストールするコマンド(DistributionName部分は任意)

WSLの基本コマンド

wsl:デフォルトのLinuxディストリビューションを起動するコマンド

wsl –list –verbose:インストール済みディストリビューションの一覧と状態(WSL1/WSL2)を表示するコマンド

wsl –set-default-version 2:新規インストール時のデフォルトバージョンをWSL2に設定するコマンド

wsl –set-version Ubuntu 2:既存のディストリビューションをWSL2に変換するコマンド

wsl –shutdown:すべてのWSLインスタンスを停止するコマンド

wsl –update:WSLカーネルを最新版に更新するコマンド

wsl –export Ubuntu ubuntu-backup.tar:WSLディストリビューションをtarファイルにエクスポート(バックアップ)するコマンド

wsl –import Ubuntu C:\WSL\Ubuntu ubuntu-backup.tar:エクスポートしたtarファイルからWSLディストリビューションを復元するコマンド

ファイルシステムの相互アクセス

WSL2とWindowsのファイルシステムは相互にアクセスできます。

  • WindowsからWSLへ:エクスプローラーのアドレスバーに \\wsl$ または \\wsl.localhost と入力するとWSLのファイルシステムが表示される
  • WSLからWindowsへ:WSL内から /mnt/c/ でCドライブ、/mnt/d/ でDドライブにアクセス可能

パフォーマンス上の注意点:WSL2でWindowsファイルを頻繁に読み書きする場合、Linux側(/home/ユーザー名/)にファイルを置く方が処理速度が大幅に向上します。

WSLの詳細設定(.wslconfig)

WSL2のメモリ・CPU・スワップなどはホームディレクトリの .wslconfig ファイルで制御できます。

  • ファイルパス:C:\Users\ユーザー名\.wslconfig
  • 設定例:[wsl2] セクションに memory=4GB(最大メモリ)、processors=2(CPU数)、swap=2GB(スワップ)などを記述
  • 設定変更後は wsl --shutdown で再起動が必要

systemdの有効化

WSL2ではsystemdを有効化することができます。これによりsystemctlコマンドやsystemdサービス管理が利用可能になります。

  • WSL内の /etc/wsl.conf ファイルに次の内容を追記:[boot] セクションに systemd=true
  • 設定後は wsl --shutdown で再起動すると有効化される

4. Windows Sandbox

Windows Sandboxとは

Windows Sandboxは、使い捨ての隔離されたWindowsデスクトップ環境を起動できる機能です。Sandboxを閉じると中のデータはすべて消去され、ホストOSには影響が残りません。

主な用途は次のとおりです。

  • 信頼できないソフトウェアの安全なテスト
  • マルウェアの動作確認(セキュリティ研究)
  • 一時的なブラウジング環境
  • ソフトウェアインストールの影響確認

Windows Sandboxの必要条件と有効化

  • Windows 11 Pro / Enterprise / Education(Homeは非対応)
  • 仮想化機能(VT-x / AMD-V)が有効であること

有効化手順:スタート →「Windowsの機能の有効化または無効化」→「Windows Sandbox」にチェックを入れてOK → 再起動

起動後は、スタートメニューから「Windows Sandbox」を検索して実行します。

Sandbox設定ファイル(.wsb)

拡張子 .wsb のXMLファイルを作成することで、起動時の設定をカスタマイズできます。主な設定項目は次のとおりです。

  • vGPU:仮想GPUの有効・無効(Default / Enable / Disable)
  • Networking:ネットワークの有効・無効(Default / Enable / Disable)
  • MappedFolders:ホストのフォルダをSandbox内にマウントする設定
  • LogonCommand:起動時に自動実行するコマンドの指定

5. 仮想化に関するPowerShellコマンド

Hyper-V管理コマンドレット

Get-VM:すべての仮想マシンとその状態を一覧表示するコマンドレット

Start-VM -Name “VMName”:指定した仮想マシンを起動するコマンドレット

Stop-VM -Name “VMName”:指定した仮想マシンを停止するコマンドレット

New-VM -Name “TestVM” -MemoryStartupBytes 2GB -Generation 2:新しい仮想マシンを作成するコマンドレット

Checkpoint-VM -Name “VMName” -SnapshotName “Snap1”:仮想マシンのチェックポイント(スナップショット)を作成するコマンドレット

Restore-VMCheckpoint -Name “VMName” -SnapshotName “Snap1” -Confirm:$false:チェックポイントから仮想マシンを復元するコマンドレット

Get-VMSwitch:仮想スイッチの一覧を表示するコマンドレット

New-VMSwitch -Name “ExternalSwitch” -NetAdapterName “Ethernet” -AllowManagementOS $true:外部仮想スイッチを新規作成するコマンドレット

Get-VMMemory -VMName “VMName”:仮想マシンのメモリ設定を確認するコマンドレット

仮想化機能の確認コマンド

systeminfo:システム情報を表示するコマンド。出力の末尾に「Hyper-Vの要件」欄があり、仮想化が有効かどうかを確認できる

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V:Hyper-Vのインストール状態を確認するコマンドレット

bcdedit /set hypervisorlaunchtype auto:ハイパーバイザーを自動起動に設定するコマンド(Hyper-Vが起動しない場合に試す)

6. 仮想化技術の選び方

用途に応じて、どの仮想化技術を使うか選択が重要です。主な比較は次のとおりです。

  • Hyper-V:Windows・Linuxの完全な仮想マシンが必要な場合。ネットワーク分離・スナップショット管理が必要な場合。開発・テスト・セキュリティ検証用VM
  • WSL2:Linuxのコマンドラインツールや開発環境が欲しい場合。DockerやKubernetes(Minikube)を使いたい場合。軽量・高速なLinux環境を求める場合
  • Windows Sandbox:一時的な使い捨てWindows環境が必要な場合。信頼性不明のソフトウェアをテストしたい場合。設定不要ですぐ使える隔離環境
  • VMware / VirtualBox:HomeエディションでもGUI仮想化環境を使いたい場合。より高度なネットワーク設定やUSBパススルーが必要な場合

7. トラブルシューティング

Hyper-Vが有効化できない場合

  • 確認①:タスクマネージャー →「パフォーマンス」→「CPU」で「仮想化:有効」を確認。無効の場合はBIOS/UEFIで VT-x / AMD-V を有効にする
  • 確認②:Windowsのエディションを確認。HomeエディションはHyper-V非対応(Pro以上が必要)
  • 確認③:RAMが4GB以上あるかを確認
  • 対処:BIOSで仮想化機能を有効にした後、bcdedit /set hypervisorlaunchtype auto を管理者PowerShellで実行してから再起動

WSLが起動しない・エラーが出る場合

  • エラー「WslRegisterDistribution failed with error 0x8007019e」:WSL機能が有効化されていない。「Windowsの機能」から「Linux用Windowsサブシステム」を有効化
  • エラー「Please enable the Virtual Machine Platform」:「仮想マシン プラットフォーム」機能が無効。同じく「Windowsの機能」から有効化
  • WSL2のカーネル更新が必要なエラーwsl --update を実行してWSLカーネルを更新
  • 起動が遅い・重い.wslconfig でメモリ・CPU上限を設定して制限する

WSL2のファイルパーミッション問題

  • Windowsのファイルシステム(/mnt/c/)上のファイルはWSL2内で777(全権限)に見えることがある
  • WSL内の /etc/wsl.conf[automount] セクションを追加し、options = "metadata" を設定することでパーミッション管理が可能になる

Windows SandboxがグレーアウトされてONにできない場合

  • BIOS/UEFIで仮想化機能が無効になっている可能性がある。設定を有効にしてから再試行
  • Windows Homeエディションでは利用不可(Pro / Enterprise / Education が必要)

まとめ

Windows 11の仮想化技術は、開発・学習・セキュリティ検証のあらゆる場面で活躍する強力な機能です。

  • Hyper-V:Windows・Linuxの完全仮想マシン。スナップショットや仮想ネットワークなど豊富な機能を持つMicrosoft純正ハイパーバイザー
  • WSL2:本物のLinuxカーネルをWindows上で軽量動作。開発環境・Dockerとの連携に最適
  • Windows Sandbox:使い捨ての安全な実験環境。閉じると痕跡が一切残らない

それぞれの特性を理解し、用途に応じて使い分けることが大切です。仮想化技術を活用して、Windows 11をより安全で柔軟に使いこなしましょう。

次回は、Windows 11のバックアップとシステム復元の完全ガイドについて詳しく解説します。

タイトルとURLをコピーしました