Windows11でLinuxのGUIアプリを動かしてみた

Windows10のWSL2WSLgを試してみたいと思い、Insider Previewを用意してアプデをしてみたら、Windows11のInsider Previewになってしまったので、今回はWindowsでLinuxのGUIアプリを動かせるWSLgをWindows11にて試してみることにしました。

また、今回は少々パワーが必要になるので、デスクトップ機にてVMware Workstation 16環境上のWindows11にて、WSL2gの環境を用意して検証してみました。ただ、大抵のアプリはWindowsにも移植されてたりするので、GUIアプリ目的で使う機会は少ないかなぁ。Hyper-Vで仮想環境としてLinux運用するよりも、WSL2としてLinuxを運用するほうがメリットは大きいような気がする。

※しかし、MicrosoftがLinuxを扱う時代が来るとは。ジョークサイトのネタが本物に。

今回利用するアプリ等

今回の環境は仮想環境内で仮想環境を動かすNested Virtualizationという環境になるので、環境設定のプロセッサにおいて、Windows11の環境を用意するにあたって、Intel VT-x/EPTまたはAMD-V/RVIを仮想化にチェックを入れておく必要性があります

※VMware Workstationのvmx設定ファイルに記述するならば、以下のような記述を追加しておく

※Windows10の場合、Insider Preview Build 21364以降ならば利用することが可能です。

図:仮想化支援機能をONにする必要性がある

事前準備

Hyper-VとWSLの有効化

環境構築の前に、Windows Subsystem for LinuxおよびHyper-Vの2つを有効化しておく必要があります。有効化しておかないと、Ubuntuのインストールやwslコマンドの利用に影響します。

  1. コントロールパネルを開く
  2. プログラムと機能を開く
  3. 左サイドパネルの「Windowsの機能の有効化または無効化」をクリックする
  4. Hypyer-VおよびLinux用Windowsサブシステムの2つにチェックを入れて有効化する
  5. 管理者権限でPowerShellを起動して、以下のコマンドを実行してサービスを有効化する

これをしておかないと、WSLは利用が出来ないので必ず行っておきます。きちんとHyper-Vが稼働してるかどうかは以下のコマンドで確かめることが可能です。

※仮想化

図:追加機能を有効化しないと使えない

Ubuntuをインストール

インストールと言っても、ISOファイルから仮想環境を起動してインストールではなく、Microsoft Storeアプリからインストールが可能になっています。コマンドラインからもインストールは出来ますが、こちらのほうが手軽です。

  1. Microsoft Storeアプリを起動する
  2. 検索にて、Ubuntuを検索する。今回はUbuntu Linux 18.04 LTSというものを選びます。
  3. 画面が出てきたらインストールをクリックする
  4. しばらく時間が経過すると、コマンドプロンプトが起動する
  5. トラブルが無ければ、UNIXNAMEを入れろという文が出てくるので、ユーザ名とパスワードを登録する
  6. installation successfullyと出たら完了。これでUbuntu Linuxが使えるようになってる

なお、コマンドラインの場合、管理者権限のPowerShellから

にてインストールする事が可能です。特に、Microsoft Storeから入れて0x80370109エラーが出て止まる場合は、コマンドラインからのインストールを推奨します。

図:手軽に入手することが可能になってる

図:アカウント登録の様子

Ubuntuのアンインストール

Ubuntu Linuxはアプリの1つとしてインストールされるので、他のアプリ同様に以下の手順でアンインストールする事が可能です。非常にお手軽ですね。

  1. 設定アプリを開く
  2. アプリと機能を開く
  3. Ubuntuがいるので、「︙」をクリックして、アンインストールをクリックするだけ。

図:Linuxを1アプリ扱いするWindows

システムのアップデート

Ubuntu Linuxが使えるようになったら、以下のコマンドを入力してOSのアップグレードを行っておきましょう。Linux自体のアップデート作業は結構掛かります。

