WSL2のGUI環境作成
2021/05/05
※サーバー移行しました: http://cf661650.cloudfree.jp/altmo_toolbox
|
[Prev]
[Next]
[Top]
,
Digital
[Prev]
[Next]
|
実は予定してなかった
- 今回はWindows 10上のWSL2によるLinux(Ubuntu)のGUI環境構築を扱います。
- ここでWSLとは何かですが、Windows Subsystem for Linux、Windows上で動作するLinux Subsystemです。そしてWSL2とはWSLのVersion 2という意味で、現行最新のWSLです。
- 今回WSL2のGUI環境を扱う理由ですが、Windows PCしか無い状況にてLinux上でのみ動作するツールを使用する必要が出てしまったからです。しかもX-WindowによるGUIも必要だったため急遽調べる(*1)ことになりました。
- ネットを調べると、どうやらもう少し待てばGUIもすんなり動きそうですが、まだ正式リリースは先なので、本レポートでは違う方法を紹介します。
まずはWSL2のインストール
- WSL2インストールの情報についてはこちらを参照しました。
- WSLの有効化
- 仮想マシン機能の有効化
- WSL2向けLinuxカーネルのダウンロードとインストール
- WSLのdefault versionを2に設定する
Linuxディストリビューションのインストール
- Linuxカーネルまでの準備ができたところで、次はディストリビューションのインストールですが、これは通常のWindows10アプリケーションと同様で、スタートメニューのMicrosoft Storeから好きなディストリビューションを選んでインストールします。(そのため特にインストールの方法は説明しません)
- 現時点(2021/5/5)では下記ディストリビューションがWSL2対応です。本レポートではUbuntu 20.04 LTSを選びました。
Ubuntu 16.04 LTS
Ubuntu 18.04 LTS
Ubuntu 20.04 LTS
openSUSE Leap 15.1
SUSE Linux Enterprise Server 12 SP5
SUSE Linux Enterprise Server 15 SP1
Kali Linux
Debian GNU/Linux
Fedora Remix for WSL
Pengwin
Pengwin Enterprise
Alpine WSL
|
インストール後初回起動...トラブることもあり
WSL2として動作していることを確認
- コマンドプロンプト又はPowerShell(どちらでも良いです)にて、下記コマンドを実行します。
> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 2
- 実行結果のVersion表示が2であればOKです。
GUI環境のインストールと設定
- WSL2としてLinuxが動作する状況になったので次はGUI環境を仕込みます。方針としては、LinuxにX-Window環境を準備し、Windowsからはリモートデスクトップ(*2)でアクセスします。以後Ubuntu 20.04を例にして説明します。
- ディストリビューションの更新
- Xfce4のインストール
- X-Window ManagerとしてXfce4をインストールします。
$ sudo apt install xfce4
- データが大きいため、10〜20分程度かかります。
- 途中Display Managerの選択画面になりますがgdm3(*3)を選んでください。
- xrdpのインストールと設定
- xrdpをインストールします。(X-windowをRemote DesktopのProtocolで飛ばせるようにします)
$ sudo apt install xrdp
- xrdpのwindow manager設定をxfce4起動に変更します。最初に設定ファイル置き場所へ移動し、オリジナル設定を保存します。
$ cd /etc/xrdp
$ sudo cp -p startwm.sh startwm.sh.org
- startwm.shを編集します。オリジナル記述の最後2行をコメントアウトし、startxfce4を追加します。
$ sudo vim startwm.sh # ←エディタは好みでどうぞ
...(中略)...
# test -x /etc/X11/Xsession && exec /etc/X11/Xsession # ←コメントアウト
# exec /bin/sh /etc/X11/Xsession # ←コメントアウト
startxfce4 # ←追加
- Ubuntu上でxrdpをスタートし、リモートデスクトップから接続してみます。まずはxrdpスタート。
$ sudo service xrdp start
- エラーが起きた場合は、後述の「ポート番号の問題でxrdpの起動エラーが起きた場合」を参照下さい。
- 次にリモートデスクトップから接続。スタートメニュー→Windowsアクセサリ→リモート デスクトップ接続にて起動して下さい。コンピュータ名は localhost を指定します。

