Windows Subsystem for Linux 2を導入した

スポンサーリンク

最近、研究で機械学習や深層学習の勉強をしています。これらはローカルで動かそうとするとマシンパワーが必要になり、並列処理が得意なGPU性能がものを言います。

私のMacBook Proは内蔵GPUでCPUも貧弱。なので先日組んだゲーム用自作PCのNVIDIA GTX1660の出番です。

しかし、今までプログラミングはMac OS上もしくはMacのVagrant上のUbuntuでしかやってこず、Windowsの環境構築をしていませんでした。

ということで、WSL2を導入し、Windows上での環境構築をしました、という記事です。

スポンサーリンク

環境

  • Windows 10 Home
  • Gigabyteのマザーボード
  • CPU: AMD Ryzen5 3500

Windows Subsystem for Linux(WSL)とは

その名の通り、Windows上でUbuntuなどのLinuxディストリビューションが動く、というものです。プログラミングの世界ではLinuxディストリビューションもしくはそれに似たMacOSの環境でサンプルコードや動作確認がとられていることが多く、Windowsでプログラミングをするときは、その差異に苦しめられることが多々あります。

そこでWindows上でLinuxディストリビューションを動かしちゃおうというのがWSLです。WSLはLinuxコマンドを内部でWindowsのコマンドに変換していたらしいのですが、WSL2からはLinuxコマンドがきちんと動くようです。(詳しくはわからない)

ということで、WSL2をインストールしてみましょう。

WSL2のインストール

結構悩んでしまいました。下がWSLについての公式ドキュメントです。なんと日本語があります。Qiitaとかの記事読む前に、公式ドキュメント見ましょう。

Linux 用 Windows サブシステムについて
Linux 用 Windows サブシステムのさまざまなバージョンやそれらの使用方法などについて説明します。

下がWSL2のインストールです。はじめはテキスト見ながら実行していったのですが詰まり、動画を見たら完全に理解できました。動画のついてるドキュメントなんて丁寧ですよね。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする
Windows 10 に Linux 用 Windows サブシステムをインストールする方法について説明します。 Windows 10 は、バージョン 2004、ビルド 19041 以上に更新する必要があります。

大まかなインストール方法は公式ドキュメントの通りです。ここからは私がつまったところを紹介します。

BIOSで仮想化をオンにしてください

僕のパソコンは仮想化機能がデフォルトでオンではなかったらしく、BIOSからオンにする必要があったようです。ただ、GIGABYTEのBIOS(UEFI)にはCPUの設定が見つかりませんでした。なんでだろうとググると、下記動画を発見。

AMD仮想化を有効にする(ギガバイトマザーボード)

この通りに、「高度な周波数設定」→「高度なCPUコア設定」→「SVM Modeをオン」に設定すればオーケーです。これはAMDのCPUの場合で、Intelだとまた違った設定が必要だと思います。

“wsl –set-version <Distro> 2″コマンドが通らない

Windows Insider Programに参加して、最新版のWindowsをインストールし、PowerShellで以下のコマンドを実行すると、通るようになります。


dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

はじめコマンドが通らなかったときは、アップデートでコマンドが変わったのかと思いましたが(helpオプションで見てもわからなかったので)、そんなことありませんでした。システムを疑う前に自分を疑いましょう。

結論:完全なUbuntuが動くぞ

WSL無印版ではDockerなどのLinuxカーネルの深い部分に関わるソフトは使えなかったらしいです(内部的にLinuxコマンドをWindowsコマンドに変換していただけだったので)。が、WSL2ならDockerなども動くらしいので、本当に完全なLinux環境ができるわけです。

WSLを知る前は、デュアルブートしようかなとか考えていたので、WSLが動いてよかったです。Pytorch頑張ります。

コメント