WSL2(Windows Subsystem for Linux)で、Windows10にUbuntu環境を作り、GPUを認識させたい

Windows

Linuxを使ってでAI関連の勉強をしようと思いたち、環境を作ろうと考えました。

PCにグラフィックボードを積んでいるので、折角なのでGPUをきちんと使える環境をLinuxベースで作ろうと考えました。

ただ、PCは1台しかないし、Windwos10の環境を壊したくないのでVirtualBox+Vagrantの仮想環境で作ることを考えました。

参考:仮想環境ツールvagrantのインストールと使い方


しかし、うまくいかないので、他を調べてみると何かWSL(Windows Subsystem for Linux)なるものがあるということでこちらで環境を作ることにしました。

結果としては、WSLでも、2020年9月現在では、うまくいきませんでした。


やろうとしたことは、

  1. VirtualBox+VagrantでUbuntu 20.04の環境を作る
  2. GPU(GeForce RTX 2070 SUPER)を認識させる
  3. AI関連のソフトを入れる

と、考えていました。


しかし、「1.VirtualBox+VagrantでUbuntu 20.04の環境を作る」はすんなりできましたが、

「2.GPU(GeForce RTX 2070 SUPER)を認識させる」がうまくいかない。

いろいろ調べてみると、仮想環境内からは、直接グラフィックボードを認識できないということでした。
この仮想環境から直接グラフィックボードを認識できないということは、結論から言うとWLSでも同じでしたが・・・。


あくまでも、Linuxを使いたいが、マルチブートは少しめんどくさいし、インストールに失敗したらと思うと少し勇気がいったので、Windowsベースの機能で実現を試みるためにWSLを試してみます。

※現段階では、仮想環境にGPUを認識させることは実現できていません


WSL(Windows Subsystem for Linux)とは

WSLとは、Windows10上で、コマンドプロンプトやPowerShellのようにLinuxを使う技術です。

WSLには、WSL1とその上位バージョンであるWSL2があります。

WSL2では、ファイルシステムのパフォーマンス向上と、システムコールの完全な互換性を追加されています。

詳細は、Microsoftの公式ページに詳しく説明されています。

WSL2では、「システムコールの完全な互換性」とあったので、仮想環境上でグラフィックボードを認識してくれるのではと、期待してしまいました・・・。

※勉強不足でお恥ずかしい・・・。


WSL1とWSL2では、公式ページの「WSL 1 と WSL 2 の比較」にあるようにWSL2の使用を推奨していますので、今回も、WSL2をインストールします。


公式ページの例外的に WSL 2 ではなく WSL 1 を使用する場合を確認するとWindowsとファイルを共有する場合は、WSL1を使ったほうが良いです。


使用するLinuxは、Microsoft Storeから入手し、インストールすることができます。

インストールできるLinuxのディストリビューション
  • Ubuntu
  • open SUSE Leap
  • SUSE Linux Enterprise Sever
  • Kali Linux
  • Debian GNU/Linux
  • WSLのためのFedoraリミックス
  • Pengwin
  • Pengwin Enterprise
  • Alpine WSL

※インストールする時期によってバージョンが変わりますので、Microsoft Storeで確認してください


WLSは、インストールするとWindowsのメニューからLinuxが起動できます

画面では、Ubuntuをインストールしてた時のメニューです。


「Ubuntu」のアイコンから起動すると、コマンドプロンプトやPowerShellと同じような感じでUbuntuが起動されてきます。


WSL2(Windows Subsystem for Linux)のインストール

WSL2を使うために、公式ページに沿ってインストールを進めていきます。

公式ページの「Windows 10 用 Windows Subsystem for Linux のインストール ガイド」


ただ、この公式ページに沿ってインストールを進めましたが、いくつか躓いた点があります。

中でも、一番困ったのが「WSL2を実行するには、カーネルコンポーネントの更新が必要です」というエラーの解消でした。

※後で、詳しく説明します。


手順は、大きく4STEPです。

  • STEP1
    Widows10のバージョン確認

    WSLが使用できるWindows10のバージョンか、確認します。
    バージョンアップが必要であれば、Windows10のバージョンアップを行います。

  • STEP2
    WSL1の設定

    「Linux 用 Windows サブシステム」オプションを有効化することで、WSL1を使用できるようにします。

  • STEP3
    WSL2へのバージョンアップ

    「仮想マシン プラットフォーム」オプションを有効化します。

    さらに、カーネルのバージョンアップを行い、WSL2の設定を行います。

    ※ここで、はまりました。

  • STEP4
    Linuxのインストール

    Microsoft Storeから希望のLinuxを入手し、インストールします。

    今回は、Ubuntuをインストールします。

Widows10のバージョン確認

WSL2は、Windows10のバージョンが1903以降、ビルド 18362 以上のWindows10である必要があります。

このバージョンより古いバージョンの場合には、Windows10のバージョンアップが必要になります。


Windowws10のバージョン確認方法は、「Windows」キー+「R」を押して、「winver」を実行します。

Windows10のバージョンが表示されるので、確認します。

Widows10のバージョンアップ

WSL2をインストールすることができるバージョンではなかった場合には、Windows10をバージョンアップします。

Windwowsのダウンロードページから最新バージョンへアップデートします。


