Memo/Windows/10/WSL/2

https://dexlab.net:443/pukiwiki/index.php?Memo/Windows/10/WSL/2
 

WSL2


Win/WSLでのファイルアクセス

  • PowerShellからWSL上のファイルへアクセス
    wsl -d CentOS7 -e cat /etc/os-release
    ...
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ...
  • WSLからWin上のファイルへアクセス。/mnt経由でアクセスできる
    ls /mnt/
    c  d wsl
  • WSLからWinのエクスプローラ起動、カレントディレクトリが開く
    explorer.exe .
    
    # \\wsl$\CentOS7\home\<user> が開く
  • WSLからWinアプリで関連付けされたファイルを開く wslu 参照
  • VSCodeで開く。 Remote Development 参照

WSL1から2へ移行

  • 対象
    • Win10 2004以降
    • Win10 1903, 1906 + KB4566116以降
    • PowerShellでバージョンの確認をする場合: Win 10 2004の場合
      $PSVersionTable.BuildVersion
      Major  Minor  Build  Revision
      -----  -----  -----  --------
      10     0      19041  1
  • 現在のWSLバージョンを確認。「VERSION」が「1」な箇所がWSL1。オプションの順序が重要「-v -l」だとエラーになる。
    wsl -l -v
      NAME       STATE           VERSION
    * Ubuntu     Running         1
      CentOS7    Stopped         1
  • VirtualMachinePlatform機能の有効化。管理者権限でPowerShellから
    Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
    • これが無効だと、wsl2へ変更する際に「Windows の仮想マシン プラットフォーム機能を有効にして、BIOS で仮想化が有効になっていることを確認してください。」と表示される
  • 例: NAME: CentOS7をWSL2へ移行してみる。一般ユーザで実行できた。約2分かかった
    wsl --set-version CentOS7 2
    
    # 確認
    wsl -l -v
      NAME       STATE           VERSION
    * Ubuntu     Running         1
      CentOS7    Running         2

Docker


トラブルシューティング


VirtualBoxと競合する

  • WSL2はHyper-Vを使うので、VirtualBox等のHyper-V非対応のバージョンと競合する。競合する場合は、VirtualBox, Dockerが起動しない。
  • VirtualBox 6.0.22でのエラー
    Stderr: VBoxManage.exe: error: Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED)
  • VirtualBox 6.1.12ではうまく動作した。

WSL1との違い

WSL1:

  • LXCore/LXSSカーネルドライバが、Linuxのシステムコール等を変換して実行。Linux kernelは使っていない。
  • NTFSの拡張メタデータを使って、owner/permission等を実現していている。ファイルアクセスが遅い。
  • NTFSの拡張メタデータ非対応のアプリで、linuxファイルを変更すると、owner/permission情報が壊れる。
  • ネイティブdockerが動かない。Docker Desktop for WindowsのWSLサポートは動く。WSL上のファイルは直接dockerから参照できないので、docker for windowsから見えるパスにファイルを置く必要がある。 Memo/Windows/10/WSL/Docker#ge39a8e8

WSL2:

  • 軽量VM上で実行される。
  • VM上のlinux kernelを使うので互換性が高い。
  • 仮想ハードウェアディスク(VHD)上にext4等のファイルシステムを使用
  • WSL2はHyper-Vを使う。VirtualBoxの未対応バージョンと競合し、VirtualBoxが起動しない。

記事:


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-08-29 (土) 23:49:31 (29d)