Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

Ubuntu 20.04 LTS+WSL2でMID (MaXX Interactive Desktop)を起動するまで。2022年版


先日、WSL2で稼働するUbuntuにてGnomeを動作させた。Gnomeが動作するということは、もちろんMID (MaXX Interactive Desktop)も動作する。

MIDとは、SGI (Silicon Graphics International) 製ワークステーションに搭載されたOS、IRIXのデスクトップをLinux上に再現するプロジェクトだ。これをWSL2で稼働するUbuntuへインストールする。

Ubuntuへの導入手順は、公式に紹介されている。この投稿で紹介する手順は、そこに一手間加えている。
docs.maxxinteractive.com

前提

この投稿では、次の環境を前提としている。

  • Ubuntu 20.04.2 LTS
  • Indigo MAX IMPACT v2.1.1

WSLの場合、次の段階まで整っている環境で作業することを想定している。

  • WSL2、Ubuntu 20.04 LTS、X serverを導入済み
  • Ubuntuのユーザー、パスワードの設定まで終えた

必要に応じて、次の投稿を参照してほしい。

  • Ubuntuの初期化→イメージの「リセット」*1
  • X server*2

必要なパッケージの導入

公式サイトの「Software Package Requirements」に掲載されたパッケージを導入し、シンボリックリンクを作成する。多数のパッケージが紹介されているものの、一部はデフォルトでインストールされるものもあるし、未掲載のパッケージを追加導入しなければならない場合もある。
この投稿では、次のパッケージを追加導入している。

fhist コマンド
nload コマンド
rcs コマンド
x11-xserver-utils X11関連

またアジア圏のフォントを導入するためのコマンドを意図的に省いている。具体的には、次のコマンドだ。

// Additional Fonts for Japanese support
apt install fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-cjk

理由は次の3点だ。MIDのインストールを通じて、中途半端に日本語対応する必要はない。

  1. WSLはWindows上で動作しており、必要ならばWindowsのフォントを参照すればよい。
  2. WSL、Windows間で、簡単にファイル、入出力のやり取りができる。
  3. Ubuntuの日本語対応が必要ならば、language-packを導入したほうが良い。

そもそも日本語対応などしなくとも、日本語の表示はできるのだ。冒頭のサンプル画像を見て欲しい。
分かりにくいかもしれないので、テキスト・エディタの画面を切り抜いておいた。これは、このブログのテキストをWindowsからMID上のテキスト・エディタへcopy&pasteしたものだ。
日本語フォントをインストールしていないが、文字化けもしていない。

もしUbuntuでの日本語対応が必要ならば、GnomeデスクトップのGUIを介して操作すればよいし、language-pack-jaを導入すれば、必要な日本語フォントもインストールされる。
MIDのインストールのためだけに、日本語フォントだけインストールする必要はない。

最終的に、次のコマンドを実行することになる。

sudo apt update -y
sudo apt upgrade -y
sudo apt install -y cpp libjpeg62 libgtk2.0-0 x11-apps freeglut3 pavucontrol xfonts-100dpi xfonts-75dpi fonts-dejavu fonts-noto libtinfo5 nload rcs fhist x11-xserver-utils
sudo ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

MIDのダウンロード、インストール

公式サイトの「Installation」に掲載されている通り、AWSからMIDのインストール・スクリプトをダウンロード、実行することで、MIDそのものをダウンロード、実行することになる。

cd /tmp
wget https://s3.ca-central-1.amazonaws.com/cdn.maxxinteractive.com/maxx-desktop-installer/MaXX-Desktop-LINUX-x64-2.1.1-Installer.sh
chmod a+x MaXX-Desktop-LINUX-x64-2.1.1-Installer.sh
sudo ./MaXX-Desktop-LINUX-x64-2.1.1-Installer.sh

起動スクリプトの準備

MIDを起動するためのシェル・スクリプトを作成する。次のコマンドを、シェル・スクリプトファイルとして保存する。私は”maxx.sh”とした。
保存したファイルの権限変更を忘れないこと。X serverを起動し、maxx.shを実行すれば、MIDが起動する。

🔎maxx.sh

sudo service dbus restart
sudo service x11-common restart
. /opt/MaXX/etc/system.runtime
. /opt/MaXX/etc/skel/Xsession.dt

chmod 777 maxx.sh

なお起動時に、いくつかのエラーが出力されている。サウンド関連のエラーは放置するとして、フォント関連のエラーは深堀してみる価値がありそうだ。
何にせよ、実用上の問題は生じていない。

Warning: Missing charsets in String to FontSet conversion

🔎エラー出力

xset:  bad font path element (#0), possible causes are:
    Directory does not exist or has wrong permissions
    Directory missing fonts.dir
    Incorrect font server address or syntax
xsettingsd: Unable to parse /home/wsluser/.maxxdesktop/xsettingsd.conf: Couldn't init stream (No such file or directory)
[1]+  Exit 1                  $MAXX_BIN/xsettingsd -c $HOME/.maxxdesktop/xsettingsd.conf >> $HOME/.console  (wd: /tmp)
(wd now: ~)
/opt/MaXX/bin64/msound: line 33: aplay: command not found
[3]-  Done                    . $MAXX_HOME/etc/system.sgisession
[4]+  Done                    . $HOME/.sgisession
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
Warning: Missing charsets in String to FontSet conversion
[2]+  Done                    $MAXX_BIN/fm -p=$WORKSPACE
/opt/MaXX/bin64/msound: line 33: aplay: command not found
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
sh: 1: aplay: not found
sh: 1: aplay: not found
/opt/MaXX/bin64/msound: line 33: aplay: command not found
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
/opt/MaXX/bin64/msound: line 33: aplay: command not found
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
console: no process found
[1]-  Exit 1                  $MAXX_BIN/xconfirm -c -icon info -t "First time user! The MaXX Interactive Desktop is now properly configured for the user accout: $USERNAME" > /dev/null 2>&1