はじめに
いろいろな事情でRやPythonの計算用マシンをWindowsからLinuxに移行することにしました。
で、見た目すてきなelementary OS、と思ったのですが、リモートコントロールする方法を見つけるのにだいぶ手間取ったので、自分用も兼ねて手順をメモします。
使った物
テスト環境
MacBook Pro Retina 13'' Late 2013のVMware Fusion 8.5.7上の仮想マシン。
手順
elementary OSのインストール
本家からISOをダウンロードしてelementary OSをインストールします。寄付しないとダウンロード出来なそうなデザインのページですが、カスタムに$0を入力すれば寄付なしでもダウンロード出来ます。もちろん、寄付をしてもOKです。
インストール自体はあまり迷うこともないと思うので説明しませんがこことかこことかが参考になると思います。あとはお約束のGoogle先生に・・・。
TigerVNCのインストール
VNCの実装としては、なにやらよさげなTigerVNCをインストールします。
まず公式サイトからUbuntu 16.04LTS用のコンパイル済みバイナリ(執筆時点ではtigervncserver_1.8.80+20170605git70d216e1-1ubuntu1_amd64.deb)をダウンロードします。
ダウンロードしたファイルがある場所をターミナルで開き
sudo dpkg -i tigervncserver_1.8.80+20170605git70d216e1-1ubuntu1_amd64.deb
を打ち込みます。
すると、依存関係にあるパッケージがインストールできないうんぬん、とか言われるので、
sudo apt install -f
コマンドで依存パッケージをインストールし、再度
sudo dpkg -i tigervncserver_1.8.80+20170605git70d216e1-1ubuntu1_amd64.deb
を叩いてTigerVNCをインストールします。
VirtualGLのインストール
TigerVNCだけだと接続に成功しても黒い画面しか表示されないようなので、VirtualGLもインストールします。
こちらもダウンロードページからコンパイル済みバイナリ(執筆時点ではvirtualgl_2.5.2_amd64.deb)をダウンロードします。
TigerVNCと同様にターミナルでファイルのある場所を開き、
sudo dpkg -i virtualgl_2.5.2_amd64.deb
でインストールします。
VNCサーバーの起動
VNCの設定ファイルを生成させるため、ターミナルにvncserver
コマンドを打ち込み、VNCサーバーを一度起動させます。
初回起動時にはVNCアクセス用のパスワードを聞かれるので入力します。
サーバーが起動したら、vncserver -kill :1
コマンドでいったんサーバーを終了します。
設定ファイルの変更
生成された設定ファイルは~/.vnc/xstartup
にあります。
失敗したときのためにcp xstartup startup.bak
でとりあえずバックアップを作成し、お好みのエディタでxstartup
を開きます。
(何もなければ標準搭載のeditor
コマンドでもファイルが編集できます。)
デフォルトで設定ファイルは以下のようになっているので、これを書き換えていきます。
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
if [ $OS = 'Linux' ]; then
case "$WINDOWMANAGER" in
*gnome*)
if [ -e /etc/SuSE-release ]; then
PATH=$PATH:/opt/gnome/bin
export PATH
fi
;;
esac
fi
if [ -x /etc/X11/xinit/xinitrc ]; then
exec /etc/X11/xinit/xinitrc
fi
if [ -f /etc/X11/xinit/xinitrc ]; then
exec sh /etc/X11/xinit/xinitrc
fi
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
変更するのは2点です。まず17行目と20行目のexec
をvglrun
に置き換えます。
さらに最後のtwm &
をPantheon起動用にvglrun /usr/bin/gnome-session --session=pantheon
に書き換えます。
変更後のファイルは下のような感じになります。
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
if [ $OS = 'Linux' ]; then
case "$WINDOWMANAGER" in
*gnome*)
if [ -e /etc/SuSE-release ]; then
PATH=$PATH:/opt/gnome/bin
export PATH
fi
;;
esac
fi
if [ -x /etc/X11/xinit/xinitrc ]; then
vglrun /etc/X11/xinit/xinitrc
fi
if [ -f /etc/X11/xinit/xinitrc ]; then
vglrun sh /etc/X11/xinit/xinitrc
fi
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
vglrun /usr/bin/gnome-session --session=pantheon
接続テスト
接続テスト用にターミナルにvncserver
コマンドを入力し、サーバーをもう一度起動します。
画面の解像度を変えるには-geometry
オプションを使い、vncserver -geometry 1280x800
のようにピクセル数を指定します。(Retina解像度(2560x1600)ではだいぶ動きが遅かったので半分の解像度を使いました。)
接続にはMac標準のVNCクライアント(画面共有)を使いました。
Finderのメニュー→移動→サーバへ接続でvnc://マシンのアドレス:5901
を入力して接続します。
うまく行けば接続先のGUI環境が表示されるはずです。
試していないこと
標準レポジトリにあるvnc4server
でもVirtualGLを使えば接続可能なのかもしれませんが、試していません。
あとはXRDPが使いたいなぁ。。。
おわりに
Linux初心者なのでなにか間違っているかもしれません。
間違いに気付いた方はお知らせ下さい。