ダウンロードページの「今すぐアップデート」を選択すると、アップデート用のプログラムがダウンロードされるので、それを実行して、アップデートします。


ダウンロードされたプログラムを実行し、Windows10を最新版へアップデートします。

Windows10のバージョンアップの確認画面が表示されるので、「今すぐ更新」でバージョンアップを開始します。


PCのインストール要件を満たしているかチェックが行われます。

問題がなければ、「次へ」を押します。


更新プログラムのダウンロードが自動的に開始されます。

ダウンロードが完了するまでしばらく時間がかかるので、待ちます。


更新プログラムのダウンロードが完了すると、「今すぐ再起動」でWindows10の更新が始まります。


何度か、再起動を行うとWindows10のバージョンアップが完了しますので、更新されたバージョンを確認します。

バージョンが2004 ビルド 19041.508にバージョンアップされました。

※2020年9月22日時点でWindows10を更新した時のバージョンです。

Windows10がバージョンアップされました。

元のバージョン   :Windows10 Pro バージョン 1909(OSビルド 18363.1110)

更新されたバージョン:Windows10 Pro バージョン 2004(OSビルド 19041.572)

WSL1の設定

「Linux 用 Windows サブシステム」 オプション機能の有効化することで、WSL1を使用できるようにします。


「Linux 用 Windows サブシステム」 オプション機能の有効化

管理者としてPowweShellを開き、「Linux 用 Windows サブシステム」 オプション機能の有効化コマンドを実行します。

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


このコマンドを実行し、「Linux 用 Windows サブシステム」 オプション機能を有効化します。


「Linux 用 Windows サブシステム」 オプション機能の有効化コマンドを実行後、再起動を行います。

これで、WSL1が使える状態になりました。

WSL1環境でLinuxを使う場合は、ここでMicrosoft StoreからLinuxを入手し、インストールします。

無効化

「Linux 用 Windows サブシステム」 オプション機能を有効化したが、何らかの理由で無効化したい場合は、

「コントロール パネル」ー「プログラムと機能」ー「Windows の機能の有効化または無効化」から、

「Linux 用 Windows サブシステム」のチェックを外します。

これで、無効化することができます。

WSL2へのバージョンアップ

WSL2へバージョンアップは、

「仮想マシン プラットフォーム” オプション機能の有効化」し、

「カーネルコンポーネントの更新」

します。


この「カーネルコンポーネントの更新」ではまってしまいました。


仮想マシン プラットフォーム” オプション機能の有効化

WSL2を使用するための「仮想マシン プラットフォーム” オプション機能の有効化」コマンドを実行します。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart


コマンドを実行します。


ここで、日本語の公式ページでは、

さらっと

WSL2へ更新し、再起動

とあるので、再起動するとWSL2のコンポーネントがダウンロードされインストールされるものと勘違いしてしまいました。

その為、この後のWSL2を規定のバージョンに設定するところで「カーネルコンポーネントを更新してください」とエラーが出続けました・・・。


このエラーが出ているときは、WSL2に更新されていないので、カーネルのアップデートをしなければなりません。


実際は、WSL2のカーネルをアップデートするプログラムをダウンロードして、実行する必要があります。

いろいろ調べた結果、日本語ページではダウンロードできなかったので英語のページでカーネルアップロード用プログラムがダウンロードできましたので

 

こちらからダウンロードしました(英語のページ)

 

ダウンロードしたプログラムを実行するとカーネルが更新されます。


カーネル更新プログラムを実行し、「Next」を押します。


しばらくするとインストールが完了するので、「Finish」でカーネル更新完了です。


ここで、再起動を行います。

WSL 2 を既定のバージョンとして設定する

WSL2をデフォルトの環境とするコマンドを実行します。

wsl --set-default-version 2


これで、この後のLinuxをインストールした時にWSL2環境にインストールされるようになります。


Ubuntuをインストールする

Microsoft Store を開き、希望する Linux ディストリビューションを選択します


今回は、Ubuntuをインストールしますので、「Ubuntu」を選択します。

「ubuntu」のページが表示されますので「入手」を押して、インストールを行います。


サインインして、複数デバイスで使用するか、確認メッセージが表示されますので必要に応じてサインインしてください。

ここでは、「必要ありません」を選択し進みます。


ダウンロードが始まりますので、完了するまでしばらく待ちます。


ファイルのダウンロードが完了すると自動的に、インストールが始まります。


インストールが完了するとWindowsからの通知と、メニューに追加されます。

通知です。


インストールされたubuntuを起動するとログインユーザ、パスワードの設定をします。

最初に、ユーザの設定を行うと次回以降は、ログインされた状態で起動します。

まとめ

WLSで、Ubuntuを使用できる環境を作りました。

ただ、本来やりたかったAI関連のソフトを動かすためにグラフィックボードをWSL環境で認識させることはできませんでした。


仕方がないので、デュアルブート環境を作成してWindows10とUbuntuを使うようにしました。

ただ、Windows Insider Programに参加している方は、最新のWindowsの機能としてWSLからグラフィックボードを認識させられるようになっています。

Windows Insider Programに参加して、先行版のWindowsをインストールしようとも考えましたが、少し怖いので製品版が出るのを待つことにしました。

製品版が出たら、最新のWSLを試してみたいと思います。

コメント

タイトルとURLをコピーしました