Windows11 でWSL2を有効化 

# Windows11でWSL2を使うときのおさらい 

私含めて某で数人ハマってたので備忘録。

要点先に言うと
- hypre-vも有効にしないと
- Xserver を立てなくてもよいよ
の2点です

### Windows10は...
今までは
・WindowsXP/7 でCygwin
・Windows10でWSL/WSL2
と使ってきたからXserverの立ち上げとか`export DISPLY=hogehoge` に苦労してきたわけなんですが、この度Windows11をつかうことになって、ちょっと教えてもらったり、調べたりしたわけです。

っていうか、みなさんはChatGPTに聞きましょう。
私は試してないけど詳しく教えてくれるはず。

さて、では順番に

# WSLの有効化

- コントロールパネルを立ち上げます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/2b6a3ce6-c550-eaf8-4e92-360ef6bd5a73.png)

- プログラムと機能をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/49b0fb36-3f79-81fc-ca35-91eea2d09fec.png)

- Windowsの機能の有効化または無効化をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/e5840a5f-e1ce-44ce-b5d1-a7179a747c88.png)

- 「Linux 用 Windows サブシステム」をチェックして有効化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/5c77485b-3e37-f594-be91-97d09d308d2e.png)

- 「Hype-V」をチェックして有効化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/2df0cc1e-17eb-9e21-3371-5bf179d2733d.png)

- 再起動

まずは準備です。

### hyper-vの設定
Windows11のWSLの仕組み知らなかったんだけど、っていうかよくわかってないけど、WSL2がWindows11（正確には10 Pro?）ではHyper-Vの機能利用していて、仮想マシンを入れ子構造でつかっているとかなんとか。
とりあえず、Windows10 のWSL2までの知識では駄目でした。

ここらへんが参考になりました
https://sabakunotabito.hatenablog.com/entry/2021/10/17/203525


# インストール

管理者権限からPowerShellを立ち上げる。

検索かけれると右側にモードが出てくるので、落ち着いて「管理者として実行する」をえらんでたちあげる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/7e461f5d-4708-49e0-d7f6-6900bdf2769f.png)

立ち上がったら下記のコマンドを入れる
```
PS C:\> wsl --install
```

### Error コード

Store版を入れると　`Error code : 0x8007019`　で起動しないとか聞くので、例えばマシンの管理権限がない場合とか、素直に管理者権限でPowerShellを立ち上げるのが良い。

※　`Error code : 0x800701bc`　の場合は、私はならなかったが、下記のサイトで `"x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ"` を取ってきて、カーネル更新プログラムを実行させたらできたと聞いた。
参考「手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする」
https://learn.microsoft.com/ja-jp/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package


# ユーザ作成

例えば `hogehoge` というユーザを作る時はこんな感じです。
bashは好きなのに変えてください
```
# adduser --home /home/hogehoge --shell /bin/bash hogehoge
```

あと、sudo叩くのに
```
# usermod -aG sudo hogehoge
```
もしておくと。

で、おおよそ最初はいきなりroot環境になっちゃってたりするので、`/root/.bashrc` の最後に `su - hogehoge` と書いておくと、次回からはデフォルトで hogehogeのユーザから始まります。

> ※追記 2023/06/24
> root権限付与する前にrootの .bashrcを改編するとあとから修正できなくてパニックになります．
> っていうのを昔経験して，対処方法をgooブログに書いていたので追記．
> 解決方法は　Power Shell から `wsl -u root` を打ち込こむとrootで作業ができます
> 参考：　https://blog.goo.ne.jp/tatsushi_d-_-b/e/1a4bd5f455fe32b1f498ee181e7a8f86


# Xwindow
使い込んでないけど、楽だな、って思ったのがXserver系を立ち上げてておかなくても
```
# apt install X11-apps
```
って入れて（私は `apt install "X11-utils*"`とかで一気に入れちゃったけど）、`xeyes` を立ち上げると。
```
# xeyes&
```
と打ち込むとこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/08bb9381-67df-4a79-d561-edfda0d978be.png)

ユーザモードだと、たぶん何もしないと
```
# su - hogehoge

$ xeyes &
[1] 12345
$ Error: Can't open display:
```
とエラーになるので、
```
# su - hogehoge

$ export DISPLAY=:0
$ xeyes &
```
と、最初にDISPLAYの設定をしてあげましょう。
ちゃんと出ます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3307766/1182df6e-2869-d118-0aeb-9523e10934ae.png)

Windows10 のWSL2だと、WSL2の環境のIPを取ってこないとダメだったので、もっと複雑な呪文を唱えていたけど、Windows11 WSL2 だと、シンプルに`$ export DISPLAY=:0` でいけました。

Ubuntu立ちあげてから最初にXwindowの何かを立ち上げるときはまぁまぁ時間がかかるのですが、一度立ち上げるとあとは快適になります。

とりあえずここまで設定できて環境のベースができれば、後は apt で必要なものを入れるだけになってくるので気が楽です。


久しぶりに新しいPCに、使ったことのないOSで環境構築しているので、色々と不安と手間が。
今更だけど、他にも困っている人がいればとりあえず参考にでも。