なお、初期のカレントディレクトリは、Windows側の環境変数に於ける%USERPROFILE%のディレクトリとなっています。Linux側ではこのフォルダが、/mnt/c/Users/ユーザ名としてマウントされている状態で共有されます。このカレントディレクトリはWindows Terminalの設定->Ubuntu18.04のディレクトリの開始のパスで変更をすることが可能です。

図:これは定番の作業です

GUIアプリのインストールと起動

Chromebookの場合、コンテナにDebianをインストール後にそのままGUIアプリをインストールすれば、ChromeOS上でLinuxアプリが動作しました。同様に、WSLgではaptにてGUIアプリをインストールし、コマンドラインを叩けば、GUIアプリが起動する仕掛けになっています。

  1. Ubuntu Linuxを起動する
  2. ターミナル状態なので、コマンドラインからsudo apt install x11-apps -yを実行して、X11アプリをインストール
  3. 特にエラーがでなければ、続けて、xeyesを入力して起動する(結構起動まで時間が掛かります)
  4. 目玉のアプリが起動する

インストールしたアプリは、スタートメニューにも登録されているので、コマンドラインではなくクリックひとつで起動できるのも、Chromebookと同じですね。

図:Linux上でGUIアプリ開発もこれで手軽になる

追加作業

ネットワークが遅い

以前から言われていたWSLのネットワークの通信速度が遅い問題。どうやら、利用してるHyper-Vの仮想イーサネットアダプタが原因らしいのですが、デバイスマネージャ上には、該当するHyper-V Virtual Switch Extension Adapterは見当たらない。

しかし、PowerShell上で以下のコマンドラインを実行する事で、直接設定変更を行い、ネットワークの速度問題を解決できるとのこと。

  1. PowerShellを管理者権限で起動する
  2. 以下のコマンドラインを実行する
  3. その後再起動する

WSLを再起動する

まだ正式版ではなく、WSL2自体もInsider Previewとしてリリースされてるものであるため、挙動が怪しいシーンはたくさんあります。そんな場合、マシンの再起動も良いのですが、Windows Terminalから、wsl --shutdownしてから再度作業を再開すると上手くいくかもしれません。

実際、Ubuntuがなかなかストアからインストールできないなぁと思ってたシーンでは、一度シャットダウンしてから再度インストールを実行するとあっさりインストールできたりしました。

悩むよりも、wsl --shutdownですね。

ファイルシステムへのアクセス

WindowsからWSLのファイルシステム

WSL2からは、エクスプローラより簡単にWSL側のファイルシステムにネットワークドライブといった形でアクセスができるようになりました。アドレスに「\\wsl$」を入れてアクセスをするか?エクスプローラのサイドバーにある「Linux」をクリックすると、インストールしたUbuntuなどが見えるので、直接開いてファイルシステムの操作をすることが可能になっています。

図:簡単にアクセスできるようになった

WSLからWindowsのファイルシステム

WSLのUbuntu側から、Windowsのファイルシステム側を操作するにはどうしたらよいか?といったら、そちらも簡単に可能です。/mnt/ドライブ名でアクセスできるので、/mnt/cでCドライブを開くことが可能です。ターミナルからコマンドで開いても良いですし、WSLgが使える環境ならば、NautilusやNemoなどのファイラーをインストールして、そちらから開くのも良いでしょう。

ちなみに、Linux側のターミナルで、explorer.exe .とうつと、カレントディレクトリをWindows側のExplorerで開くということが可能になっています。

図:NautilusでCドライブを開いてみた

WSLから外部のディスクをマウント

これまで出来なかった外部ディスクのマウントができるようになりました。wsl --mountコマンドを利用することで、例えばext4フォーマットなUSBメモリやらHDDなどを直接WSL側へマウントが可能になりました。ただし管理者権限が必要です。手順は以下の通り

  1. USBメモリを刺す
  2. Windows側、管理者権限にてコマンドプロンプトよりwmic diskdrive list briefを実行して、ドライブ一覧を調べ、DeviceIDおよびpartitionを調べる
  3. 続けて、コマンドプロンプトより、例:wsl --mount \\.\PHYSICALDRIVE1 --partition 1を実行して、マウント開始(filesystemオプションの指定がない場合はext4をマウント)
  4. /mnt/wsl/PHYSICALDRIVE1p1としてマウントされる

