GentooWSLの構築

## はじめに
**これはGentoo馬鹿のGentoo馬鹿によるGentoo馬鹿のための記事である。**
ここではGentooをWSLにインストール、アンインストールの方法のみを紹介している。 **#GentooInstallBattle** の部分については全く触れないので悪しからず。
### 前提条件
__WSL2がインストール済みかつ、デフォルトのWSLバージョンがWSL2であること。__
>MicrosoftによるドキュメントがあるのでまだWSL2にしてない人はこちらから
[Windows 10 用 Windows Subsystem for Linux のインストール ガイド](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)

## インストール
今回は `C:\Users\username\wsl\Gentoo` ディレクトリにGentooWSLをインストールしていく。
なおインストールする場所については自由である。
あとからディレクトリを変更するのは色々と面倒なことが起こるのでよく考えて決めたほうがいい。

```
C:\Users\username\wsl\Gentoo
                         ├── Gentoo.exe（これは任意）
                         └── ext4.vhdx
```

こんな感じで構築していく。
任意の`Gentoo.exe`に関してはここで触れている。[「Gentoo.exeを作成しexeから起動できるようにする」](https://qiita.com/nashinium/items/d6f6c04a98edf847f195#gentooexe%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97exe%E3%81%8B%E3%82%89%E8%B5%B7%E5%8B%95%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E4%BB%BB%E6%84%8F)
あとあと触れるので現時点では`Gentoo.exe`について考えなくてよい。
### stage3をダウンロードする
次のmirrorサイトからstage3をダウンロードする。https://ftp.jaist.ac.jp/pub/Linux/Gentoo//releases/amd64/autobuilds/
WSL2上で動作するLinuxは基本的にMicrosoftによってカスタムされたinitシステムを使用しているので
**SystemdやOpenRCが含まれていないものをtarballで**ダウンロードする。

>WSLのinitシステムをsystemdにすることは可能らしい。試したい変態はこちらを参照。（自己責任で）
https://github.com/arkane-systems/genie

:::note warn
WSL1は32bitに対応していなかったためnomultilibにする必要があったがWSL2からは32bitもサポートされるようになったのでmultilibでも理論上問題ない。
:::


### WSLにtarballをインポートする
ダウンロードした.tar.xzファイルを解凍し.tarファイルを中から取り出す。
Powershell上で以下のコマンドを入力。

```powershell:PowerShell
wsl --import Gentoo C:\Users\username\wsl\Gentoo\ C:\Users\username\Downloads\stage3-amd64-*.tar --version 2
# stage3-amd64-*.tar の '*' の部分はバージョン番号
```
`ext4.vhdx`が作成されればOK。

:::note alert
 .tar.gz や .tar.xz を直接インポートしようとするとエラーが起こるので .tar でインポートするようにすること。
:::
> Microsoft公式によるドキュメント
[WSL で使用する Linux ディストリビューションをインポートする（tar ファイルを WSL にインポートする）](https://docs.microsoft.com/ja-jp/windows/wsl/use-custom-distro#add-wsl-specific-components-like-a-default-user)

### WSLのバージョンの確認とGentooWSLの起動
#### バージョンを確認する
まずはインストールしたGentooWSLがWSL2か否かを確認する。以下のコマンドをPowershellで実行し、バージョンを確認する。
GentooのVERSIONが2であれば問題ない。

```powershell:PowerShell
wsl -l -v

# 筆者の環境での出力結果
  NAME      STATE           VERSION
* Ubuntu    Stopped         2
  Arch      Stopped         2
  Gentoo    Stopped         2
```
#### GentooWSLを起動する
以下のコマンドをPowershellで実行する。

```powershell:PowerShell
wsl -d Gentoo
```

### Gentoo.exeを作成しexeから起動できるようにする（任意）
これは無ければいけないものではないが、あるとものすごく便利なので**強くおすすめ**しておく。
次のリンクから`wsldl.exe`をダウンロードする。 https://github.com/yuk7/wsldl/releases

1. ダウンロードしてきた`wsldl.exe`を`ext4.vhdx`があるディレクトリに移す。
1. `wsldl.exe`を`Gentoo.exe`に名前を変更する。
1. `Gentoo.exe`を実行する。
1. おわり

>exeのアイコンをGentooのアイコンにしたいのならば、先ほどのリンクから`icons.zip`をダウンロード、解凍して中の`Gentoo.exe`を`ext4.vhdx`と同じディレクトリに移せばOK。

これを導入したことによっていろんな便利なオプションが使えるようになる。wslコマンドでは設定できない起動時のデフォルトユーザーを設定できたりする。詳しくは次のリンクから [おまけ-デフォルトユーザーを設定する](https://qiita.com/nashinium/items/d6f6c04a98edf847f195#%E3%81%8A%E3%81%BE%E3%81%91--gentooexe-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B)
exeの詳しいオプションは https://github.com/yuk7/wsldl/blob/main/README.md の **exe Usage** をチェック。

## アンインストール
2つの方法がある。
#### １：wslコマンド（Powershell上）
```powershell:PowerShell
wsl --unregister Gentoo
```

#### ２：exeのオプションを使用して（Powershell上）
`Gentoo.exe`があるディレクトリでPowershellを開き、以下のコマンドを実行する。yesかnoを聞かれるので`y`と入力する。

```powershell:PowerShell
.\Gentoo.exe clean

# Prompt
This will remove this distro (Gentoo) from the filesystem.                                                              
Are you sure you would like to proceed? (This cannot be undone)                                                         
Type "y" to continue:     # ここで 'y' と入力しEnter
```
##### アンインストールの確認 
無事アンインストールされたか否かを確認するにはPowershellで以下のコマンドを入力して
リストにGentooが無ければOK。

```powershell:PowerShell
wsl -l
```

## おわり？
これでWindows上でWSL2でGentooを動かすことができるようになった。だがこれで終わりじゃない。
ここからが本当の苦行である。**#GentooInstallBattle**


## おまけ：Gentoo.exe を使用してデフォルトユーザーを設定する
`Gentoo.exe`の簡単な使い方を一つ紹介する。
デフォルトでは起動時rootユーザーでWSLが起動してしまう。毎回 `su - username`打つのも精神衛生上よくない。
なので、ここではGentooWSLの起動時のデフォルトユーザーを設定する。すでにユーザーが作成されているものとする。
`Gentoo.exe`があるディレクトリでPowershellで以下のコマンドを入力する。

```powershell:PowerShell
.\Gentoo.exe config --default-user username  # username を作成したユーザーネームに置き換える。
```