夢幻泡影 - 源本舗

趣味の日記

 
 VNCの道は険しきかな
2017年02月03日(Fri)
サイト

前回、VNCでのマルチユーザー・ログインを行うには、標準インストールされている『vino』ではダメなことが判明。
そこでSynapticパッケージマネージャで「VNC」を検索し『vnc-server』をインストールします。
今度は、これをベースに挑戦してみました。
なおOSは、Vine Linux 6.3を使用。


インストール後、まずはお約束として「~/.vnc/xstartup」を書き換え。
Nautilus(ファイルマネージャ)などでファイルを開く場合は、隠しファイルを表示する設定を忘れずに。


~/.vnc/xstartup

#!/bin/sh
vncconfig -nowin & #-iconic を -nowin に変更
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER #2行のコメントアウトを外し
exec /etc/X11/xinit/xinitrc #その下をコメントアウトする
#[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &

「vncconfig」を起動しておくことによって、クリップボードの共有ができるようになるのだけれど…
今回は xinetd を使って、vncserver の代わりに xvnc を直接起動します。
そのため、上で書き換えた ~/.vnc/xstartup のオプションは使用されないので注意。
そこで、/etc/X11/xinit/xinitrc.d 内に、vncconfig が起動するようファイルを作ります。


/etc/X11/xinit/xinitrc.d/99-vncconfig.sh

#!/bin/sh
vncconfig -nowin &

/etc/services を書き換え、vncserver用のポートを指定します。
一応マルチログインを考え、5901〜5902を。
/etc/services

vnc-server 5900/tcp # VNC Server
vnc-server 5900/udp # VNC Server
vnc 5901/tcp # VNC Server
vnc 5902/tcp # VNC Server

次は、xinetd用のサービスを制作。


/etc/xinetd.d/vnc

service vnc
{
disable = no #noとすることでサービスが開始
socket_type = stream
wait = no
user = nobody #起動後ログインするので nobody に
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1024x768 -depth 16 --securitytypes=none
}

サービス名「vnc」は、/etc/servicesに追加したのと同じものを指定。ファイル名は任意。


GDM(GNOME Display Manager)の設定を書き換えて、XDMCP接続ができるようにします。


/etc/X11/gdm/custom.conf

[daemon]
TimedLoginEnable = False
AutomaticLogin = None
AutomaticLoginEnable = False
TimedLoginDelay = 30
TimedLogin = None
 :
[xdmcp] #これを追加することで、XDMCPが有効に
Enable=true

これで一通りの設定ができたので再起動。
xinetd と gdm だけ再起動でいいハズだけれど、面倒なのでOSごとリブート(汗)


OSが起動しログイン画面になったところで、UltraVNC viewerで接続を試みる…が、接続できません。
なんでだ〜!? と、焦りながら試行錯誤すること2時間。
何のことはない、UltraVNC viewerでVNCサーバの指定を「192.168.3.10」としていたのが原因だった。
今回VNCサービス用に作ったポート5901を指定していなかったので、5900の vino で接続しようとしていたっぽい。
5900を引いて「192.168.3.10:1」と指定し、やっと起動!
…と思いきや、GDMログイン画面の起動時にいきなりエラーが…orz


20170203a


『設定サーバに問題があるようです(/usr/libexec/gconf-sanity-check-2がステータス256で終了しました)』とか言われてしまう。
とりあえず無視して続行すると…
フェード効果やマウスカーソルのアニメーションが重たげではあるが、ログイン画面が!
rootでログインすると見慣れたデスクトップが現れました。
ただ、それなりに操作ができるものの…
ウィンドウの一部が欠けたりと、画面描画にあからさまな不具合が。


20170203b


「設定→ハードウェア→モニタ」とすると『RANDR拡張がインストールされていません』と。
その他、Synapticパッケージマネージャをはじめ、起動しないものもたくさん。
vino では、いずれも問題無かった点です。
さらに、しばらく操作しているとハングしたように動かなくなってしまう。


GDMログイン画面起動時のエラーについて調べてみると、これは「/tmp」フォルダが原因で出ることが多いらしい。
パーミッションの設定やパスが正しくなかったりするのが主な理由の様子。
しかし、確認してみてもパーミッションなど問題無し。


完全に煮詰まってしまったものの…
Vine Linux上で、vncserver に GNOME を使用すると、CPUが100%になるなどフリーズの原因となることが判明。
軽量で知られるディスプレイマネージャ『Xfce』を導入してみる。


~/.vnc/xstartup

#!/bin/sh
#vncconfig -iconic &
vncconfig -nowin &
# Uncomment the following two lines for normal desktop:
unset DBUS_SESSION_BUS_ADDRESS #"Could not acquire name on session bus"と出るときの対策
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc #コメントアウト
exec xfce4-session & #Xfce を追記
#[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &

xstartupを書き換え、/etc/xinetd.d/vnc と /etc/X11/gdm/custom.conf も、元に戻します。
その上で、一度 root でログインし、『vncserver』を実行。

# vncserver
New 'atom.localdomain:1 (root)' desktop is atom.localdomain:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/atom.localdomain:1.log


20170203c
問題無く、Xfce 起動


ウィンドウの欠けなどもなく、Synapticパッケージマネージャなども起動。
ざっと触ってみた限りでは、GNOMEの時の不具合はない様子。
マルチユーザーでのログインはできませんでしたが、一応VNCでのリモートコントロールは達成。
まぁ、不満点も多いので、折を見て確認していきたいところです。


>関連リンク
 Vine Linux 公式サイト - ユーザ環境の設定 インターネットとネットワーク
 developerWorks - VNC でマルチユーザー・ログインを可能にする
 禿散らかしてごめんなさい

名前  URL 

よろしければ『書き込み』ボタンをクリックしてください(戻る