図:まずはディスク一覧を調べておく

サウンドの設定

アップデート前のWSL2はオーディオデバイスの認識が無く、音声を出力するにはこちらのサイトのようにややこしい仕組みが必要でした。しかし、WSLgでは標準で音声出力をサポートしているようで、試しにWineでブロック崩しを動かしてみたところ、若干ノイジーながら音は普通に出力されてました。着実に進化しています。

よって、WSLgでは特に何もすることなく音の出力ができるようなので、より手間が減りました。

図:16bitゲームでも音の出力をWine経由で出せました

日本語化と日本語入力を可能にする

日本語環境を準備する

WSL2環境を用意した段階では、日本語入力や日本語化の為の処理がされていない、素の環境になっています。Chromebookのエントリーでも記述しましたが、日本語化と日本語入力環境を整えて上げる必要があります。ターミナルから作業を行います。

日本語化に必要なものが上記コマンドでインストールされます。

続けて、設定ファイルを編集し色々とフォント関係の参照やMozcの設定を追加します。

これで、Windows側のFontsディレクトリもWSL2側で参照できるように加える設定ファイルを作成しました。続けて

とすることで、Linux側のIMの設定にfcitxが加わります。最後に、一旦exitでWSLを終了させて、もう一度起動します。

日本語入力を可能にする

fcitx-config-gtk3をターミナルから起動して、IMの設定を進めます。

一番上に「キーボード – 英語」がいますが、そのままでもOK。但し、106日本語キーボードにしたい場合には、これを削除して別途キーボードを左下の+から追加する必要性があります。

図:mozcの設定画面

次に、アドオンタブに移動し、advancedにチェックを入れ、Fcitx XIM Frontendを選んで設定ボタンを押します。XIMでOn The Spotスタイルを使うにチェックを入れて、OKを押します。このウィンドウは閉じてしまってOKです。

図:拡張の設定変更

最後にIMの細かい設定変更をしたい場合には以下のコマンドを入力して、入力様式などのカスタマイズが可能です。かな入力にしてみたり、句読点の変更などなどですね。お好みです。日本語入力は、これまで通り左上のかな/英数でも良いですし、Ctrl+Spaceで切り替えが可能です。

図:入力カスタマイズはお好みで

一旦ここで、Ubuntuを閉じて、Windows側のコマンドプロンプトからwsl --shutdownで閉じる。再度、Ubuntuを起動し、ターミナルからgeditを起動して日本語入力をオンにして入力してみて出来たら成功。

図:無事に日本語入力が出来た

バックアップ

WSL環境をバックアップしたり、他のマシンでそのまま活用したいケースはたくさんあります。再度1から構築するのも大変なので、Windows Terminalを利用してバックアップを取っておくと良いでしょう。

エクスポート

以下の手順でWindows Terminalを利用して、tarボール形式で固めてエクスポートしておくことが可能です。

  1. wsl --list -vを実行してWSL環境のリストを出す
  2. 今回は1個しか入れてないのですが、Ubuntu-20.04が出てきます。
  3. cd Documentsでドキュメントフォルダに移動する
  4. wsl --export Ubuntu-20.04 ./ubuntu2004.tar で、ドキュメントフォルダにubuntu2004.tarというファイルでエクスポートされます。

図:難しいコマンドは必要ありません

インポート

逆に予めエクスポートしておいたtar玉のWSL環境をインポートする場合には、wsl --import Ubuntu-20.04 ~/AppData/Local/Ubuntu-20.04 ./ubuntu2004.tar --version 2と入力することで、WSL2の環境としてインポートされます。

インポート完了してるかどうかは、同じくwsl --list -vコマンドにて確認をすると良いでしょう。

WSL2のメモリ上限を設定する

