2021/12/27 時点では, Windows11 通常版(Build 22000.376. Insider preview 不要)で動きます!しかし利用はおすすめしません!
X11 ネイティブ(?)表示は Preview 段階のようですが, gnome-terminal など動かすのができて便利です.
なんか 22H2 にしたりとかだと NVIDIA では seg fault したりで,
また, sleep/suspend から復帰するとだめだったりと,
2023/02 時点では不都合多くてまともに使えなくなっているので, おすすめしないことにしました.
以下はログ用です. また, 最後のほうに work around 考えられるのを記載しました.
WSLg という名称らしい.
セットアップ
特に X11 用に設定は不要です.
WSL2 インストールは他にたくさん記事ありますのでそちらを参照ください.
ドライバは WSLg 用を求められますが, 少なくとも 2022/09 時点では NVIDIA では標準のドライバで対応しているようです.
$ sudo apt install x11-apps
あとは普通に x11 アプリをうごかすだけです!
(Windows 側で VcXsrv などの X11 server のインストール不要)
voila!
(なんか透過している?)
VcXsrv などの設定(e.g. DISPLAY
変数など)が残っているとうまくうごかないでしょう.
DISPLAY 設定は DISPLAY=:0
にしておく必要がありました(マルチモニタだと :1
とかも使えるんじゃろか?)
NVIDIA だと OpenGL, Vulkan 動かない可能性高い
なんだかんだで NVIDIA driver だと不安定で OpenGL, Vulkan 動かないケースがあるようです.
著者も一時期動いていましたが, いろいろアップデートしたら動かなくなりました
(segmentation fault する)
WSL で OpenGL/Vulkan 開発はあきらめたほうがいいかも.
OpenGL
とりあえず glxgears は動きました. 一応 OpenGL 3.x 動くっぽい(Mesa の D3D12 backend 使っている?)ようです.
OpenGL 4.x はだめでした.
また, X11 は使わずに直で描画しているっぽいようなので, LIBGL_ALWAYS_INDIRECT=1
を指定するとうごきませんでした.
CUDA
CUDA も動きます(WSL 用 CUDA インストールすれば)ので, GPGPU して X11 で GUI 表示もできるでしょう!
OptiX
OptiX は WSL CUDA driver が対応していないためか, 動きませんでした(optixInit() failed
になる)
Vulkan
最近(as of Dec 2022) Mesa(CPU) で vulkan が動くようにはなってきているようです.
また, GPU 対応もされつつあります.
ただまだ十分ではありません.
Window manager
デフォルトの window manager の見た目よくない... 変えたい...(Enlightenment とか, Awesome(Tiled window manager)とか...)
残念ながら現状ではできませんでした.
アプリ
firefox(Ubuntu snap で入るやつ)はなぜか動きませんでした.
mkdir: cannot create directory '/run/user/1000': Permission denied
Error: cannot open display: :0
snap + systemd 関連っぽい?
google chrome(.deb
でいれるやつ) は動きました.
不都合
systemd 入れると不都合ある
少なくとも Ubuntu 20.04 だと systemd 入れると X11 アプリ動かなくなるようです...
mono とかいれると不都合あり
binfmt(Widows 側は msrdc.exe
?) + systemd がらみのようです.
https://github.com/microsoft/wslg/issues/917
https://github.com/microsoft/WSL/issues/9257#issuecomment-1345550170
その他
wslg の git repo を見ましょう. ただ, あんまりまともな解決策は得られないですね...
2023/02 時点での回避策
- sleep/suspend しない
- wsld である程度いけるかも? https://github.com/nbdd0121/wsld
- もしくは Windows 側で
wsl.exe --shutdown
して WSL 再起動すればいける.
- systemd は入れない(WSL で Docker とかしない. Docker 使いたいときは non systemd なやりかたを使う)
- snap(snapd)入れない
- mono 関連(dotnet Linux も?)を入れない
- Wine 関連入れない
- binfmt とかが入ってややこしくなるっぽい
- NVIDA GPU 使わない(CUDA 使いたい場合は GUI 出すのを諦めるか, Mesa Software renderer を使う)
-
LIBGL_ALWAYS_SOFTWARE=1
環境変数をセットする.
-
- GL は Software rendering + VcxSrv を使う
- https://www.aise.ics.saitama-u.ac.jp/~gotoh/TroubleShootingAboutUbuntu2004OnWSL2.html
- 画面が出ない場合は firewall 設定で許可しているか確認する
- ただ font cache 毎回作ったりしているのか, vcxsrv だと X11 アプリ起動が遅かったりする