前置き
本記事では、WindowsでLinuxを使用する方法(WSL2)について紹介しています。
WSLはWindows Subsystem for Linux 2の略でWindows 10上でLinuxを動作させるための仕組みであるWSLのバージョン2です
WindowsだとUNIXコマンドが使用できないので、何かしら(Git bashなど)ツールをインストールして使用する必要があります。
職場の先輩スーパーエンジニアに教えていただいた内容なのですが、Windows Terminalと組み合わせて使うと便利すぎてMacよりwindowsの方がいいかも....って思ってしまうほどです。
導入手順は大きく以下です。
- 事前準備
- WindowsにUbuntuをインストール
- Ubuntu初期設定
- WSLを起動
- Windows Terminalをインストール
- Windows Terminalを起動
- Windows Terminalのおすすめ設定
- WSL2でのWindows <-> Linux間のファイルアクセスの仕組み
環境
windows10
Ubuntu20.04
事前準備
管理者権限でPower shellを起動し、以下を実行してWSLを有効化する
dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart
続いて以下を実行。実行後、PCを再起動
dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all
WSL 2 Linux カーネルの更新ページ からWSL2用Linuxカーネルをダウンロードし、インストールする
Linuxディストリビューションをインストールする際に、デフォルトでWSL2を使うように設定するため、power shellから以下を実行
wsl --set-default-version 2
WindowsにUbuntuをインストール
Microsoft Storeでubuntuをインストール
Ubuntu初期設定
初回起動時にUbuntu用ユーザIDとパスワードを設定して完了
※Docker Desktop App をWSL2で使用する場合は、デフォルトだとDokcerを起動すると、The command 'docker' could not be found in this WSL 2 distro.というエラーが生じるので、
図のように、settingsからUse the WSL based engineをオンにしてあげる必要があります。
WSLを起動
インストールしたLinuxディストリビューションは通常のアプリケーションと同様に、スタートメニューから起動可能です。
これだけでもLinuxコマンドを使用してwindowsのファイルシステムを操作できるのですが、Windows Terminalを組み合わせるとさらに強力なものになるので、以下で紹介します。
Windows Terminalをインストール
Microsoft StoreでWindows Terminalをインストール
Windows Terminalを起動
インストール後、Windows Terminalを起動。デフォルトだとPower Shellが起動するかと思いますので、下図のようにUbuntuのタブを追加します
こんな感じで、複数タブごとにシェルを起動できますし、linuxコマンドを使用してWindowsを操作できます。
Windows Terminalのおすすめ設定
デフォルトだとカレントディレクトリがホスト側(Windows)のパスになっていたり、PowerShellが起動するようになっていたりするので、おすすめの設定一覧を別途記事にまとめる予定です
WSL2でのWindows <-> Linux間のファイルアクセスの仕組み
ホスト(Windows) -> Linux
エクスプローラを開き、パスに\\wsl$
を入力すると、WSLのディストリビューション毎のファイルシステムにアクセスできます。
Linux -> ホスト(Windows)
WindowsのCドライブがLinuxの/mnt/c
にマウントされているのでLinux上で/mnt/c
にアクセスすることで、Windows上のファイルにアクセス可能。
まとめ
いかがでしたでしょうか。本記事では、WindowsだとUNIXコマンドが使用できないので、何かしら(Git bashなど)ツールをインストールして使用する必要があります。職場の先輩スーパーエンジニアに教えていただいた内容なのですが、WindowsにLinuxを入れてWindows Terminalで使うと便利すぎたので本記事に記載しておきました。