WSL2はこちらの記事によると、メモリは75%を上限として動的割当になっているようです(vmmemというプロセスがソレ)。仮想マシンという形で割り当ててるわけではなく共有してるので、場合によっては全体的にパフォーマンスが落ちる可能性もあります。仮想マシンのように割当上限を決めて置くと極端にWSL2に持っていかれる事がなくなるので、十分なリソースが無いPCの場合には以下の設定を追加して、メモリの上限を設定しておくと良いでしょう。

  1. テキストエディタで以下のような内容でファイルを作成する
  2. ファイルの保存場所は、%USERPROFILE%\.wslconfig (フルパスだとc:\Users\ユーザ名の直下)。ドットファイルなので、ドットファイルで保存できるテキストエディタで作業を行う。
  3. wsl --shutdownで一旦シャットダウンし、再度Ubuntuを起動すれば反映する

上記の設定では、4GBの上限を設定し、尚且swapを0にしてるので、スワップファイルを使用しないという設定になります(通常swapの行は不要)。swapを設定しておくとHDDやSSDへメモリが足らなくなるとスワップで書き込み読み込みが発生するので、SSD的にはちょっと負担になる。ので、敢えて不具合が出る恐れがあってもそれを避けたい人は追記すると良いでしょう。

リソースが十分なPCならばこのような作業は不要なので、スペックが厳しいシーンでのみ使うべしだと思います。

MySQLなどのサーバをインストールする

今回はGUIアプリを動かすのが主目的であるため、サーバは範疇外ですが、WSL2でも各種サーバを動かすことが可能です。Ubuntuのコンソールより以下のコマンドでインストールが可能です。

mysql_secure_installationの質問等はお好みに応じてYes/No回答すればセットアップは完了です。

但し、WSL2はPID 1がinitdになっており、systemdが動作しないようです。よって、systemctlなどでの操作や自動起動などがしてくれない。こちらのサイトを参考に、systemdを起動しPID 1にする設定をしてみたものの、genie -sで起動を掛けるとWaiting for systemd….!!!!と出てしまう。180秒でタイムアウトするようなのですが、なんか具合が悪いので、手動で上記のように起動するようにしています。起動しても動作が不安定という話もあります。

サーバ運用するならば、Hyper-Vなどを利用して構築したほうが良いかもしれません。Twitterによると、Ubuntu 22.04では、/etc/wsl.confに以下の記述を追加するとsystemdが使えるようになるとか。

※2022年9月21日、このWSL上でsystemdが動作しない問題について解決が図られたようです。利用するにはMicrosoft Store版のWSLが必要で初期状態では設定が無効化されている(Storeアプリから開く場合はこちらのリンク)。/etc/wsl.confに対して以下の記述を追加することで有効化する。

図:Store版ならばsystemdが使える

Wineを利用する

Windows11になってから、32bit版のOSが廃止された結果、Windows10では動いていた16bitのアプリケーションはNTVDMがなくなった結果動かなくなりました。また、年々古いアプリケーションとの互換性は徐々に失われつつあり、動かなくなるアプリケーションも増えています。VMwareなどで過去のOS環境を構築すれば、問題なく動くものも多いのですが、過去のOSを持っていない人にとっては容易なことではありません。

そこで利用するのが、WSLgのUbuntu環境にWineを入れることで、古いWindowsアプリを活用する手段として利用する事です。WSLg + Wine以外の過去の資産活用手段については、以下のエントリーで記述していますので合わせて御覧ください。

Windows11まとめ – 追記中

Wineをインストール

WSLgのUbuntu環境を起動してターミナルな状態になったら、以下のコマンドを打ち込んでwineをインストールします。今回はWSLとしてはUbuntu 20.04を利用しているので、それに合わせたものを使います。

つづけて、ライブラリなどを入れるwinetricksをインストールします。

追加のセットアップ

