28
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows10 HomeのWSLをWSL2にアップグレードしてみた

Last updated at Posted at 2020-05-31

はじめに

WSL2にアップグレードする前に、Windows10 バージョン2004 ビルド19041に上げてみたをご覧ください。

WSL2へのアップグレード方法について、Windows 10 用 Windows Subsystem for Linux のインストール ガイドに書かれているようだが、WSLのインストール方法しか見つからない。「WSL 2 に更新する」とあるが、項目だけで、アップグレード方法らしき手順が見当たらない。

どうも、話しをまとめると、次の2点ができていれば良いだけらしい。

  • Windows Subsystem for Linux(Linux用Windowsサブシステム)のインストール
  • 仮想マシン プラットフォームをインストール

しかしながら、後で分かることだが、次の手順も必要。

  • インストール済みのLinuxディストリビューションをWSL2に設定
    • コンテナファイルをWSLからWSL2に変換するために、なんと、1ディストリビューション当たり1時間コース!!
  • WSL2 Linuxカーネル更新プログラムをインストール
  • 仮想ハードディスクファイルの圧縮と暗号化を解除

アップグレード手順?

次に混乱したのが、PowerShellのコマンドしか載っていないこと。
WindowsユーザはGUIだからWindowsを使い続けるのであって、コマンドラインベースの手順しか載せていないところから、この記事が広くWindowsユーザを対象としていないことが分かる。もちろん、Windows上でLinuxを動かそうとしているユーザはLinuxユーザに違いない訳だから、shellで書いてあるなら納得が行く。
PowerShellのような、どこから生まれた思想なのかも分からないコマンドを載せられても、誰も分からないし、戸惑うだけだと思います。

GUIの場合

という訳で、GUIからWSL2を有効化する方法は次の通りです。

  1. [スタートメニュー]をクリックする。
  2. [設定]をクリックする。
  3. [アプリ]をクリックする。
  4. [オプション機能]リンクをクリックする。
    image.png
  5. [Windowsのその他の機能]リンクをクリックする。
    image.png
  6. [Windowsの機能]ダイアログが表示されるので、[Linux用Windowsサブシステム]にチェックが付いていることを確認する。

image.png

  1. [仮想マシンプラットフォーム]にチェックを付ける。
    image.png
  2. 再起動を伴うため、まとめて再起動しましょう。[OK]ボタンをクリックする。
  3. [今すぐ再起動]ボタンをクリックする。
    image.png

CUIの場合

みんな大好きPowerShell(CUI)では、次のコマンドを実行します。

  1. PowerShell管理者としてコマンドプロンプトを起動します。

  2. [Linux用Windowsサブシステム]を有効化する。

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
  3. [仮想マシンプラットフォーム]を有効化する。

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
  4. オプションの機能が有効化されていることを確認する方法は次の通りです。grepのやり方が分からないので、ガンバってみてください。

    dism.exe /online /get-features
    
    機能名 : Microsoft-Windows-Subsystem-Linux
    状態 : 有効
    
    機能名 : VirtualMachinePlatform
    状態 : 有効
    

インストール済みのLinuxディストリビューションをWSL2に設定

  1. インストール済みのLinuxディストリビューションの一覧を表示する。

    wsl --list --verbose
    
      NAME          STATE           VERSION
    * Ubuntu        Stopped         1
      kali-linux    Stopped         1
    
  2. ここでは、インストール済みのUbuntuをWSL2にアップグレードします。

    wsl --set-version Ubuntu 2
    

WSL2 Linuxカーネル更新プログラムをインストール

  1. おや?
    指示通り、https://aka.ms/wsl2kernel にアクセスします。
    WSL 2 Linux カーネルの更新にリダイレクトされます。

    変換中です。この処理には数分かかることがあります...
    WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
    
  2. CPUアーキテクチャに従い、次のいずれかをダウンロードする。

  3. wsl_update_x64.msiをダブルクリックして起動する。
    image.png

  4. インストールが終了すると、次の画面が開くので、[Finish]ボタンをクリックする。

  5. もう一度、次のコマンドを実行します。

    wsl --set-version Ubuntu 2
    

