WSL2 上の ArchWSL で歯車を回す

Windows 10 May 2020 Update がリリースされて、マイ PC でも WSL2 が使えるようになった。おめでたい🎉

折角なので、WSL2 で ArchWSL をセットアップし、OpenGL デモでお馴染みの glxgears で歯車を回していく。

前提条件

  • Windows 10 May 2020 Update にアップグレードしている
  • PowerShell 7.0 をインストールしている
  • Chocolatey をインストールしている

WSL2 を使えるようにする

管理者モード PowerShell で Micorosoft テクニカルマニュアル ( https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 ) に載っている手順を実行する。 wsl コマンドはデフォルト WSL バージョンを 2 にするもので、これは省いても良い。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

WSL を一度も使ったことがないなら、最後のコマンドで再起動を求められるため再起動する。

また、Windows 10 May 2020 Update 淹れ立てだと WSL2 対応カーネルがインストールされていないのでインストールする。

docs.microsoft.com

ArchWSL をインストール

少しのことにも、先達はあらまほしき事なり、と徒然草にも書かれている。 恥ずかしい失敗をしないためにも、偉大な先達を参考に進めていく。

qiita.com

yuk7 版 ArchWSL GitHub リポジトリの release から zip をダウンロードして、適当な所に展開する。ここでは C:\wsl\arch とする。

github.com

とりあえず Arch.exe を起動すると、インストールプロセスが開始される。

インストールが完了したら、Arch.exe を起動してユーザを作成する。 mkdir は素 useradd してしまったからだが、賢明な皆様は useradd で作らせた方が良い。

useradd sakra
passwd sakra
mkdir /home/sakra

いったん ArchWSL から出て、管理者モード PowerShell でデフォルトログインユーザをさっき作成したユーザにする。

.\Arch.exe config --default-user sakra

ArchWSL に入り直して、sudoers に入れる。

EDITOR=vim visudo

pacman のミラーリポジトリを有効化する。あとで wine を使いたい人は pacman.conf で multilib リポジトリコメントアウトを外すように。

# ミラーリポジトリ
sudo vim /etc/pacman.d/mirrorlist
# リポジトリとか
sudo vim /etc/pacman.conf

pacman キーリングをセットアップする。

# 初期化
sudo pacman-key --init
# インストール
sudo pacman-key --populate
# 更新
sudo pacman -Syy archlinux-keyring

最低限必要なパッケージをインストールする。

sudo pacman -Syyuu --needed base-devel git go progress python mesa-demos xorg-xauth

Yay をインストールする。

git clone https://aur.archlinux.org/yay-git.git
sudo sed -i -e /exit\ \$E_ROOT/d /bin/makepkg
cd yay-git
makepkg
sudo pacman -U yay-git-*.pkg.tar.*

ArchWSL から出て、管理者モード PowerShell で ArchWSL を WSL2 に変換する。

wsl --set-version Arch 2

結構時間が掛かるのでコーヒーでも淹れて待つと良い。

Vcxsrv をインストール

管理者モード PowerShell で Chocolatey で vcxsrv をインストールする。

choco install vcxsrv

Vcxsrv を起動し、初回設定を行う。ほとんどは任意の設定で良いが、最後の Extra Settings で必ず Native opengl を無効にする(重要)。これをせずに進めると、あとで一向に動かない歯車を見ることになる。

f:id:anon_193:20200530232818p:plain

初期設定が完了したら、Windows ファイアウォールのプロンプトが表示される。強化された Windows ファイアウォールは WSL2 用バーチャルインタフェースをパブリックネットワークとみなすため、パブリックネットワークを許可する。

f:id:anon_193:20200530221444p:plain

見逃したら、強化された Windows ファイアウォールを起動し、パブリックネットワーク規則を拒否から許可に変更する。

セキュリティ確保のため、何れのケースでもスコープのリモート IP を WSL2 が使っているアドレス空間に制限することを強く推奨する。

X トークン認証を設定する

ユーザーモード PowerShell で Vcxsrv インストールディレクトリに入って、信頼されたトークンを発行する。

$Env:DISPLAY=localhost:0
.\xauth.exe generate <ローカルマシンのコンピュータ名>.mshome.net:0 . trusted
.\xauth.exe list

表示されたトークンを ArchWSL のユーザに登録する。

xauth add <トークン>

glxgears を起動する

DISPLAY 環境変数を設定し、満を持して glxgears を起動する。

export DISPLAY=_gateway:0
glxgears

f:id:anon_193:20200530233958p:plain