Wineはフォント関係や日本語関係がそのままだと具合が悪いので、色々と追加のセットアップが必要です。以下の手順でセットアップを行います。今回は32bitのprefixで作っています。

  1. WINEARCH=win32 WINEPREFIX=~/win32 winecfgと実行する事で、32bit環境のprefixを独立して作成可能です。デフォルトだと64bit環境のprefixが作成されてしまいます。
  2. wine winebootもしくはWINEARCH=win32 winebootを実行して、MonoおよびGeckoのパッケージをインストールして初期化する
  3. 続けてwine winecfgを実行して、OSを例えばWindows95等に変更をしておく(winetricksからも起動出来ます。winecfgが失敗したらこちらから起動しましょう)
  4. 多分まだwinecfgなどが文字化けしていると思われるので、フォントを追加する
  5. winetricks fakejapanese_ipamonaを実行して、日本語フォントを追加しておく(結構時間が掛かる)

なお、WSLgの場合にだけ有効な手法として、Windows側のfontsディレクトリとWine側のFontsディレクトリをシンボリックリンクでつなげることで、Wine側でWindows側のフォントを参照できるようになり、文字化けなどで困らなくなります。必要な場合は以下のコマンドを実行しておくと良いでしょう。

また、追加のライブラリをインストールしたい場合には、winetricksを単体で実行すると、GUIのインストール管理画面が出てくるので、Visual Basicのランタイムなどをこちらでインストールしておくと良いでしょう。

なお、Cドライブなどは、/home/ユーザ名/以下にある.wineディレクトリに作成されているので、リセットしたい場合はこのフォルダ毎削除(rm -r -f ~/.wine)して、再度作り直すと良いでしょう。

図:WinetricksのGUI画面

図:Wine6.0がインストール出来ました。

アプリを起動してみる

ここまで来たらあとはもう簡単です。ターミナル画面からwine xxxx.exeと実行すれば起動します。試しに16bitアプリであるアリーナを起動してみましたが、バッチリ起動出来ました。WAVEサウンドも普通に出力されてました。

これで古いWindows資産をWindows11でも十分に活用できる手段が出来ました。

図:16bitアプリもバッチリ動作

インストール時のエラー

0x800701bc・0x80370109

インストール時、まだUNIXNAME設定をしていない段階でのターミナルに表示されて止まるエラーです。?????といった表記になっていてわけがわからない状態ですが、エラーナンバーが出ているので、これをもとに調べます。自分も遭遇しましたが、このエラーの場合は、このリンク先に飛んで、x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージをダウンロード -> インストールし、再度、Ubuntuをインストールしなおせば解決するとのこと。

ただ、実際にはWindows11で同様のエラーに遭遇時にインストールしようとしても、最新ですと言われてNG。Hyper-Vの有効化の手順およびvmxファイルへの記述の追加などをして再度起動した後、Ubuntu 20.04を再インストールしてみたら解決しました(あくまで一例です)。ウェブでもこのケースはHyper-Vのサービスがきちんと動いていないのが原因との指摘があります。

図:こんな感じでエラーが出て止まる

0x80370102

当初、VMware Fusionでの設定ミスで、仮想化支援のチェックをいれずにUbuntuをインストールしようとして出たエラーです。Intel VT-xの支援機能をチェックいれて再度インストールすればOKです。また、実機の場合には、そのマシンでHyper-Vがインストールされていないであったり、CPU自体が仮想化支援のサポートに未対応というケースも考えられます。

0x8000000d

これが意味不明だったエラー。仮想化支援に問題が無いのは確認済みであったにも関わらず、NGであった。これの原因は、Windows Subsystem for Linuxの機能を有効化していなかった もしくは、有効化出来ていなかった場合に発生します。有効化したはずなのに、もとに戻るといったケースの場合があるので、その際は管理者権限のPowerShellから以下のコマンドを実行して有効化しましょう。

BIOS で仮想化が有効?

Hyper-Vが有効化されてる場合、「Windows の仮想マシン プラットフォーム機能を有効にして、BIOS で仮想化が有効になっていることを確認してください。」というエラーが出て、WSL2が起動できないことがあります。これは、以下の手順で追加の機能を有効化し再起動すれば解消します。

  1. タスクバーの検索窓より、「Windowsの機能の有効化または無効化」を開きます。
  2. 仮想マシンプラットフォームにチェックを入れます。
  3. Windowsハイパーバイザープラットフォームにチェックを入れます。
  4. OKをクリックすると、機能が有効化されます。
  5. 再起動します。

