（メモ）WSL2でUbuntuを立ち上げる際のエラー３件

## 概要・ことの発端
Windows11のPCでWSL2を使用してUbuntuを立ち上げようとした際にエラーになり、
エラーメッセージを頼りに無事にUbuntuが動くところまで対応した備忘録です。

[公式ドキュメント](https://learn.microsoft.com/ja-jp/windows/wsl/install)曰くWindows11であれば本来は **"wsl --instal"** コマンドだけで完結するはずなのですが、何故か中途半端にWSLをインストールしていた（？）ようで、ubuntuをインストールしていざ起動しようとした際にエラーが出てしまいました。


エラーメッセージ自体はWindows10でも同じ内容じゃないかな？と思います。


## 結論
**wsl --status コマンドが便利！**
エラーメッセージでもだいたいのことがわかりますが、statusコマンドは現時点で何が足りていないかを教えてくれるのでわかりやすかったです。

以下、エラー詳細です。

## Error: 0x80370102 
Ubuntuを起動した際にまずこのエラーが出ました。
```powershell
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102 ??????????????????????????????????????
```
エラーメッセージが文字化けしていると怖いですね。狂気を感じる。
エラー番号で検索するだけでも対処が見つかったようですが、ここで何故か慌てふためき"wsl --status"を打ってしまった私。
結果としてはこれがよかったです。
```powershell
PS C:\Users\user16\.ssh> wsl --status
既定のバージョン: 2
Windows の仮想マシン プラットフォーム機能を有効にして、BIOS で仮想化が有効になっていることを確認してください。
詳細については https://aka.ms/enablevirtualization を参照してください
```
親切！

### 対応：
#### コントロールパネルから
＞「コントロールパネル」＞「Windowsの機能の有効化または無効化」から、
 **「仮想マシン　プラットフォーム」** をクリックして有効化、「OK」ボタンで確定。
PCを再起動します。
※Windows11ではデフォルトでオンになっていると聞いていたのになぜ……

#### コマンドから
PowerShellなどを管理者権限で起動して、下記コマンドでも同じ設定が可能です。
```shell
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
```
#### BIOSから
慣れている方はBIOSの設定からでも。
仮想化を有効にする設定をPCメーカーごとにまとめているサイトがありました（すごい）

https://www.mumuplayer.com/jp/faq/index.html#2



## Error: 0x800701bc
さて解決！と思ったら引き続き出たエラーがこちらです。
```powershell
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ???????????? ??????????????????????? https://aka.ms/wsl2kernel ?????????
```
？が増えています。SAN値チェック…？

記載のリンク先 https://aka.ms/wsl2kernel を見るに、WSL2 Linux カーネルの最新バージョンをインストールすればよいようです。
なお、この状態でもstatusコマンドを打った結果がこちら。
```powershell
PS C:\Users\user16> wsl --status
既定のバージョン: 2

Linux 用 Windows サブシステム カーネルは、'wsl --update' を使用して手動で更新できますが、システム設定が原因で自動更新が 発生することはありません。
カーネルの自動更新を受け取るには、 Windows Update の設定を有効にしてください:' Windowsの更新に、その他のMicrosoftの製品 の更新情報を受け取る'。
詳細については、 https://aka.ms/wsl2kernel.
 を参照してください
WSL 2 カーネル ファイルが見つかりません。カーネルを更新または復元するには、'wsl.exe --update' を実行してください。
```
わかりやすいですね。

### 対応：
指示された通り ' **wsl --update** 'コマンド。
```powershell
PS C:\Users\user16> wsl --update
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
```
カーネルのインストールができました。
これでUbuntuが無事に立ち上がり、アカウントを作成して完了です！
```powershell
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: user16  #使用したいユーザー名を入力します
New password:                    #パスワードを入力します
Retype new password:             #パスワードを再入力
passwd: password updated successfully
この操作を正しく終了しました。
Installation successful!
```
めでたしめでたし。


## Error: 0x004000d 
このエラーメッセージが出る場合もあるようです（メモが残っていたので出たのかもしれない…）

### 対応：
＞「コントロールパネル」＞「Windowsの機能の有効化または無効化」から、
 **「Linux用Windowsサブシステム」** をクリックして有効化、「OK」、PCを再起動します。

#### コマンドから
仮想システム～の設定と同様、下記コマンドでもOKです。実行後、再起動。
```shell
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

## まとめ
つまるところ公式ドキュメント（下記）に書いてあることを１からやった方が早かった、ということですね。反省。

https://learn.microsoft.com/ja-jp/windows/wsl/install-manual

あと、環境構築を半端な状態で止めておくと後で大変なことになるなと。

ひとまずコマンドの親切さを実感できたので、今回はこれで良しとしたいと思います。

以上、ここまでお読みいただきありがとうございました！