※クリックで別画面拡大します
- アクセスに成功すればログイン画面の後、下記のデスクトップが開きます。

※クリックで別画面拡大します
- ポート番号の問題でxrdpの起動エラーが起きた場合
- ネット上では、ポート番号を3389から3390へ変更するといった記述が見受けられます。ですがWindows 10 Home Editionを使用している場合、ポート番号の変更無しでもxrdp起動及びアクセス成功していないでしょうか。
- 私の環境では確認できないので予想になりますが、使用しているPCがリモートデスクトップのホストになり得る場合、すでに3389ポートは使っている/予約済みだという状況でエラーになると考えています。
- このエラーが起きた場合、xrdpのポート番号を3389から3390へずらすことになります。xrdpのポート番号は
/etc/xrdp/xrdp.ini
で設定されてるので、この中で定義されているポート番号3389を3390へ置換します。コメント中の記述などもありますが一括置換が無難です。下記は操作例ですが、sedの--in-placeではなくエディタを使ってもOKです。
$ cd /etc/xrdp
$ sudo cp -p xrdp.ini xrdp.ini.org
$ sudo sed -i 's/3389/3390/g' xrdp.ini
- 設定変更後、xrdpを再スタートして下さい。
$ sudo service xrdp restart
- ポート番号をデフォルトの3389から変更した場合、リモートデスクトップ接続のコンピュータ指定は"localhost:ポート番号"になります(例: localhost:3390)。
xrdp自動起動...の代わり
- WSL上のLinuxではsystemctrlが普通には動きません。xrdpのserviceファイルを作って、/usr/lib/systemd の下に置く方法を取りたかったのですが、別途調査することにして今回は見送ります。
- 代わりに.bashrcの中で起動ステートメントを書き、bash起動をWindowsのスタートアップに入れることとしました。
- .bashrcに下記記述を追加します。xrdpのプロセスが無ければ起動を行います。
# xrdp autostart
if ps ax | grep '/xrdp$' > /dev/null
then
echo -n ""
else
echo "==== start xrdp ===="
sudo service xrdp start > /dev/null 2>&1
fi
- 次にUbuntuを起動するバッチファイルです。コマンドプロンプトからはbashで起動(*4)するので、下記のようなバッチファイルを作成します。(echo付けてますが、意味があるのはbashの1行だけです)
@echo off
echo ===================================================================
echo ==== 仮想CPU の Ubuntuを起動します
echo ==== ログインパスワードを入力してください
echo ==== パスワード入力後はリモートデスクトップからUbuntuを利用できます
echo ===================================================================
echo Ubuntu起動中。しばらくお待ち下さい...
bash
- Windowsのコマンドプロンプトから下記を実行するとstartupのフォルダがエクスプローラで開かれるので、先程作成したバッチファイルをstartupフォルダに置きます。
> start shell:startup
- この設定により、Windows起動時にWSLのUbuntuも起動させます。Windows立ち上げ時に下記画面が出るので、パスワードを入力して下さい(*5)。以後リモートデスクトップでアクセス可能になります。

※クリックで別画面拡大します
これから実験するのが本題
- 冒頭でも書きましたが今回のレポートは作成する予定がありませんでした。必要なら Linuxのマシンを置けば良いと思っていたのですが、予想よりハードルが(技術的ではない要素で)高く、各自のWindows PC内でLinux環境を作ることにしました。
- コマンドベースであれば、普通にWSL入れて終わりですが、波形ビューアなどのGUIも必要だったため、急遽WSLでGUIを使う方法について調べたのが、今回のレポートになっています。
- コンテンツ/レポートとしてはこれで終了ですが、この後私は本題の実験/検証を始めようかなと思います。
|
Notes
- こうやって5月連休を過ごしていました。今年もお出かけは難しいので。
- Windows PCしかない環境ではVNCがマイナーなためリモートデスクトップを選びました。
- 最近のUbuntuではlightdmよりgdm3の方が相性良いと思います。
- もともとWSLはBash on Ubuntu on Windowsという名前でした。
- /etc/sudoers.dを編集すればパスワード入力も不要になると思いますが、これも後で確認するつもりです。
|
|
[Prev]
[Next]
[Top]
,
Digital
[Prev]
[Next]
|