Windows Terminalで、bcdeditを実行し、hypervisorlaunchtype AutoになっていればOK。そうでない場合は、bcdedit /set hypervisorlaunchtype autoを実行して再起動させる。

なお、ホスト側でHyper-Vが入っており、VMwareのゲスト側にWindows11を入れ共存を図っている場合、ゲストのWindows11内でWSL2を起動しようとすると同じくエラーが発生します。これはIntel-VTやCPUパフォーマンスカウンタの設定をオフにしたことが原因ですので、仮想環境内でWSL2を使う場合、ホスト側でHyper-Vを使うようになっている場合は、停止させておく必要があります。

※なお、仮想マシンプラットフォームを追加すると、VMwareが入ってる場合、共存設定をしてあげないと起動しなくなるので注意

図:追加の機能がないと動かない。

図:遭遇したエラー

VMware Fusionで起動しない

Macbook Pro 2016のVMware Fusion 12でインストールを試してみましたが、0x80370109エラーが出続けて結局動かず。こちらのエントリーを参考に、以下の処置をしてみました。設定で、

  1. PowerShellを管理者権限で起動し以下のコマンドを実行
  2. この状態で、Ubuntu-20.04をインストール
  3. インストールは完了し、UNIXNAMEの設定までたどり着けた
  4. その後、以下のコマンドを実行
  5. 変換が終了するまで待つ

エントリーによると、WSL2実行には、Hyper-VのSecond Level Address Translation (SLAT)に対応していなければ、WSL2は実行出来ないようです。調べてみると、Macbook Pro 2016はこの要件を満たしていないようで・・・しかし、変換は完了。一応表記上はWSL2は有効になってる。Intel VT-x/EPTまたはAMD-V/RVIを仮想化およびこの仮想マシンでIOMMUを有効化はチェックを入れています。

WSLとしては使えているものの、WSLgは使えませんでした。また、この環境下ではHyper-Vや仮想マシンプラットフォームがインストールされてると頻繁にブルスクで落ちるので、Windows11環境からは除去しておきましょう。

図:あと一歩で動かず

Windows10でも実現したい場合

WSLgは今の所、Windows11からの機能となっている為、WSL2が利用できるWindows10であってもWSLgは利用ができません(厳密には、Insider Program にしておけば使えるのですが、アプデでWindows11になってしまうので、望ましくない)。しかし、Windows10側にXserverを用意できれば、WSL2内の画面をXを使って飛ばすことが出来るので、GUIアプリを利用する事が可能になります。Insider Programへの登録は不要です。

WSL2を有効化する

Windows10の場合、KB4566116KB5004296適用済みのBuild 1903以降でWSL2が利用可能になっています。まずは、Windows10を最新の状態(21H1以降)にアップデートしておきましょう。以下の手順で有効化します。

  1. コントロールパネルを開き、プログラム -> プログラムと機能を開き、サイドバーのWindowsの機能の有効化または無効化を開く
  2. Linux用Windowsサブシステムにチェックを入れる
  3. 仮想マシンプラットフォームにチェックを入れる
  4. OKをクリックすると有効化されます。
  5. OSを再起動する

PowerShellからならば、管理者権限で実行して以下のコマンドを入れれば同じ事が可能です。

図:コマンドラインからでなくても有効化は出来る

WSL2をデフォルトにする

この時点ではWSL1と2の両方が使える状態にあるものの、2がデフォルトになっていないので、PowerShellを管理者権限で起動して以下のコマンドを入力します。

しかし、以下の画像のようなカーネルをアップデートせよというようなメッセージが出た場合には、x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージをインストールする必要があります。アップデートしたら再度コマンドを実行して、2をデフォルトにする。

