Microsoftは先日公開したWindows 11の開発版でWSL2をデフォルトで有効化し、UbuntuなどのLinuxディストリビューションも簡単にインストールできる状態にした。さらに、LinuxのGUIアプリケーションを実行するための機能も最初から取り込んだ状態で開発版を配信している。Windows 11ではLinuxを実行するのがとても簡単だ。
MicrosoftはこのままWindows 11でのLinux環境を充実させ、Windows 10のほうは現状維持の方向に舵を切る可能性もあった。しかし先日、MicrosoftからWindows 10におけるLinuxの状況を改善するという発表が行われた。MicrosoftはWindows 10においてもWindows 11と同レベルの簡単さでLinuxを使えるようにするようだ。Linuxユーザーとしては嬉しいニュースである。
Install WSL with a single command now available in Windows 10 version 2004 and higher | Windows Command Line |
Microsoftは上記ページにおいて、「Windows 10, version 2004」以降のバージョンでは、次のコマンドでLinuxディストリビューションがインストールできるようになると発表した。
wsl --install
多くのユーザーは次のコマンドを実行してUbuntuをインストールすることになると思う。
wsl --install -d Ubuntu
Windows 10におけるこれまでのセットアップ方法と比べると、驚くほど簡単だ。この変更は、2021年7月29日に公開された累積更新プログラム「KB5004296」の一部として提供されている(本稿執筆時点)。さらにこの更新プログラムは2021年8月の月例アップデートに含まれる予定になっているので、読者の皆さんが本稿を読んでいる段階ではすでに使える状況になっている可能性が高い。
これまでのセットアップ方法をおさらい
本連載でも以前、Windows 10にUbuntuをインストールしてセットアップする方法を取り上げたので、ここで再度詳しい説明はしない。もし「wsl —install -d Ubuntu」でインストールできなかった場合は次の記事を参考にしてもらえればと思う。
手順だけ簡単にまとめておくと、次のようになる。
- 設定アプリケーション:「アプリ」→「アプリと機能」→「オプション機能」→「Windowsのその他の機能」
- Windows の機能:「Linux用Windowsサブシステム」にチェックを入れる→「仮想マシンプラットフォーム」にチェックを入れる→「OK」→「今すぐ再起動」
- https://aka.ms/WSL2kernelから「x64マシン用WSL 2 Linuxカーネル更新プログラムパッケージ」をダウンロードしてインストール
- 管理者権限ターミナル:wsl —set-default-version 2
- Microsoft Store:「Ubuntu 20.04 LTS」→「インストール」→「起動」→ユーザー名とパスワード入力
少なくとも1回はシステムの再起動が必要で、ターミナルからの設定変更も必要だ。今のところ、どの方法でインストールしても英語環境となるので、日本語環境を整理するならばインストール後に次のようにコマンドを実行しておく必要がある。
sudo apt update
sudo apt upgrde
sudo apt install language-pack-ja
echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
なお、そもそもWindows 10をHyper-Vの上で仮想環境として実行しているのであれば、上記の方法でもUbuntuを実行することはできない。これはHyper-Vに限った話ではないのだが、仮想環境で動作しているWindows 10においても仮想環境の機能が使えないとWSL2は機能しないのだ。
その場合、「ネストされた仮想化」「ネストされた仮想環境」「入れ子になった仮想化」のような言葉で呼ばれることがあるのだが、ゲスト環境側でも仮想環境機能が使えるようにする機能を有効化する必要がある。その辺りの説明は次の記事にまとまっているので、仮想環境のWindows 10を使っている場合には参考にしていただきたい。
これでもかなり整理されたほうなのだが、Windows 10におけるWSLのセットアップ方法は面倒な状況が続いていたのも事実だ。
WSLはWindows 10で開発されてきた機能
なぜ、Windows 10においてWSL2の有効化がこれほど面倒なのか。それは、WSLがWindows 10で導入され、開発されてきた機能だからだ。Windows 10には当初、LinuxカーネルのシステムコールをWindowsカーネルのシステムコールで実行するように置き換えるレイヤ技術ベースのLinuxバイナリ実行機能が導入された。この機能は今では「WSL1」と呼ばれ、現在のWSL2とは区別されている。
その後、導入されたのがWSL2だ。こちらはWSL1とは実装方法が抜本的に異なっている。WSL2は、言ってしまえばHyper-Vの上でLinuxカーネルを動作させる技術だ。うまくパッケージングして、WSL1のときと同じように扱えるようにしている。
WSL1のときもセットアップ方法がいくつかあったし、機能も順次追加されていった。そこにさらにWSL2が追加された。Microsoftは後方互換性を重視する傾向にある。WSL2が導入された後も、WSL1は後方互換性維持の目的で残されている。WSL1とWSL2は共存可能なのだ。こうした歴史的経緯もあって、Windows 10におけるWSLのセットアップは若干面倒でわかりにくい状況が続いてしまっていた。
今回のMicrosoftの取り組みはLinuxユーザーにとって嬉しいことだ。導入がとても簡単になる。Windows 10からWindows 11へのアップグレード料金は無料とされているが、ハードウェア要件(特にプロセッサとTPM2.0)が引っかかってWindows 11へアップグレードできないユーザーも相当数出る可能性がある。こういったユーザーにとっては、Windows 11の機能がWindows 10へ落ちてくるかどうかはとても大切なことなのだ。
次に注目しておきたいのは、LinuxのGUIアプリケーションを実行する機能がWindows 10へやってくるかどうかだろう。こちらに関してはまだ発表が行われていないので、今度の動向に注目しておきたい。