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 対応カーネルがインストールされていないのでインストールする。
ArchWSL をインストール
少しのことにも、先達はあらまほしき事なり、と徒然草にも書かれている。 恥ずかしい失敗をしないためにも、偉大な先達を参考に進めていく。
yuk7 版 ArchWSL GitHub リポジトリの release から zip をダウンロードして、適当な所に展開する。ここでは C:\wsl\arch とする。
とりあえず 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 を無効にする(重要)。これをせずに進めると、あとで一向に動かない歯車を見ることになる。
初期設定が完了したら、Windows ファイアウォールのプロンプトが表示される。強化された Windows ファイアウォールは WSL2 用バーチャルインタフェースをパブリックネットワークとみなすため、パブリックネットワークを許可する。
見逃したら、強化された 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