あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

Windows 10でLinuxコマンドを実行する決定打が登場した件

はじめに

以前、Windows 10 で Linux のコマンドを実行する方法として、WSL(Windows Subsystem for Linux)という仕組みと設定を活用するやり方をご紹介しました。

www.aruse.net

ですが、2020年5月27日(米国時間)にリリースされた、Windows 10 バージョン 2004 (May 2020 Update)で、WSLをさらにパワーアップした、WSL 2 がリリースされました。

旧WSL(WSL 1)では、Linux のコマンドを実行するのに、wsl lsというようにwslを前に付ける必要があり、それを回避するために色々な工夫が必要でしたが、そんな設定は不要となり、ダイレクトに Linux コマンドを実行できるようになりました。

この記事では、WSL 2 のセットアップ方法と、とても便利な使い方をご紹介します。

システム要件

  • Windows 10 を 2004 にアップデートされていること
    • うれしいことに、Home でも Pro でも利用できる
    • 2004へのアップデートとバージョンの確認方法は こちらの記事が詳しい
  • BIOSで仮想化機能が有効になっていること
    • 公式ドキュメントには目立つように書いてなかったが、エラーが出て調査したところ、トラブルシューティングのところに記述があった

WSL 2 の特徴

  • Windows 10上でLinuxコマンドを本当の意味で実行できるようになった
  • WSL 1 と WSL 2 は共存可能(コマンドで切り替え)
  • VIrtualBox と VMWare は、現時点では WSL 2 と共存できない
  • 仮想マシンでも WSL 2 は実行可能
    • 但し、Parallels Desktop for Mac は Pro 以上でないと動作しない

詳しくは以下ドキュメントを参照してください。

docs.microsoft.com

WSL 2 のインストール方法

公式の手順書は、下記で公開されています。そのままやればできるぐらいよくできているドキュメントですね。

docs.microsoft.com

WSL 2 のインストールや設定は、PowerShell を管理者権限で開いた画面で行います。

機能のインストール

以下のコマンドを実行して、必要な機能をインストールします。

# Linux 用 Windows サブシステム
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 仮想マシン プラットフォーム
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

インストールが済んだら、Windows を再起動して設定を反映させます。

Linux カーネルを最新化

下記記事にある、Linux カーネルを最新にするプログラムをインストールします。

docs.microsoft.com

以下のリンクからも、直接更新プログラムをダウンロードできます。

インストールは単純で、デフォルトインストールですぐに終わります。(というか選択肢がない)

WSL 2 をデフォルトにする

下記コマンドを実行して、WSL 2 をデフォルトのバージョンにします。

> wsl --set-default-version 2

Linux のインストール

Microsoft Store から、公式ドキュメントに掲載されている Linux ディストリビューションの中から好きなものを選びインストールします。

ここでは、Ubuntu 20.04 LTS をインストールします。

f:id:fnyablog:20200726201844p:plain:w480

Ubuntu のインストールが済んだら、Ubuntu を起動します。

起動して数分待つと、ユーザー名とパスワードの設定を要求されるので入力します。

f:id:fnyablog:20200726202242p:plain:w640

Ubuntu のインストールが済んだので、下記コマンドで、Ubuntu 20.04 が WSL 2としてインストールされているか確認します。

> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu          Stopped         1
  Ubuntu-20.04    Stopped         2

正しくインストールされているようですね。

但し、デフォルトの Ubuntu が WSL 1 のようです。

下記コマンドで、デフォルトの Linux ディストリビューションを WSL 2に変更します。

> wslconfig /setdefault Ubuntu-20.04

確認すると、正しく変更されていることが分かります。

> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2
  Ubuntu          Stopped         1

以上で、WSL 2 の設定は完了です。

WSL 2 の便利な使い方

調べていて気がついたのですが、WSL 2 のインストール方法はたくさんの記事があるのですが、実際の便利な使い方の記事がなかったので参考になるんじゃないかと思います。

コマンドプロンプトで wsl と入力する

コマンドプロンプトや PowerShell でwslと入力して改行すると、現在のパスをそのままに WSL 2に入ることができます。

もちろん、Linux コマンドをそのまま使えます。

こんな感じです。

C:\Windows\System32\drivers\etc> wsl
xxx@DESKTOP-KHJGQFE:/mnt/c/Windows/System32/drivers/etc$ pwd
/mnt/c/Windows/System32/drivers/etc

WSL 2からのCドライブは/mnt/cとなる

前項で気がついたかもしれませんが、WSL 2 から Windows の C ドライブは /mnt/c でアクセスできます。

Windows から WSL 2の領域にアクセスするには\\wsl$ を使う

エクスプローラー限定ですが、Win + E でエクスプローラーを起動して、\\wsl$ とアドレスバーに入力すると、Linux の領域にアクセスすることができます。

コマンドプロンプトや PowerShell でアクセスしようとしても、失敗します。

sudo を使ってもUACの管理者権限にならない

hosts ファイルで調べたのですが、sudo vim hostsでファイルを開いても、保存することはできませんでした。

sudo は、Linux 内では有効ですが、Windows の UAC(User Access Controll)には無力なようです。

Windows Terminal でさらにパワーアップ

Microsoft Store から、Windows Terminal をダウンロードしてインストールすると、さらに便利さがパワーアップします。

1つのウィンドウに、複数タブを表示でき、タブにはコマンドプロンプト、PowerShell、WSL のLinux を選択できます。もちろん、コピーアンドペーストのショートカットも使えます。生産性がぐっと上がりますね。

f:id:fnyablog:20200726213146p:plain:w640

おわりに

Windows 10 で、WSL 2を使って Linux コマンドを実行する方法をご紹介しました。

Windows 10 をより便利に使えるようになるのではないでしょうか。

WSL 2 には、まだ VirtualBox や VMWare などと共存できない課題がありますが、解決する方向で進んでいるようなので期待したいですね。

参考サイト

dev.classmethod.jp

qiita.com