Gentoo Install Battle for WSL2

この記事は [ここのえ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/99no_exit) Day 13 の記事です。

# Intro

普段の開発は「画面がデカい」とかいう至極単純な理由で、Windowsのデスクトップを使っています。

昔はノートPCに`Gentoo`や`Arch`を入れて大分遊んでいて、激安ノートだったのでswapを入れないとGUI環境がビルドできなくて四苦八苦したりしたいい
思い出があります。

最近はWSL用のX Window System である [**WSLG**](https://github.com/microsoft/wslg) も出たので、久々に遊んでみたいなと思い、WSLにGentooを入れてみることにしました。

残念ながらTwitterはおしまい！になってしまったので、`mikutter`でツイートするのをInstall Battleのゴールにできません。今回は代わりに `misskey` でノートするのを目標にしたいと思います。

# 構築

## WSL2でGentooを動かす

手始めにWSL2でGentooが動く環境を構築します。
驚くべきことに、公式でドキュメントが提供されています。これに従ってやっていきます。

https://wiki.gentoo.org/wiki/Gentoo_in_WSL

Powershell上でTarballをインポートして、Gentooを起動します。
```powershell
PS > wsl --import Gentoo D:\WSL\Gentoo .\stage3-amd64-systemd-mergedusr-20231112T170154Z.tar --version 2
PS > wsl -d Gentoo
```

systemdが動かないと話にならないので、`/etc/wsl.conf` に以下を追加します。
```/etc/wsl.conf
[boot]
systemd=true
```

Powershellに戻ってWSL全体を再起動して、Gentooに入りなおします。
```powershell
PS > wsl --shutdown
PS > wsl -d Gentoo
```

後はひたすら設定していきます。

```bash
# locale
nano /etc/locale.gen   # ja_JP.UTF-8をコメントアウト
locale-gen
localectl set-locale ja_JP.UTF-8
localectl set-keymap jp106   # 好みに応じて

# Rootのパスワード設定
$ passwd

# ローカルユーザの設定
useradd -m -G wheel <username>
passwd <username>
nano /etc/wsl.conf
```

```/etc/wsl.conf
# 以下のコンフィグを追記

[user]
default=<username>
```

```bash
# ミラー & 後で使うUSE FLAGの設定
nano /etc/portage/make.conf
```

```/etc/portage/make.conf
# 以下を追記
GENTOO_MIRRORS="http://ftp.iij.ad.jp/pub/linux/gentoo/ rsync://ftp.iij.ad.jp/pub/linux/gentoo/"
USE="X icu minizip inspector ibus dbus"
```

iij以外の好きなミラーを使う場合は、以下から探せます。

https://www.gentoo.org/downloads/mirrors/

```bash
# 更新
emerge-webrsync
emerge --ask --verbose --update --deep --newuse @world

# Sudo
emerge --ask app-admin/sudo
visudo
```

```
# %wheel の行をコメントアウト
%wheel ALL=(ALL:ALL) ALL
```

`sudo` の設定が終わったらexitして、以降はデフォルトユーザで作業します。

## グラフィカル環境

とりあえず `xeyes` を動かします。
今は [**WSLG**](https://github.com/microsoft/wslg) があるので楽ですね。

```bash
sudo emerge --ask x11-apps/xeyes
export DISPLAY=:0.0
xeyes
```

いつものアレが出ればOK。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617021/0288bb39-04a1-c3cf-7fd4-06d990bd57d4.png)

Chromiumをインストールします。無限に時間がかかります。覚悟します。

```bash
emerge --ask --update --deep --newuse @world
sudo emerge --ask www-client/chromium   # これやったら日が暮れて朝になった
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617021/b6094425-2447-16c2-9766-29fdec76ff42.png)

とりあえず出ました。
豆腐になっているのでフォントの解決と、入力系を設定していきます。

```bash
# Noto CJK Font
emerge --ask media-fonts/noto-cjk

# ibus + Mozc
emerge --ask app-i18n/mozc
ibus-setup # 適宜お好みの設定
```

Chromiumを起動して日本語入力できればOK！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617021/12fbc139-be45-37f6-0ae5-c1bfe35cb4ae.png)

`:send_money: :is_all_scam:`

# まとめ

意外と思ったよりも簡単に導入出来たのでびっくりでした。WSL2やっぱりすごいなあと改めて感心しました。
特にWSLGは初めて使ったのですが、本当に一瞬で `X` が使えるのでかなり便利です。

ただGentoo Install Battle的には、WSLで使うときは`Tarball`ベースでインポートしちゃうので、ファイルシステムとかブートローダーとか、カーネル周りのやつとか触らないのであんまりバトルしてる感がなくて物足りなさを感じずにはいられない……

<br/>

あ、俺たちの **X** は **X Window System** ですからね。誰が何と言おうと `Twitter` は `Twitter` なんだ……（錯乱）

# 参考

https://wiki.gentoo.org/wiki/How_to_read_and_write_in_Japanese/ja

https://zenn.dev/nanasess/articles/gentoo-on-wsl2