docker♪前準備としてwin11にWSL2をインストール

Windows11にWSL2をインストールします。Win10とWin11ではインストールの方法が違うので注意が必要です。また、ディストリビューションの切替えや、linuxからwindowsのファイルへのアクセス方法などについても説明します。

この記事にはdockerについての記述はありません。単純にWSL2をWindows11にインストールしたいという方が参考にして下さい。

なお、Windows11 ProにUbuntu 20.04 LTSをインストールします。

1. Windows10へのWSL2のインストール

Windows10へのインストールについては詳しい説明は行いませんが、主に以下の手順で実行します。

  1. 「Linux用Windowsサブシステム」「仮想マシン プラットフォーム」を有効にす
  2. Linuxカーネルをダウンロードし、アップデートする。

これに対して、Windows11へのPowerShellでコマンドを実行するだけでインストールが可能であり、手順がシンプルです。

また、Windows11へのインストールでは、「Linux用Windowsサブシステム」「仮想マシン プラットフォーム」を有効にしたままでは、インストールできないので、逆に無効であることを確認する必要があります。

2. Windows11へのWSL2のインストール

Windows11へのWSL2のインストール手順を説明します。

(1) 「Linux用Windowsサブシステム」の無効をチェック

「Linux用Windowsサブシステム」「仮想マシン プラットフォーム」は無効にした方が無難です。ネット上では無効ではなく、有効にするという情報も多くみられますが、自分は無効の設定でインストールできなかったことはありません。

一方、自分の場合は、最初に試した時に有効ではインストールできなかったので、それ以後、いつも無効にしてインストールするようにしています。設定手順は以下の通りです。

  1. [Windowsのスタートボタンを右クリック]→[設定]→[アプリ]→[オプション機能]→[Windowsのその他の機能]
  2. 「Linux用Windowsサブシステム」「仮想マシン プラットフォーム」の2箇所のチェックを外し、無効にしてください

(2) PowerShellからインストール

Windows11からは、Windowsターミナルが標準で使用できますので、WindowsターミナルからWindows PowerShellを起動してみましょう。

  1. [Windowsのスタートボタンを右クリック]→[ターミナル(管理者)]により、Windows PowerShellを起動。
  2. 「wsl --install」を実行する。

「wsl --install」を実行すると、インストール時点で最も新しいUbuntuのLTS版がインストールされます。

wsl --install

もし、他のバージョンのディストリビューションをインストールしたい場合には、まず、インストール可能なディストリビューションを確認します。

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

そして、上記のリストがインストール可能なディストリビューションの一覧です。そして、例えばUbuntu-20.04をインストールしたいのであれば、以下のコマンドを実行します。

wsl --install -d Ubuntu-20.04

インストール可能な現在のUbuntuの最新版は20.04なので、「wsl --install -d Ubuntu-20.04」でお「wsl --install」でも、20.04がインストールされますが、インストールされたディストリビューションを確認するコマンド「wsl -l -v」を実行したとき、「wsl --install -d Ubuntu-20.04」では「Ubuntu-20.04」と表示され、「wsl --install」では「Ubuntu」と表示されます。

つまり、「Ubuntu 20.04」のようにバージョンが分かるnameにしたい場合には「wsl --install -d Ubuntu-20.04」を使います。nameにカーネルのバージョンが表示されるので明快です。

ただし、後でカーネルのバージョンを更新しても「wsl -l -v」によるnameの表示バージョンが変わらないので注意する必要があります。つまり、具体的な例は後述しますが、「wsl -l -v」による表示と実際のバージョンに食い違いが生じます。例えば将来「Ubuntu 22.04 LTS」に更新する場合には、WSL2の機能を使って新たに「wsl --install -d Ubuntu-22.04」を実行し、切り替える方法を取ることになります。

一方、「wsl --install」でインストールしたubuntuには「wsl -l -v」ではバージョンが表示されません。一目でバージョンを確認することはできませんが、Linuxの機能を使って「Ubuntu 22.04 LTS」にアップグレードしてもnameが「ubuntu」なので、表示との食い違いは生じません。

(3) 再起動とユーザー登録

インストールを反映させるためには、再起動が必要です。再起動を行うと、UbuntuのコンソールWindowがポップアップ表示され、username、パスワードの入力を促されます。

このアカウントはsudoコマンドを実行できます。また、wsl起動時には、自動的にこのアカウントによりログインします。なお、sudoコマンドを実行するためのパスワードはユーザー登録で設定したパスワードを使います。

usernameとパスワードを入力すればWSL2のインストール完了です。ユーザーフォルダは以下の場所に作成されます。[username]の部分は先ほど登録したusernameです。

\Ubuntu\home\[username]

(4) 「Linux用Windowsサブシステム」の有効をチェック

