Windows10でWSLを使うときのメモ

#免責
この記事に従って発生した如何なる損害も筆者は負うことができません。ご免なさい。

#はじめに
Windowsパソコンを使っているので自分用にメモします。
**Windows操作に詳しくないので間違いがあると思います。**
主にWSLをうまく使いたいので、そのための個人的なメモです。

#自分のためのショートカットメモ
* https://www.microsoft.com/ja-jp/software-download/windows10
* 「**\\\wsl$**」からアクセス
* 「Get-CimInstance Win32_OperatingSystem」か「Get-WmiObject Win32_OperatingSystem」

````shell-session:PowerShell.old
$ wslpath -w /etc/
\\wsl$\Ubuntu-20.04\etc
````

#Windows10のビルドバージョン
アップデーターは「[Windows 10 のダウンロード](https://www.microsoft.com/ja-jp/software-download/windows10)」というサイトから拾います。
**SDカードやUSBメモリーを接続したままだとアップデートに失敗することがあります。**

|リリース日|リリース名|ビルドバージョン|コードネーム|ネットニュースで話題|
|:--|:--|:--:|:---------:|:---------|
|MAY 27, 2019|[May 2019 Update](https://blogs.windows.com/japan/2019/05/27/how-to-get-the-windows-10-may-2019-update/)  | Build 18362 |19H1|WSLのファイルシステムがネットワークアドレス(**\\\wsl$**)に追加される。
|NOVEMBER 12, 2019 |[November 2019 Update](https://blogs.windows.com/japan/2019/11/19/how-to-get-the-windows-10-november-2019-update/)|Build 18363.448|19H2|WSL関連の話題なし。「SearchUI.EXE」によりCPU使用率が異常に高くなる問題が修正される。|
|MAY 27, 2020|[May 2020 Update](https://blogs.windows.com/windowsexperience/2020/05/27/how-to-get-the-windows-10-may-2020-update/)| Build 19041.264 |20H1|Hyper-V対応のWSL2。|

#Windows10のビルドバージョンを知る

キーボードから操作してみます。
PowerShellのバージョン毎に、知るためのコマンドが異なるようですので、ご注意を。

|PowerShell|キー入力|
|:--|:--|
|5以前|「Win+R」「powershell」「Get-WmiObject Win32_OperatingSystem」|
|6|「Win+R」「pwsh」「Get-CimInstance Win32_OperatingSystem」|

````shell-session:PowerShell.old
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\user1> Get-WmiObject Win32_OperatingSystem


SystemDirectory : C:\WINDOWS\system32
Organization    :
BuildNumber     : 18362
RegisteredUser  :
SerialNumber    : 00325-92400-00000-AAOEM
Version         : 10.0.18362



PS C:\Users\user1>
````

````shell-session:PowerShell6
PowerShell 6.2.1
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS C:\Users\user1> Get-CimInstance Win32_OperatingSystem

SystemDirectory     Organization BuildNumber RegisteredUser SerialNumber            Version
---------------     ------------ ----------- -------------- ------------            -------
C:\WINDOWS\system32              18362                      00325-92400-00000-AAOEM 10.0.18362

PS C:\Users\user1>
````

#PowerShell
新しいPowerShellを使ってみます。

* [新しいクロスプラットフォームの PowerShell をお試しください](https://github.com/PowerShell/PowerShell#get-powershell)

#WSLのファイルシステムにアクセス
Explorer.exeからWSLのファイルシステムにアクセスできます。
WSLのLinuxが動いている間は「**\\\wsl$**」からアクセスできます。Linuxを止めても出ていることもあり、消えるタイミングや基準は不明。
CIFSが動いているのか、Sambaが動いているのか、9Pらしいですが、コレジャナイ感。

#WSL2でブロックデバイスをマウント
[iSCSIConsole](https://github.com/TalAloni/iSCSIConsole)というユーザーモードiSCSIターゲットサーバを使えば、[iSCSI経由でマウントできるらしいです](https://github.com/jovton/USB-Storage-on-WSL2)が、やっぱりコレジャナイ感。
[VirtualHere](https://www.virtualhere.com/)という手もあるらしいですが、iSCSIとほぼ同じアーキテクチャで、これまたコレジャナ感。
VT-dで、パススルーして欲しいんです。DMAしたいんです。

#困ったときの記録
- wsl --set-version Ubuntu-20.04 2
  - 「仮想マシンまたはコンテナーからの応答が受信されなかったため、操作がタイムアウトしました。」と言われました。
  - Windows10を再起動したあとwslを一度も動かさないようにして、wsl --set-versionしました。
- wsl2起動時に「仮想マシンまたはコンテナーからの応答が受信されなかったため、操作がタイムアウトしました。」と言われる。
  - さらに[プロセスはコード 4294967295 で終了しました]と言われました。
  - タスクマネージャーをみたところVMmemというプロセスが物凄くCPUリソースを食べていました。
  - Windows10を再起動するまで正しく起動できませんでした。

#感想
WSLでUSBメモリをマウントしたいですが、[今世紀中には無理そう](https://github.com/microsoft/WSL/issues/689)な気がします。
Windowsの操作や専門用語は、いつも新鮮な感じがして、ワクワクします。