※古いbash on windowsが入ってる場合には、wsl --unregister Legacyを実行して削除しておきましょう。入っているとWSL2をデフォルトに出来ません。

図:カーネル更新用パッケージのインストーラ

図:このエラーが出たらアップデートが必要

Ubuntuをインストール

WSLに対して、Ubuntuをインストールします。Microsoft Storeを起動して、Ubuntu-20.04を探し入手をクリック。インストールをクリックする。500MB程度のサイズです。

Debianなどもインストールする事が可能で、コマンドラインからwsl --install -d Debianを実行するだけです。Ubuntuの場合は、wsl --install -d Ubuntu-20.04でインストールが可能なので、こちらのほうが手軽だと思います。wsl --list -vでインストール済みLinuxに対するWSLのバージョンを確認出来ます。

図:Ubuntu最新版を入れる。

図:PowerShellからインストール

VcXsrvをインストール

Windows10にXserverをインストールします。利用するのはオープンソースで開発されてるVcXsrvです。ダウンロードしたら実行して、セットアップを始めます。

  1. 普通にインストールを進めて完了させる
  2. スタートメニューからXLaunchを実行する
  3. Display Numberには0を入力する(デフォルトでは-1が入ってる)
  4. Start no clientのままでOK
  5. Additional parameters for VcXsrvには、-ac -nowglを入力する
  6. save configurationはこの設定を起動時に自動で使う場合はクリックして、config.xlaunchファイルとして保存しておく
  7. OS起動時に自動で6.の設定で起動したい場合は、Winキー+Rで「shell:startup」にてスタートアップフォルダを開き、6.のファイルを入れておく
  8. 完了をクリックする
  9. Windowsセキュリティの警告が出てくるので、パブリックネットワークにチェックを入れてアクセスを許可をクリック
  10. これで完了

図:-1だとNGなので0を入れておく

図:WSLの場合、-acを入れておかないと接続できない

図:パブリックネットワークでないとつながらない

Xserverの設定

とりあえず、UbuntuおよびXServerのインストールは完了しましたが、Ubuntu側からWindows側のXserverに飛ばす為のいろいろな設定が必要です。以下の手順で必要な設定を追加しましょう。

追加パッケージのインストール

Ubuntuを起動してコンソールから以下のコマンドで追加のパッケージを導入します。途中、インストールするかと問われるので、Yを入力して進めます。x用の各種ライブラリがたくさん導入されますが、結構短時間で完了します。

Display環境変数をセット

Xに飛ばす為のディスプレイ変数のセットを行います。コンソールからnanoを使って、セットします。WSL2は起動する毎にWindows側のIPが変わるため、Xserverへ手動でIP指定して飛ばすのはちょっと現実的ではないので、以下のように記述を追加して、常にXserverのIPアドレスを追随できるようにします。

最終行に以下のコードを追記して、Ctrl+Xを実行し、YでEnterにて上書きします。完了後一度、PowerShellでwsl --shutdownした後、Ubuntuを再度起動しましょう。

図:この設定がとっても重要

日本語フォントを参照

基本環境ですとUbuntu内のフォントしか見えないため、日本語フォント類を扱う上で追加する必要があるのですが、Windows側のフォントを参照させてしまえば、追加の必要もなくなるので、以下のようにコンソールから作業して、Fontsディレクトリを参照できるようにします。

以下の記述を追加して、同じようにCtrl+xした後にYを実行、Enterで保存します。

アプリを追加して起動する

試しに、sudo apt install geditでエディタを一個インストールしてみます。そして、geditで起動してみてGUI表示が成功するか試してみましょう。無事に表示すれば、アプリがあたかもネイティブ環境で動作しているかのようにウィンドウが表示されます。

Ubuntu Desktopなどもインストールできるようですが、そういった用途はWSL2というよりHyper-Vで行えば良いので、こちらで行うメリットはあまりないかも。あとは前項にあるような日本語入力のセットアップなどをしておけば、Mozcで日本語入力もできるようになります。

図:無事にgeditが起動して表示されました

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)