仮想フレームバッファ(Vine Linux 4.0編)
仮想フレームバッファ(デバイス)はメモリ上にXウィンドウ画面をマッピングする特殊なXサーバです。
Linuxマシンを遠隔GUI操作に限定して使用するために実機での直接GUI操作ができないようにする場合は仮想フレームバッファが役に立ちます。
またXenのDomainUなどのようにビデオカードが使えず通常のXサーバが使用できない場合に仮想フレームバッファを導入してXDMCP接続してGUI操作したりもできます。
ここではVine Linux 4.0に仮想フレームバッファを導入し、Cygwin/X等のXサーバからのXDMCP接続やVNCクライアントからのXDMCP接続を行う手順を紹介します。
1.前提条件
Vine Linux 4.0の最初のインストールでのインストールの種類は<全てインストール>とします。
つまり以下のrpmパッケージがインストールされているものとします。
Vine Linux 4.0のパッケージ一覧。
OpenOffice.org 2.0.3等のパッケージを追加していても構いません。
2.Vine Linux 4.0へのVNCの導入と設定
- inetdの導入
Vine Linux 4.0へのVNC接続要求に対してinetd経由でvncserverが起動されてgdmログイン画面が表示されるようにまずinetdを導入します。
# apt-get update
# apt-get install inetd
inetサービスは自動起動されるように自動設定されます。
念のため手動でinetを起動してみます。
# /etc/rc.d/init.d/inet start
- 仮想フレームバッファデバイスのインストール
# apt-get install XOrg-Xvfb
- VNCサーバの導入と自動起動設定
- VNCサーバの導入
# apt-get install vnc-server
- VNCサーバパスワードの設定(手動起動テスト用)
# vncserver :1
Password:プロンプトでVNCパスワードを設定します。
VNCサーバを起動すると/root/.vncディレクトリ下にxstartupファイル等が自動作成されます。
手動で起動したvncserverの停止は以下のコマンドで行います。
# vncserver -kill :1
- xstartupファイルの変更
VNC接続時にGNOMEログイン画面(gdm)が使用されるように設定変更します(この変更はvncserverを再起動した時から有効になります)。
# cd
# vi .vnc/xstartup
「# unset SESSION_MANAGER」のコメントを外します。
「# exec /etc/X11/xinit/xinitrc」のコメントを外します。
:wq!
【補足】
xstartupファイル中の下記はそのままにしておいてOKです(無視されます)。
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
- ログイン画面の設定変更
GNOMEメニューの[デスクトップ]-[システム管理]-[ログイン画面]での「ログイン画面の設定」画面で以下の変更を行います。
(a)「リモート」タブ
スタイルを<リモート・ログインを無効にする>から<ローカルと同じにする>に変更します。
これでXDMCP接続ができるようになります。
(b)「セキュリティ」タブ
<システム管理者(リモート)のログインを許可する>をonに変更します(これは任意です)。
上記の設定変更は/etc/X11/gdm/custom.confに反映されます。
ちなみにgdmのデフォルト設定ファイルは/usr/share/gdm/defaults.confです(後述します)。
- VNCサーバをinetd経由で自動起動する設定
VNC接続要求がきた時点でVNCサーバをinetd経由で自動起動してグラフィカルログイン画面を表示(内部的なXDMCP接続)するように以下の設定を行います。
- /etc/servicesへの行追加
/etc/servicesに下記1行を追加します(とりあえず1個のスクリーン分だけ指定しておきます)。
vncサービス名 5901/tcp
※vncサービス名として適当な名称を指定します(例:vncserver1)。
- /etc/inetd.confへの行追加
/etc/inetd.confの最後に下記1行を追加します(長いですが1行で指定します)。
vncサービス名 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 24 securitytypes=none
【補足】
※1 vncサービス名は/etc/servicesに指定した値と同じにします。
※2 「-query localhost」指定:VNC接続時は自動的にXDMCP接続となってグラフィカルログイン画面が表示されます。
※3 「-once」指定:VNC接続が切れるごとにVNCサーバを再度自動起動するようになります。
※4 「securitytypes=none」指定:VNC接続パスワードの要求がこなくなります(VNCをXDMCP接続型にするするためVNC接続パスワード要求を出さないようにしても問題ありません)。
- 確認テスト
# /etc/rc.d/init.d/inet restart
# gdm-restart ※gdmの設定を変更したため確認テスト用にgdmを手動で再起動します。
WindowsのVNCクライアントからVine Linux 4.0にVNC接続するとグラフィカルログイン画面が表示されるようになります。
Xサーバから接続しても同様です。
- gdm設定ファイルの変更
gdm設定ファイルの変更は仮想フレームバッファデバイスとVNCサーバ使用に備えて実施します。
# vi /etc/X11/gdm/custom.conf にて以下のように設定変更します(/etc/inittabでのランレベルは5のままでOKです)。
[daemon]セクション
StandardXserver=/usr/X11R6/bin/Xvfbという行を追加します。
[server-Standard]セクション自体を追加して以下の行を指定します。
command=/usr/X11R6/bin/Xvfb
# :wq!
【補足】
(1)「/usr/X11R6/bin/Xvfb」指定はビデオカードが存在しない環境で仮想フレームバッファ用Xサーバを起動させてVNC接続させるためのものです。
- デフォルトのgdm設定ファイルの変更
Vine Linux 4.0では/usr/share/gdm/defaults.confというデフォルトのgdm設定ファイルが存在します。
このファイルは読み込み専用になっており一時的にアクセス権限を変更して内容変更します。
# chmod 644 /usr/share/gdm/defaults.conf
# vi /usr/share/gdm/defaults.conf
[servers]セクションの中を以下のように変更します。
0=Standardを「#0=Standard」に変更(Xサーバ起動エラーメッセージの抑止設定です)。
# :wq!
# chmod 444 /usr/share/gdm/defaults.conf
- フォントサーバ設定ファイルの変更
Cygwin/Xなどでフォントパスを指定してフォントが綺麗に表示されるようにフォントサーバの設定を変更します。
またフォントサーバ(xfs)の自動起動設定も行います。
# vi /etc/X11/fs/config
最後の行の「no-listen = tcp」を「#no-listen = true」に変更(コメント化)。
# :wq!
# chkconfig --level 345 xfs on
# /etc/rc.d/init.d/xfs start
Cygwin/Xでのxwinコマンドで「-fp "tcp/サーバアドレス:7100"」を指定すると綺麗なフォントで表示されます。
3.最終確認テスト
- Vine Linux 4.0の起動
Vine Linux 4.0を起動してテキストログインプロンプト表示の状態にしておきます。
- Cygwin/Xからの接続例
- Xmingからの接続例
XmingはフリーのX Window Serverです。
- VNCクライントからの接続例
VNCクライアントとしてUltraVNCを使用してみました。