検索
連載

【朗報】ついにWindows Server 2022で「WSL 2」が動くようになったよ!――インストール方法を詳細解説山市良のうぃんどうず日記(234)

これまでWindows Server 2022では利用できなかった、本物のLinuxカーネルベースで動く「WSL 2」が、ユーザーからのフィードバックに応える形で、2022年6月の累積更新プログラム(Bリリース)で利用可能になりました。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「山市良のうぃんどうず日記」のインデックス

山市良のうぃんどうず日記

WSLとWindows Serverの関係は?

 「Linux用Windowsサブシステム(Windows Subsystem for Linux、WSL)」は、Linuxバイナリを実行可能なLinuxのシェル環境をWindows上で提供する「Windows 10」からの機能です。Windows 10 バージョン2004以降(バージョン1903と1909にもバックポート)と「Windows 11」では、本物のLinuxカーネルをベースにした「WSL 2」が利用可能です(WSL 2に対して、従来のエミュレーション環境は「WSL 1」)。

 以下の連載記事でも、Windows Serverの半期チャネル(SAC)バージョン2004では、実はWSL 2が利用できていました。

 しかし、WSL 1およびWSL 2の簡単セットアップ機能を盛り込むために更新された「wsl.exe」の影響からか、Windows ServerではWSL 2を利用できなくなりました。

 Windows Serverで既定のバージョンをWSL 2に変更したり(「wsl --set-default-version 2」コマンド)、WSL 1で導入済みのLinuxディストリビューションをWSL 2に変換したり(「wsl --set-version <ディストリビューション> 2」コマンド)しようとしても、wsl.exeが正しいパラメーターとして認識してくれないのです。この問題は、最新の「Windows Server 2022」でも続いていました(画面1)。

画面1
画面1 Windows Server 2022ではwsl.exeツールがWSL 2を有効なバージョンと認識せずに、オンラインヘルプを表示するだけ(最初はWindows Server SAC バージョン2004でWSL 2を利用できていたが、その後の更新で同様の状況に)

 2022年5月のオプションの更新プログラム(Cリリース、KB5014021)の提供に合わせ、以下のフィードバックに応える形で、6月からWindows Server 2022でもWSL 2が利用できるようになったことが明らかにされました。実際にWSL 2で「Ubuntu」が動いている様子が画面2です。ただし、5月のCリリース6月のBリリース、どちらのリリース情報にもそのことには一切触れられていません。

画面2
画面2 2022年6月の累積更新プログラム(5月のオプションの更新、ビルド20348.740以降)でWindows ServerでもWSL 2が利用に

 なお、Windows 11からWSL 2のLinux環境で利用可能になった「WSLg」のGUIサポート(Xアプリの実行)は、Windows Server 2022では利用できませんでした。Windows Server 2022は「ビルド20348」で、以下にGitHub書いてあるWSLgの最小要件「ビルド22000(つまりWindows 11)以降」を満たしていないので当然と言えば当然です。

Windows Server 2022にLinuxサブシステムをインストールする方法(勝手に改訂版)

 Microsoftは、以下の公式ドキュメントでWindows ServerへのWSL 1のインストール手順を説明していますが、これは「Windows Server 2019」とWindows Server SACの古いバージョン(※Windows Server SACバージョンは20H2を最後に、「2022年8月9日」で完全に廃止されます)を対象とした古い手順です。

 コマンドプロンプト(またはPowerShellウィンドウ)を管理者として開き、以下のコマンドを実行します。途中再起動が要求され、再起動後に自動的にインストールが再開されるので、指示に従ってLinuxディストリビューション用の「ユーザー名」や「パスワード」を入力します。Linuxディストリビューションを指定しなかった場合は、Ubuntuが既定で選択されます。

wsl --install(またはwsl --install -d <Linuxディストリビューション>)

 途中、再起動や対話入力が必要ですが、このコマンド1つだけで、WSL 1のLinuxシェル環境がインストールされます(画面3)。

