Windows 10バージョン21H1でWSL2をインストールする。
WSL2本体のインストール
管理者権限でコマンドプロンプト(Windows PowerShell)を開き、WSLの関連コンポーネントを一括インストールする。
管理者権限コマンドプロンプト(Windows PowerShell)での作業
c:\>wsl --install Installing: Virtual Machine Platform Virtual Machine Platform has been installed. Installing: Windows Subsystem for Linux Windows Subsystem for Linux has been installed. Downloading: WSL Kernel Installing: WSL Kernel WSL Kernel has been installed. Downloading: Ubuntu The requested operation is successful. Changes will not be effective until the system is rebooted.
管理者権限コマンドプロンプト(Windows PowerShell)での作業
(日本語表示だった場合)
c:\>wsl --install インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 ダウンロード中: WSL カーネル インストール中: WSL カーネル WSL カーネル はインストールされました。 ダウンロード中: Ubuntu 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
ここでインストールされるのは、次の3つ
- Virtual Machine Platform(仮想マシン プラットフォーム)
- Windows Subsystem for Linux(Linux 用 Windows サブシステム)
- WSL Kernel(WSL カーネル)
wslコマンドがインストールに対応する前は、コントロールパネルの「Windowsの機能」でインストールされていたコンポーネントだ。
Windowsの機能(参考)で確認すると、すでに「Linux用Windowsサブシステム」「仮想マシンプラットフォーム」がインストールされているのがわかる
現在のところGUI App Support(WSLg)はインストールされない。(21H2ではインストールされるのだろうか)
なお、インストールメッセージ中の「Downloading: Ubuntu」が何なのかはわからない。 wsl -l -v
で調べる限り、ディストリビューションは何もインストールされていない。ディストリビューションは、実際にWSLを利用するユーザ権限で後ほどインストールすればよい。
管理者権限コマンドプロンプト(Windows PowerShell)での作業
c:\>wsl --list --verbose Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。 ディストリビューションは Microsoft Store にアクセスしてインストールすることができます: https://aka.ms/wslstore
インストール時のメッセージの通り、いったんWindows 10を再起動する。
WSLのシステムコンポーネント類を(念のため)アップデートする
管理者権限コマンドプロンプト(Windows PowerShell)での作業
c:\>wsl --update 更新をチェック中... 利用できる更新はありません。 カーネル バージョン: 5.10.16
当然、セットアップ直後なのでアップデートは存在しない。
次に、WSLのデフォルト・バージョンを2に設定する。設定後、念のため既定のバージョンが2に変更できたかを再確認する。
管理者権限コマンドプロンプトでの作業
C:\> wsl --set-default-version 2 WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください この操作を正しく終了しました。 C:\> wsl --status 既定のバージョン: 2 Linux 用 Windows サブシステムの最終更新日: 2021/08/21 WSL の自動更新が有効になっています。 カーネル バージョン: 5.10.16
「Linux用Windowsサブシステム」「仮想マシンプラットフォーム」の有効化を再確認
wslコマンドがインストールに対応したのちは、この作業はやらなくてよいとされているが、私が作業した2台のマシンのうち1台ではこの作業は必要だった。(参考資料 Microsoft WSLドキュメント『Windows 10 用 Windows Subsystem for Linux のインストール ガイド』)
これらの機能が有効化(インストール)されているかどうかは、次のコマンドで確認できる。この例では「状態 : 有効」と表示されているので、既に有効であるとわかる。
管理者権限Windows PowerShellでの作業
C:\> dism /online /Get-FeatureInfo /featurename:VirtualMachinePlatform 展開イメージのサービスと管理ツール バージョン: 10.0.19041.844 イメージのバージョン: 10.0.19043.1165 機能情報: 機能名 : VirtualMachinePlatform 表示名 : 仮想マシン プラットフォーム 説明 : 仮想マシンのプラットフォーム サポートを有効にします 再起動が必要 : Possible 状態 : 有効 カスタム プロパティ: (カスタム プロパティが見つかりません) 操作は正常に完了しました。 C:\> dism /online /Get-FeatureInfo /featurename:Microsoft-Windows-Subsystem-Linux 展開イメージのサービスと管理ツール バージョン: 10.0.19041.844 イメージのバージョン: 10.0.19043.1165 機能情報: 機能名 : Microsoft-Windows-Subsystem-Linux 表示名 : Linux 用 Windows サブシステム 説明 : ネイティブなユーザー モードの Linux シェルおよびツールを Windows で実行するためのサービスと環境を提供します。 再起動が必要 : Possible 状態 : 有効 カスタム プロパティ: ServerComponent\Description : ネイティブなユーザー モードの Linux シェルおよびツールを Windows で実行するためのサービス と環境を提供します。 ServerComponent\DisplayName : Linux 用 Windows サブシステム ServerComponent\Id : 1033 ServerComponent\Type : Feature ServerComponent\UniqueName : Microsoft-Windows-Subsystem-Linux ServerComponent\Deploys\Update\Name : Microsoft-Windows-Subsystem-Linux 操作は正常に完了しました。
もし、機能が有効化(インストール)されていない場合(「状態 : 無効」と表示された場合)は、次の2行のコマンドを実行すると有効化することができる。
管理者権限Windows PowerShellでの作業
C:\> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart C:\> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
ここで再びWindows 10を再起動する。
インストール可能なLinuxディストリビューション一覧より、最新版Ubuntuをインストールする
Linuxを使うユーザのコマンドプロンプト(Windows PowerShell)での作業
C:\> wsl --list --online インストールできる有効なディストリビューションの一覧を次に示します。 'wsl --install -d <Distro>' を使用してインストールします。 NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling openSUSE-42 openSUSE Leap 42 SLES-12 SUSE Linux Enterprise Server v12 Ubuntu-16.04 Ubuntu 16.04 LTS Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS C:\> wsl --install -d Ubuntu-20.04
Ubuntu 20.04のインストール完了後、確認する
Linuxを使うユーザのコマンドプロンプト(Windows PowerShell)での作業
C:\> wsl --list --verbose NAME STATE VERSION * Ubuntu-20.04 Stopped 2
WSLカーネル、ディストリビューションのインストールサイズ
どれくらいのHDD容量を消費するものなのか、コマンドの段階ごとのディスク残量( fsutil volume diskfree c:
で調査)からコンポーネントのサイズを推測してみた
コンポーネント | HDD消費サイズ |
---|---|
WSL本体・カーネル | 0.88 GBytes |
Ubuntu-20.04インストール直後 | 2.19 GBytes |
Ubuntu-20.04をapt upgradeで更新後 | 3.01 GBytes |
Ubuntu-20.04にbuild-essentialをインストールした状態 | 3.14 GBytes |
Ubuntu-20.04にbuild-essentialとgeditをインストールした状態 | 4.36 GBytes |
WSL本体とUbuntu-20.04を最低限使える状態にすると、 0.88 GB + 4.36 GB = 5.24 GBytes ほどのHDD容量を消費するようだ。
ディストリビューションの仮想ディスクファイル
ディレクトリ C:\Users\ユーザ名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState
の中に、 ext4.vhdx
という仮想ディスクファイルが格納されている。(現在のサイズは 3.77 GBytes)
仮想ディスクファイルを最適化するには、まずWSLをシャットダウンしてから
Linuxを使うユーザのコマンドプロンプト(Windows PowerShell)での作業
C:\> wsl --shutdown
仮想ディスクを最適化する(管理者権限で実行する)
Hyper-Vの機能をインストールしている場合
C:\> Optimize-VHD -Path C:\Users\vm\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx -Mode full
Hyper-Vの機能をインストールしていない場合
C:\> diskpart Microsoft DiskPart バージョン 10.0.19041.964 Copyright (C) Microsoft Corporation. コンピューター: M720Q-WIN10 DISKPART> select vdisk file="C:\Users\vm\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx" DiskPart により、仮想ディスク ファイルが選択されました。 DISKPART> attach vdisk readonly 100% 完了しました DiskPart により、仮想ディスク ファイルがアタッチされました。 DISKPART> compact vdisk 100% 完了しました DiskPart により、仮想ディスク ファイルは正常に圧縮されました。 DISKPART> detach vdisk DiskPart を終了しています... DISKPART> exit C:\>
・DISKPART compact vdisk のドキュメント
最適化の結果は... 今の時点では大したことなかった。(たった、200 MBytesのコンパクト化)
コマンドプロンプト(Windows PowerShell)での作業
> dir ... 最適化前 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/08/27 16:39 3857711104 ext4.vhdx > dir ... 最適化後 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/08/27 16:42 3834642432 ext4.vhdx