Linux版TeamViewerとTigerVNCの注意点 (CentOS6.3最小構成)

Linux版TeamViewer

とあるデータセンターに置いているCentOS6.3の最小構成のサーバーで、どうしてもX Windowをリモートで操作する必要が発生しました。そこで、まずLinux版teamViewerを入れてみました。

最初に、最小構成のCentOS6サーバーだったのでGNOMEデスクトップ環境を後からインストールしました。

sudo yum groupinstall "X Window System" "GNOME Desktop Environment" "Desktop"

CentOS6以降では、groupinstallでXを入れるには”Desktop”が必須になりました。”X Window System” “GNOME Desktop Environment”だけだと、FATAL: Module fbcon not found. というエラーになってXが起動しません。次に、Linux版TeamViewerをインストール。

wget http://www.teamviewer.com/download/teamviewer_linux.rpm
sudo yum install teamviewer_linux.rpm

/etc/inittabをid:5:initdefault:に変えてグラフィックモードでサーバーを再起動させます。それ以降は、データセンターに行ってサーバーにモニタを繋げて作業しましたw まずGnomeにログインし、メニューからTeamViewerを起動してパートナーIDとパスワードを取得できるので、それを使って顔部のクライアントのTeamViewerから接続できるようにしました。と、ここまでは順調で、リモートでX Window(Gnome)を開いて数週間運用していました。

Linux版teamViewerの問題点

数週間運用して、TeamViewerが2回落ちる機会がありました。1回目はデータセンターに行ってモニタをつなげて復旧させていたのですが、2回目の時は原因調査のためまずプロセスを見ました。

ps aux|grep teamviewer
saito        4140  0.0  0.0 106052  1340 ?        S    Mar25   0:00 /bin/bash /opt/teamviewer/teamviewer/7/bin/teamviewer
saito        4144  0.0  0.0 106056  1504 ?        S    Mar25   0:00 /bin/bash /opt/teamviewer/teamviewer/7/bin/wrapper wine c:\Program Files\TeamViewer\Version7\TeamViewer.exe
saito        4170  0.3  0.0   5376  2492 ?        Ss   Mar25   6:37 /opt/teamviewer/teamviewer/7/wine/bin/wineserver
saito       16671  5.8  0.7 2676388 61808 ?       Sl   00:55  10:52 c:\program files\teamviewer\version7\TeamViewer_Desktop.exe --IPCport 6039 

プロセスを見て初めて気づいたのですが、Linux版TeamViewerってwine(Windowsエミュレータ)で動いているんですね。WindowsのEXEファイルをただwine同梱で持ってきているだけ。けっこうひどいw

それはともかく、プロセスが残っているのに接続できないのが謎だったので、ログファイル(~.teamviewer/7/logfiles/TeamViewer7_Logfile.log)を見てみたのですが、以下のようなエラーが出力されていました。

2013/03/27 02:00:03.041     8     9 G0!!!CRASH: Access violation at 0x68e2e869: Illegal read operation at 0x00000000 (Exception Code: 0xC0000005)
2013/03/27 02:00:03.610     8     9 G0!!!CRASH: Saved dump file to 'C:\users\FS\Application Data\TeamViewer\TeamViewer_7_0_9377_20130327T020003.mdmp'

エラー内容をググっても有用な情報がヒットしなかったので詳細は不明ですが、2:00ちょうどにメモリマッピングに関する何らかの干渉が発生してクラッシュしたようです。2:00というとCronでの集計処理時刻と重なるので、集計処理が動いた時にWindowsエミュレーション環境の確保していたメモリに干渉したのかもしれません。ちょっと不安定ですね。

データセンターに行ってモニタをつなげなくても、既存TeamViewerプロセスをいったんkillして、ログインユーザーでteamviewerコマンドをオプション無しで実行すれば、SSHのCUI接続からTeamViewerは再起動できるのですが、wineで動いていてクラッシュする詳細がわからないってけっこう不安材料だったので、Linux版TeamViewerでの運用は諦めて、VNCサーバーを構築することにしました。

TigerVNCの設定

CentOS標準のVNCサーバーとしては、TigerVNCがあります。まず、TigerVNCをインストールしました。


sudo yum install tigervnc-server
sudo vi /etc/sysconfig/vncservers 
VNCSERVERS="1:saito"
VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp"
vncpasswd

と、ここまでは順調だったのですが、VNCサーバーの起動で問題が発生しました。

/etc/init.d/vncserver start
VNC サーバー を起動中: 1:saito 
WARNING: The first attempt to start Xvnc failed, possibly because the font
catalog is not properly configured.  Attempting to determine an appropriate
font path for this system and restart Xvnc using that font path ...
Could not start Xvnc.

/usr/bin/Xvnc: symbol lookup error: /usr/bin/Xvnc: undefined symbol: pixman_composite_trapezoids
/usr/bin/Xvnc: symbol lookup error: /usr/bin/Xvnc: undefined symbol:pixman_composite_trapezoids 
 [失敗]

フォント関係のワーニングとpixmanに関するエラーが出ているので、まずはpixmanを入れてみました。

sudo yum install pixman

しかし、またエラーが。

sudo /etc/init.d/vncserver start
VNC サーバー を起動中: 1:saito 
WARNING: The first attempt to start Xvnc failed, possibly because the font
catalog is not properly configured.  Attempting to determine an appropriate
font path for this system and restart Xvnc using that font path ...
Could not start Xvnc.

Xvnc TigerVNC 1.1.0 - built Feb 22 2013 22:28:37
Copyright (C) 1999-2011 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11300000, The X.Org Foundation

Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension VNC

Wed Mar 27 05:53:21 2013
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5901
 vncext:      created VNC server for screen 0
[dix] Could not init font path element /usr/share/X11/fonts/misc, removing from list!
[dix] Could not init font path element /usr/share/X11/fonts/Type1, removing from list!
[dix] Could not init font path element built-ins, removing from list!

Fatal server error:
could not open default font 'fixed'

[失敗]

エラーが長くなりましたが、今回はフォント関係限定のようです。そこで、フォント関連のパッケージをインストールしました。

sudo yum install libXfont
sudo yum install xorg-x11-xinit
sudo yum install xorg-x11-fonts-Type1

これでTigerVNCが起動するようになりました。VNCクライアントでリモートデスクトップできることも確認しました。

今回のエラー、ググっても日本語情報がほとんどなかったのですが、誰も問題が起きていなかったのでしょうか。CentOSサーバー最小構成からX WindowやTeamViewerやTigerVNCでリモート接続ってあんまり挑戦している方がいないのかもしれないですが、後学のために書き記しておきます。