仮想ハードディスクファイルの圧縮と暗号化を解除

  1. おや?
    エラーメッセージが変わった!急いでいるんですけど...。

    変換中です。この処理には数分かかることがあります...
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    仮想ディスク システムの制限により、要求された操作を完了できませんでした。仮想ハード ディスク ファイルの圧縮と暗号化が解 除されている必要があります。また、仮想ハード ディスク ファイルをスパースに設定することはできません。
    
  2. このページに「この問題の最新情報が追跡されている WSL Github スレッド #4103 を参照してください。」とあるので、アクセスした。

  3. 要するに、%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.*というフォルダの圧縮と暗号化を解除する必要がある。

  4. Windows Explorer%USERPROFILE%\AppData\Local\Packagesフォルダを開く。

  5. CanonicalGroupLimited.UbuntuonWindows_*で始まるファイルを探し、[右クリック]-[プロパティ]を開く。

  6. [詳細設定]ボタンをクリックする。
    image.png

  7. [内容を圧縮してディスク領域を節約する]のチェックを外し、[OK]ボタンをクリックする。
    image.png

  8. 元の[プロパティ]ダイアログに戻るので、[OK]ボタンをクリックする。

  9. [属性変更の確認]ダイアログが開くので、[変更をこのフォルダー、サブフォルダーおよびファイルに適用する]が選択されていることを確認し、[OK]ボタンをクリックする。
    image.png

  10. [属性の適用エラー]ダイアログが開くので、[すべて無視]ボタンをクリックする。
    image.png

  11. 属性の適用中ダイアログが開いて、変換処理が開始する。残りおよそ2時間45分...。

  12. さらに、もう一度、次のコマンドを実行します。

    wsl --set-version Ubuntu 2
    
    変換中です。この処理には数分かかることがあります...
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    変換が完了しました。
    
  13. ようやく終わりました。

    wsl --list --verbose
    
      NAME          STATE           VERSION
    * Ubuntu        Stopped         2
      kali-linux    Stopped         1
    

WSL2をデフォルトに設定

  1. WSL-WSL2の変換はもう懲り懲りなので、WSL2をデフォルトに設定します。

    wsl --set-default-version 2
    
  2. が、次のどのディストリビューションをダウンロードしても、WSL2ではエラーになってインストールできませんでした。
    WSLに変更すると、正常にインストールできるため、WSL-WSL2変換は避けては通れない?
    この辺りは宿題です。

Ubuntu 20.04 LTS

  1. Microsoft StoreからUbuntu 20.04 LTSインストールする。

  2. 一時的に、WSLに戻す。

    wsl --set-default-version 1
    
  3. Microsoft StoreからUbuntu 20.04 LTS起動する。
    image.png
    image.png

  4. Windows Explorer%USERPROFILE%\AppData\Local\Packagesフォルダを開く。

  5. CanonicalGroupLimited.Ubuntu20.04onWindows_*で始まるファイルを探し、[右クリック]-[プロパティ]を開く。

  6. [詳細設定]ボタンをクリックする。

  7. [内容を圧縮してディスク領域を節約する]のチェックを外し、[OK]ボタンをクリックする。

  8. 元の[プロパティ]ダイアログに戻るので、[OK]ボタンをクリックする。

  9. [属性変更の確認]ダイアログが開くので、[変更をこのフォルダー、サブフォルダーおよびファイルに適用する]が選択されていることを確認し、[OK]ボタンをクリックする。

  10. [属性の適用エラー]ダイアログが開くので、[すべて無視]ボタンをクリックする。

  11. 属性の適用中ダイアログが開いて、変換処理が開始する。残りおよそ7時間30分...。
    筆者の環境では40分程で完了。

  12. 次のコマンドを実行し、WSLからWSL2に変換する。
    筆者の環境では5分程で完了。

    wsl --set-version Ubuntu-20.04 2
    
    変換中です。この処理には数分かかることがあります...
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    変換が完了しました。
    
  13. ようやく終わりました。

    wsl --list --verbose
    
      NAME          STATE           VERSION
    * Ubuntu                 Stopped         2
      Ubuntu-20.04           Stopped         2
    
  14. WSL2に戻す。

    wsl --set-default-version 2
    

さいごに

EdgeはChromeのダウンローダー、PowerShellはWSLのインストーラーとして活躍の場を見出すことができました。1つのディストリビューションコンテナがあれば、Dockerを試せるので、次は、WSL2上でDockerを動かすことにチャレンジしたいと思います。

28
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?