Palmsonntagmorgen

NGSデータを使った解析と、その周辺。

【Windows10】Windows PreviewにリリースされたWSL2をインストールしてみた (7/9追記あり)

WIndows上でLinuxをエミュレートするWindows Subsystem for Linux (WSL)はDockerに不完全な対応だったのですが、完全対応の「WSL 2」がいつのまにか使えるようになっていたので、試してみました。

forest.watch.impress.co.jp

Windows Insiderに登録

WSL2がリリースされている「Windows Insider Preview Build 18917」の提供はWindows Insider ProgramのFastリング向けなので、通常のWindows Updateではインストールされません。"Windows Insider Program"に登録して、開発版のUpdateをインストールできるようにしましょう。

(注:このリリースは開発者向けテスト版であるため、Windowsの予期せぬエラーが今後起きる可能性があります。「よくわからない」という方は、正式リリース(10月予定)まで待っておいた方が無難です。)

Windows Insider Program | 最新の Windows 機能を入手する

f:id:rnakato:20190707090010j:plain:w400

登録後、Windowsの「更新とセキュリティ」の画面でWindows Insider Program を選択し、Insiderの設定にFastを選択します。

登録後、あらためてWindows Updateを実行すると"Windows 10 Insider Preview18932"がインストールされました。

f:id:rnakato:20190707091223j:plain:w500

Hyper-Vの有効化

WSL2にはHyper-Vが必要です。Hyper-VWindowsにもともとインストールされていますが、有効化されていません。以下の手順で有効化しましょう。

(注:Hyper-Vを有効化するとVMWare が使えなくなりますので、VMWare を利用している人は注意。)

  • Windows の「アプリと機能」の一番下の関連設定にある「プログラムと機能」のリンクをクリック
  • 左のメニューの「Windows の機能の有効化または無効化」を選択
  • "Hyper-V" のボックスにチェックを入れてOKをクリック

(注2:もしHyper-Vの「Hyper-V プラットフォーム」がグレーアウトして有効化できない場合は、BIOSファームウェアで仮想化サポートが無効になっています。BIOS画面を立ち上げ、仮想化サポートを有効にしましょう。)

参考:

Windows 10 にHyper-Vの機能をインストールする (Windows Tips)

Hyper-Vを有効にする時のBIOSの設定 (HP EliteBook Folio 9470m) - メンチカツには醤油でしょ!!

WSL2のインストール

WSL1が既にインストールされている環境で、Windows Powershellを管理者権限で起動し、以下のコマンドを実行します。

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

Windowsを再起動した後、あらためてWindows Powershellを管理者権限で起動し、以下のコマンドを実行します。

wsl --set-version Ubuntu-18.04 2

これはUbuntu-18.04の場合のコマンドです。Ubuntu-18.04でないディストリをWSLにインストールしている場合は、適宜変更してください。
(現在インストールされているディストリは wsl cat /etc/issue または wsl -l -v で確認可能です。)

なお、"Windows 10 Insider Preview18932"がインストールされていない状態で上記コマンドを実行すると、「--set-versionというオプションはありません」というエラーになります。

確認

アップデートが完了すると(手元の環境では数分で完了しました)、WSL2が使えるようになります。使用感はWSL1と特に変わりありません。
Dockerをインストールしたところ、問題なく動くようです。Dockerについてはまた日を改めて書く予定です。

(7/9追記:アップデートに必要な時間は、どうもWSL上にどのくらいの量のファイルを置いているかに依存するようです(コピーとかしている?)たくさんファイルがある状態でやると数時間くらいかかりました。)

(8/3追記:WSL2にした時にVcXsrv が使えなくなる問題の解決法: https://github.com/microsoft/WSL/issues/4106
/etc/resolv.conf で表示されるnameserverのIPアドレスをDISPLAY変数に格納すればよいです。)