WSL2 を使った Ubuntu 環境の構築と FACE01 GRAPHICS の動作検証

Windows 10 では WSL2 を用いた Linux 環境を構築することができます。従来のエミュレータとは違い非常に軽量で動作します。

ここでは Ubuntu 20.04 導入とFACE01 GRAPHICS環境構築の流れを記載します。ただし WSL2 を用いた Linux 環境構築については様々なサイトで詳細に取り上げられている為、ざっと触れる程度になります。

FAE01シリーズでは

  • NVIDIA GPUカードが必要なFACE01 GRAPHICS
  • 特別なGPUカードがあれば良い程度のFACE01 IMAGER

をご用意しております。WSL2におけるGPUカードの使用はこちらからご覧ください。しばらくするとインサイダープレビューではなくなると思われます。

原典の参照

Microsoft による原典を参考にすること

WSL2 を用いた Linux 環境構築については Microsoft から原典が公開されています。基本的にはそちらをご参照ください。原典では触れられていない部分やそのままでは動作しない場合の紹介も合わせてしていきたいと思います。

気をつけるべきポイントは

  • ビルド番号の確認(必要ならシステムの更新を行う)
  • Bios の確認→ CPU の仮想化が Enable になっているかどうか確認
  • wsl コマンドが PowerShell 上で受け付けない場合はコマンドプロンプトから操作すること

などです。

注意点

PowerShell が wsl コマンドを受け付けない時はコマンドプロンプトを使用する
PowerShell が wsl コマンドを受け付けない時はコマンドプロンプトを使用する

原因は分かりませんが PowerShell が wsl コマンドを受け付けなくなることがあります。原典によるとこの場合はコマンドプロンプトを使用してくださいとのことですので素直にコマンドプロンプトを使用しましょう。

VcXsrv では 左下の One Large  window を選ぶ
VcXsrv では 左下の One Large window を選ぶ

後々の操作がしやすいように VcXsrv では 左下の One Large window を選ぶと良いです。

Save configuration を忘れずに押しておく
Save configuration を忘れずに押しておく
VcXsrv フォルダの表示
VcXsrv フォルダの表示
窓 + R でスタートアップフォルダを表示
config.xlaunch をスタートアップフォルダに格納する
config.xlaunch をスタートアップフォルダに格納する
VcXsrv セッティング画面
VcXsrv セッティング画面

Additional parameters for VcXsrv には -ac -nowgl を入力する。

こちらのサイトを参考に bash スクリプトを Windows のホームディレクトリに配置。なお Windows と Linux では改行コードが異なるため予め変換しておくこと。Windows だと Mery を使用しました。また私の環境では bash は /usr/bin/bash なのでそこを変更。なお Ubuntu から Windows のホームディレクトリは私の場合 /mnt/c/Users/user/ になります。これも各人で変更すること。

#!/usr/bin/bash
# Copyright (c) 2020 astherier
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
#
#WSL2+Ubuntu 20.04でGUIアプリが動くように設定し、Ubuntu Desktopをインストールします

function guide_exit(){
    echo "終了しました。"
    echo "環境変数の設定をしていますので、bashの再起動か"
    echo " $ source ~/.profile"
    echo "を実行してください。"
    exit 0
}

# https://astherier.com/blog/2020/07/install-wsl2-on-windows-10-may-2020/
#WSL環境の各パッケージをアップデートします。
sudo apt update -y
sudo apt upgrade -y

# https://astherier.com/blog/2020/08/run-gui-apps-on-wsl2/
#GUIアプリを動かすため、いくつかソフトを入れて設定します。
#Windows側の設定も必要です。詳細はリンクを見てください。
sudo apt install -y libgl1-mesa-dev xorg-dev xbitmaps x11-apps

echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '\''{print $2}'\''):0.0' >> ~/.profile

cat << EOS | sudo tee /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>
EOS
#起動確認:
# $ xeyes

#https://astherier.com/blog/2020/08/install-ubuntu-desktop-on-wsl2/
#Ubuntu Desktopのインストール
sudo apt -y install ubuntu-desktop
sudo service x11-common start
sudo service dbus start
#起動確認:
#WSLの再起動(管理者権限PowerShellでnet stop LxssManager)をし、
#VcXsrvの設定を変更し、
# $ sudo service x11-common start && sudo service dbus start && gnome-shell --x11 -r

guide_exit

X ウィンドウに繋げるには

sudo service x11-common start && sudo service dbus start && gnome-shell --x11 -r

私は xfce が慣れているので予め xfce 関連をインストールしておいてから

sudo service x11-common start && sudo service dbus start && startxfce4 --x11 -r

あるいはもっと単純に

startxfce4

でもオーケーです。

ライブラリをインストールします
ライブラリをインストールします

Ubuntu の環境設定に従って各種アプリケーションなどをインストールします。Python3 では pip3 を予めインストールしておいてください。

必要なライブラリのインストールをします
必要なライブラリのインストールをします
WARNING: The scripts face_detection and face_recognition are installed in '/home/terms_wsl/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

このようなエラーが出たらパスを通してあげてください。

export PATH="/home/terms_wsl/.local/bin:$PATH

通常上記のようなパスの通し方では .bashrc の末尾に書いておく方が多いかと思いますが bash が立ち上がる前提ではないため .profile に記入すると良いと思います。ちなみに .bash_profile でも bash 前提になるためおすすめしません。

まとめ

WSL2 上に環境構築をして FACE01 GRAPHICS 117 の動作を確認しました。

Windows 10 WSL2 上で Face01_Graphics が動作する様子
Windows 10 WSL2 上でFACE01 GRAPHICSが動作する様子

FACE01シリーズは Windows 10 に対応しておりますので WSL2 で動作せなくとも問題はありません。しかしながらホスト OS を汚さないという意味では価値があります。また VirtualBox の様な処理が重くなることも軽微です。

今後 WSL2 の様な仮想環境はますます発展していくものと思います。今回はFACE01 GRAPHICSの動作確認がとれました。これからは WSL2 側からGPUも扱えるようになります(WSLg)。そうすれば益々FACE01シリーズの価値は上がると思われます。