正常にインストールされたかどうか確認してみましょう。インストール前に無効にした「Linux用Windowsサブシステム」「仮想マシン プラットフォーム」の設定が、有効になっていればインストール完了です。

たまに有効にならない場合があるので、その場合は有効にして、再起動してください。私の場合は「Linux用Windowsサブシステム」だけが無効になっていたことがありました。

  1. [Windowsのスタートボタンを右クリック]→[設定]→[アプリ]→[オプション機能]→[Windowsのその他の機能]
  2. インストール前は無効だった「Linux用Windowsサブシステム」「仮想マシン プラットフォーム」にチェックが入っており、設定が有効であることを確認する。

(5) 実行中のUbuntuを確認

実行中のUbuntuを確認するには、PowerShellより以下のコマンドを実行します。「wsl --list --verbose」でも「wsl -l -v」でもどちらでもかまいません。

wsl --list --verbose
wsl -l -v

すると、以下のように表示されます。「wsl --install -d Ubuntu-20.04」でインストールした場合には、NAMEが「Ubuntu」ではなく「Ubuntu-20.04」となります。

なお、STATE のRunningは動作している状態であることを示し、VERSIONの2は、WSLではなくWSL2であることを示します。

  NAME      STATE           VERSION
* Ubuntu    Running         2

なお、このwslコマンドは、この後に説明するwsl(Ubuntu)の起動画面では実行できないので注意してください。Ubuntuの画面で実行すると「Command 'wsl' not found, but can be installed with:  sudo apt install wsl」と表示されますが、Ubuntuにwslというコマンドは存在しないので、sudo apt install wslによって、wslをインストールすることはできません。

3. Ubuntuの起動(login)

Ubuntuの起動(login)方法を3通り紹介します。

(1) Windowsスタートメニューより起動

Windowsスタートメニュの[全てのアプリ]よりUbuntuを起動します。カレントディレクトリは以下のUbuntuのユーザーフォルダとなります。

\Ubuntu\home\[username]

なお、このとき、Ubuntuの実行画面のカーソルの左側は「~$」と表示されます。この「~」の部分はカレントディレクトリであることを示しています。

なお、以下のコマンドを実行すると、ルートディレクトリである「\Ubuntu」に移動します。

cd /

「wsl --list --verbose」を実行する場合には、別途PoweShellを起動する必要があります。

(2) PowerShellより実行

ターミナルを起動し、PowerShellから「wsl」を実行し、Ubuntuを起動します。

wsl

カレントディレクトリは、Windowsのユーザーフォルダとなります。以下の[username]は、Windowsのusernameですので、Ubuntuに登録したusernameではありません。

 C:\Users\[username]

Ubuntuで登録した[username]のディレクトリ(ホームディレクトリ)で起動したい場合は次の様にします。

wsl ~

ユーザーを指定して起動するにはuオプションを利用します。例えば[user_name]に「root」を指定するとルートディレクトリである「\Ubuntu」で起動します。

wsl -u [user_name]

起動の場所を指定する他の方法として、PowerShellの[右上の「v」]→[設定]→[Ubuntu]→[開始ディレクトリ]にて設定できます。

なお、開始ディレクトリの設定で、開始ディレクトリを「~」と設定しても、Windowsのホームディレクトリで起動してしまいます。Ubuntuのディレクトリで起動したい場合は、例えば「\\wsl$\Ubuntu\home\[username]」のように指定しなければならないので注意しましょう。

(3) Windows ターミナルより実行

[Windowsスタートボタンを右クリック]→[ターミナル]により、PowerShellを起動し、上部タブの右側の「v」をクリックし、Ubuntuを選択する。

この場合も、PoewShellから起動したときと同様に、カレントディレクトリはWindowsのユーザーフォルダとなります。

では、せっかくUbuntuを起動したので、Ubuntuのバージョンを確認してみましょう。「cat」コマンドにより「/etc/」フォルダに入っているテキストファイル「issue」を表示することで確認できます。

ターミナル上で「cat /etc/issue」を実行すると、Ubuntu 20.04 LTSがインストールされていることが分かります。

「wsl -l -v」では、NAMEの表示とインストールバージョンと表示が食い違うことがありますが、この方法で確認すれば、実際のインストールバージョンを確認することができます。

cat /etc/issue
Ubuntu 20.04 LTS \n \l

4. Ubuntuのlogout

Ubuntuのlogoutは、Ubuntuを起動した状態から、「exit」を実行します。

exit

しかし、exitによってlogoutしただけでは、UbuntuはWindows上で起動したままになっています。この状態で、以下のコマンドを実行してみましょう。UbuntuのSTATEはRunningです。

wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

5. Ubuntuの終了と起動