画面3
画面3 「wsl --install」コマンドの実行だけで、WSL 1のLinuxディストリビューション(この例ではUbuntu)がインストールされ、利用可能になる

 ここでいったん、以下のコマンドでWSL 1のLinuxを終了します。なお、ここまでの手順は2022年6月のBリリース(または5月のCリリース)以前でも構いません。これ以降の手順は、「2022年6月のBリリース(または5月のCリリース)以降」に更新後に行ってください。

wsl --terminate <Linuxディストリビューション>

 

 次のコマンドを実行して、WSL 2の設定を試みてください。「https://aka.ms/wsl2kernel」のURLが示されるので、このURLをブラウザで開き、MSIパッケージ「x64マシン用WSL 2 Linuxカーネル更新プログラムパッケージ」をダウンロードしてインストールします(画面4)。

wsl --set-verson <Linuxディストリビューション> 2
画面4
画面4 「x64マシン用WSL 2 Linuxカーネル更新プログラムパッケージ」をダウンロードしてインストールする

 Linuxカーネル更新プログラムパッケージをインストールしたら、先ほどのコマンド(「wsl --set-version <ディストリビューション> 2」コマンド)でインストール済みのLinuxディストリビューションを変換すればよいのですが、筆者の環境では数時間待っても変換が終わりませんでした。しかも、CPUやメモリ、ディスクI/Oを見ても変換のために何か仕事をしているようにも見えません。プロンプトが戻ってこず、[Ctrl]+[C]キーでも中断できなかったので、結局そのままOSを再起動して諦めました。

 インストール済みのLinuxディストリビューションを変換する方法はお勧めしません。次の方法で進めると、あっという間にWSL 2のLinuxが出来上がります(前出の画面2参照)。

wsl --set-default-versio 2
wsl --unregister <Linxuディストリビューション>
wsl wsl --install -d <Linxuディストリビューション>

 これは、Windows Server 2022の「デスクトップエクスペリエンス」インストールの場合の成功手順です。

 「Server Core」インストールの場合はどうかというと、コンポーネント(仮想マシンプラットフォームとWSL)のインストールまでは進みます。その後、デスクトップエクスペリエンスでは手動で行う必要があった、Linuxカーネル更新コンポーネントのインストールまではそのまま進むのですが、エラーで失敗します。再起動してもインストールは続行されませんでしたが、手動でLinuxカーネル更新コンポーネントをインストールすることまではできました。

 しかし、Linuxディストリビューションのインストールは「wsl --install」コマンドでも手動(Add-AppxPackageを使用した旧手順)でもエラーとなり、新旧どちらの手順でもインストールを成功させることはできませんでした。

画面5
画面5 Windows Server 2022のServer Coreには、WSL 1でもWSL 2でもLinuxディストリビューションのインストールがエラーで失敗した

  Windows Server 2022のRTM(Release To Manufacturing)ビルドを新規インストールして試してみましたが、もともとLinuxディストリビューションのインストールはエラー(0x80040154)で失敗するようです。Windows 11でセットアップ済みのLinuxディストリビューションをエクスポートし、それをWSL 2を既定に設定したServer Coreインストール環境(Linuxカーネル更新コンポーネントを手動でインストール)にインポートしてみたところ、WSL 2でLinuxディストリビューションを動かすことに成功しました(画面6)。

wsl --export <Linuxディストリビューション> <エクスポート先ファイル名.tar>
wsl --import <Linuxディストリビューション> <インポート先パス> <エクスポートファイル名.tar>
画面6
画面6 別のPCでセットアップしたWSL 2のLinuxディストリビューションをServer CoreのWSL 2環境にインポートすることで、WSL 2の使用に何とか成功

 筆者の手順は、Windows Server 2022でWSL 2が利用可能になったことが明らかになった直後に試行錯誤の末、編み出した手順ですが、2022年6月のBリリース(または5月のCリリース)より前にWSLをインストールしていた場合にも対応できるはずです。

 WSL 1/WSL2を新規導入する場合は、以下の公式ブログで説明されているように、手動でWSLの機能とLinuxカーネル更新プログラムをインストール後、「wsl --install」コマンドを実行する方が、最短でWSL 2を導入できると思います。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP 2009 to 2022(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る