これまでWindows Server 2022では利用できなかった、本物のLinuxカーネルベースで動く「WSL 2」が、ユーザーからのフィードバックに応える形で、2022年6月の累積更新プログラム(Bリリース)で利用可能になりました。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「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)。
2022年5月のオプションの更新プログラム(Cリリース、KB5014021)の提供に合わせ、以下のフィードバックに応える形で、6月からWindows Server 2022でもWSL 2が利用できるようになったことが明らかにされました。実際にWSL 2で「Ubuntu」が動いている様子が画面2です。ただし、5月のCリリースと6月のBリリース、どちらのリリース情報にもそのことには一切触れられていません。
なお、Windows 11からWSL 2のLinux環境で利用可能になった「WSLg」のGUIサポート(Xアプリの実行)は、Windows Server 2022では利用できませんでした。Windows Server 2022は「ビルド20348」で、以下にGitHub書いてあるWSLgの最小要件「ビルド22000(つまりWindows 11)以降」を満たしていないので当然と言えば当然です。
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)。
ここでいったん、以下のコマンドで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
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を使用した旧手順)でもエラーとなり、新旧どちらの手順でもインストールを成功させることはできませんでした。
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>
筆者の手順は、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.