UbuntuをWindows上での稼働を終了するには、PoerShellから「wsl -t [ディストリビューション名]」や「wsl --shutdown」を実行します。

「wsl -t [ディストリビューション名]」の[ディストリビューション名]の部分はディストリビューションのnameを指定します。(「wsl --terminate [ディストリビューション名]」でも同じです。)

wsl -t Ubuntu
wsl --terminate Ubuntu

また、複数のアプリケーションが起動している場合に、全てのアプリケーションを終了させる場合には、「wsl --shutdown」を実行します。

wsl --shutdown

「wsl --list --verbose」を実行すると、今度はSTATEがStoppedの状態になりました。

wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

なお、終了したUbuntuを再び起動するには、「3. Ubuntuの起動(login)」の手順によりloginすれば、起動することができます。起動とloginは同時に実行されます。

「wsl --list --verbose」によりSTATEがRunningの状態に戻っていることが確認できます。

6. 複数のディストリビューションのインストール

複数のディストリビューションをインストールする場合には、ディストリビューション名を指定してインストールを実行します。インストールが終了すると、そのディストリビューションにloginするためのusernameとパスワードを求められるので、入力します。

wsl --install -d Ubuntu-18.04

それでは、「wsl --list --verbose」により、確認してみましょう。「Ubuntu-18.04」はRunningの状態ですが、Ubuntuの前に「*」が表示されており、既定のディストリビューションはUbuntu-18.04ではなく、Ubuntuです。

wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu          Stopped         2
  Ubuntu-18.04    Running         2

既定のディストリビューションを変更するには、「wsl --set-default Ubuntu-18.04」を実行します。--setと-defaultの間には空白がないことに注意してください。

wsl --set-default Ubuntu-18.04

今度は、Ubuntu-18.04が既定のディストリビューションになりました。

wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Running         2
  Ubuntu          Stopped         2

なお、[Windowsのスタートボタン]→[全てのアプリ]には、「Ubuntu」だけではなく、「Ubuntu 18.04 LTS」が追加されます。

また、Windows ターミナルを再起動すると、Windows ターミナルの上部タブの右側にある「v」にも「Ubuntu-18.04」が追加されます。

7. 特定のディストリビューションのアンインストール

特定のディストリビューションをアンインストールするには、そのディストリビューションを終了し、アンインストールします。

ディストリビューションの終了は、すでに説明した通り、「wsl --shutdown」あるいは「wsl --terminate Ubuntu-18.04」

wsl --shutdown
wsl --terminate Ubuntu-18.04

ディストリビューションを指定してアンインストールします。

wsl --unregister Ubuntu-18.04

以下、Ubuntu-18.04がアンインストールされていることが確認できました。

wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

なお、Windows ターミナルを再起動すると、Windows ターミナルの上部タブの右側にある「v」にインストールされていた「Ubuntu-18.04」も削除されます。

一方、[Windowsのスタートボタン]→[全てのアプリ]には、PCを再起動しても「Ubuntu 18.04 LTS」は削除されないので、[設定]→[アプリ]→[アプリと機能]からアンインストールします。

8. UbuntuからWindowsのデータにアクセス

UbuntuからWindowsのデータにアクセスする場合は、「/mnt/c」をアクセスするフォルダの頭に追加します。「/c」はcドライブであることを示します。

例えば、次のように実行すればcドライブのルートディレクトリに移動することができます。

$ cd /mnt/c

この状態からUbuntuのルートディレクトリである「Ubuntu」に戻るには、「cd /」を実行します。

cd /

9. WindowsからUbuntuのデータにアクセス

WindowsからUbuntuのデータにアクセスすることも可能です。

(1) PowerShellからのアクセス

PowerShellからアクセスする場合は、「\wsl$\」をアクセスするフォルダの頭に追加します。

例えば、PowerShellで次のように実行すればUbuntuのルートディレクトリである「Ubuntu」に移動することができます。この「Ubuntu」は「wsl -l -v」実行時のNAMEに表示される

cd \\wsl$\Ubuntu

この状態からWindowsのcドライブのルートディレクトリに移動するには「cd c:\」を実行します。

「cd \」ではWindowsのルートディレクトリに戻れないことに注意する必要があります。

cd c:\

(2) エクスプローラからのアクセス

WSL2をインストールすると、WindowsのエクスプローラにLinucxが追加されるため、データの扱いが非常に楽です。(下図参照)

エクスプローラからubuntuのデータアクセス

10. rootのパスワード

初期設定ではrootのパスワードは設定されていません。この状態では「su」コマンドが実行できません。そこで、「sudo passwd root」でrootのパスワードを設定します。

sudo passwd root

11. あとがき

これで、ディストリビューションやデータの扱い方について、WSL特有の部分が分かるようになったのではないでしょうか。