人気ブログランキング |
タグ:VNC ( 4 ) タグの人気記事
(Linux)X11VNCでShiftキーを使っての記号が入力できない
Ubuntu10.04ベースの EcoLinux 10.04 で、apt-get install x11vnc で X11VNC(0.9.9-1) をインストールし使っていたわけですが、どうもShiftキーを押下しての記号入力がおかしくなります。

ググってみるとx11vnc 0.9.9でシフトキーが効かなくて困った: ひろろろぐ(仮) - hiroro's blogに情報載ってました。
どうやら、x11vnc のバグのようです。

x11vnc のオプションに -xkb を付けると解決しました。
by jehoshaphat | 2011-05-14 23:30 | Linux
(Linux)コンソールに表示されているデスクトップ画面をVNC(x11vnc)で操作する
(Linux)PuppyにVNCサーバを入れるや、(Linux)VNCサーバ構築でLinuxでVPNサーバを構築する方法をかきました。

Linuxで普通にVNCサーバ立てると、VNCリモートセッションはローカルログインセッションと異なります。VNCリモートセッションを複数張るとそれも別々のセッションとなるので、表示される画面もセッション毎に異なります。
複数ユーザ使用を強く意識したUnixの影響と思われますね。

ところがWindowsのクライアントOSは同時に1セッションが基本なので、VNCもローカルログオンしているユーザの画面が表示されます。
ヘルプサポートするときには便利ですね。
今回したい要件は、Windows版VNCのようにコンソール上に表示されている(ローカルログオンしている)デスクトップ画面をVNCでリモートするというものです。

x11vnc というソフトを使えばその要件が可能なようです。
x11vnc のpetパッケージを探したんですが見つからなかったので、例のごとく Ubuntu の deb パッケージを使うことにしました。

x11vnc 0.9.3 を使います。0.9.3はUbuntu9.10(コードネームkarmic)の時のものです。10.04(lucid)で使われてる0.9.9を使おうとするとlibc6(共通Cランタイムライブラリ GLIBC?)2.7以上が必要ということで動きませんでした。無理やりlib6の新しいバージョンを入れましたが、そうするとあちこちでおかしくなるのでお勧めできません。ちなみに、Puppy4.31に入っているlibc6のバージョンは2.6.1のようです。

ということで、x11vncパッケージを下記Ubuntuのサイトよりダウンロードし、インストールます。
http://packages.ubunut.com/karmic/x11vnc

しかし、実行しようとすると依存する複数のライブラリが無いということで実行できません。
それで、下記依存ライブラリをUbuntuよりダウンロードしてインストールします。
libvncserver0 0.9.3
libavahi-common3 0.6.25
libavahi-client3 0.6.25
libdbus-1-3 1.2.16


これで、プロンプトで x11vnc を実行すると起動します。
VNCクライアント側からは VNC Viewer で、IPアドレス:0 と指定するとアクセスできます。(ディスプレイ番号は0になります。)


後はパスワードの設定が必要ですよね。下記のようにします。

# x11vnc -storepasswd
Enter VNC password: ←パスワードを入力
Verify password:
Write password to /root/.vnc/passwd? [y]/n
Password written to: /root/.vnc/passwd

そして、パスワード認証付きでx11vncを実行するには下記のようにします。

# x11vnc -rfbauth /root/.vnc/passwd

x11vncはクライアント側でセッションを閉じると、終了してしまうのでx11vncを終了させたくない場合は、オプションで-foreverをつけてx11vncを実行します。

# x11vnc -forever


さて、よーやく使えるようになった x11vnc ですが、これをOS起動時に自動的に立ちあがっても欲しいです。

Puppyの場合は、/root/Startup/ に自動実行したいファイルのシンボリックリンクを張ればいいようです。

ということで、x11vnc を起動するシェルスクリプトを作成し、そのシンボリックリンクを張りました。

# vi /root/.vnc/x11vnc_startup.sh

#!/bin/sh

x11vnc -rfbauth /root/.vnc/passwd -forever

:wqでシェルスクリプトファイル保存

# ln -s /root/.vnc/x11vnc_startup.sh /root/Startup/x11vnc


これで再起動してみたところバックグラウンドでx11vncがたちあがるようになりました。
-foreverオプションも付けているので、クライアントがVNC Viewer で切断しても x11vnc は動いているのでまた接続できます。



UbuntuベースのLinuxMint9でも試してみました。
apt-get install x11vnc でインストールできます。
後の使い方は基本的には上記で書いたPuppyと同じです。
異なるのは自動起動させたい時の設定でしょうか。
x11vnc を LinuxMint9 で自動起動させるには、/etc/rc.local の exit0 より前に下記の記述を入れます。

/usr/bin/x11vnc -rfbauth /home/root/.vnc/passwd -forever


※x11vnc 0.9.9 にはバグがあるので、-xkb オプションを付けるといいようです。

/usr/bin/x11vnc -rfbauth /home/root/.vnc/passwd -forever -xkb

詳しくは、(Linux)X11VNCでShiftキーを使っての記号が入力できないを参照。


参考:
linuxやるブログ x11vnc:
puppy linux起動時にxonclockを自動起動させる - kazu9hateの日記
KNOPPIX6.2にVNC接続 (SSH転送) ある痴れ者の日記


追記:
2013/11現在http://packages.ubunut.com/karmic/x11vncはコンテンツがなくなっているようです。

RPMforge を使ったインストールのほうが簡単なので、それをメモしておきます。

RPMforge を http://packages.sw.be/rpmforge-release/ からダウンロードし、リポジトリのインストールを行います。


# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
# rpm ihv rpmforge-release-0.5.3-1.el5.rf.i386.rpm


CentOS Baseのリポジトリ優先度を1にします。(rpmforgeよりも優先にするため)

# vi /etc/yum.repos.d/CentOS-Base.repo
↓[base]や[updates],[addons],[extras]などそれぞれに下記行を追加します。
priority=1



RPMforgeのリポジトリの優先を CentOS Baseのリポジトリ優先度より低くします。(今回は10)

# vi /etc/yum.repos.d/rpmforge.repo

[rpmforge]に以下追加。
priority=10 ←追加


yumでx11vncのインストールを実行します。

# yum install x11vnc



また、CentOS5でのx11vncの自動起動ですが、/etc/rc.local ファイルに /usr/bin/x11vnc -rfbauth /root/.vnc/passwd -forever を書いたのではダメでした。

それで xinetd 経由で起動することにしました。

以下のファイルを作成します。

# touch /etc/xinetd.d/x11vnc
# vi /etc/xinetd.d/x11vnc

service x11vnc
{
port = 5900
protocol = tcp
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/x11vnc
server_args = -inetd -o /var/log/x11vnc.log -display :0 -rfbauth /root/.vnc/passwd -forever -bg -shared -enablehttpproxy -nolookup -auth /var/run/lightdm/root/:0
}


次に、サービスに対応するポートを設定します。

# vi /etc/services
↓を末尾に追加。
x11vnc 5900/tcp # VNC Server


# service xinetd restart


これで使えるようになりました。
by jehoshaphat | 2011-05-14 23:27 | Linux
(Linux)PuppyにVNCサーバを入れる
PuppyLinux4.31 にはVNCサーバが入ってないので入れてみました。

まず、RealVNCフリー版ののソースをhttp://www.realvnc.com/products/download.htmlからダウンロードします。

そして、ビルドしテスト起動してみます。

# tar xzvf vnc-4_1_3-x86_linux.tar.gz

# cd vnc-4_1_3-x86_linux

# ./vncinstall /usr/local/bin

# vncserver
You will require a password to access your desktops.
vncpasswd: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory


どうやら C++ のライブラリが無いとか言っています。
ライブラリは /usr/lib 内に大抵入ってるんですが、たしかに必要と言われているファイルは有りません。

Puppyは deb パッケージが扱えるので、Ubuntu のページより libstdc++2.10-glibc2.2 パッケージをダウンロードし、インストールします。

これで、/usr/lib/libstdc++libc6.2-2.so.3 のファイルができました。(実際は libstdc++-3-libc6.2-2-2.10.0.so へのシンボリックリンクですが...)

再度 vncserver の起動に挑戦してみます。

# vncserver

You will require a password to access your desktops.

Password:
Verifi:
xauth: creating new authority file /root/.Xauthority
xauth: (arg):1: bad display name "puppypc:1" in "add" command
xauth: creating new authority file /root/.Xauthority

New 'puppypc:1(root)' desktop is puppypc:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/puppypc:1.log

今度はちゃんとVNCパスワードが設定でき、起動もできしました。(スタートアップスクリプト xstartup も作成されています)
これで、Windowsクライアントから、VNC Viewer でアクセスしたんですが、画面がソリッド模様とコンソールしか映っていません。
どうやら既定のウィンドウマネージャ twm で立ちあがっているようです。

jwm のウィンドウマネージャで立ちあがってほしいので、下記のように /root/.vnc/xstartup ファイルを修正しました。

# vi /root/.vnc/xstartup

#!/bin/sh

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm & ←コメントアウト
jwm & ←追加

これで、vncserver を立ち上げ繋いでみたんですが、メニューや立ち上げたアプリケーションのウィンドウはちゃんとJWMで表示されます。
しかし、デスクトップだけソリッド模様になってしまっています。
これ、なんとかなりませんかね。。。

また、vnc を終了するときは -kill:デスクトップ番号 とするんですが、どうもちゃんと切れないことがあるようです。

# vncserver -kill :1
Killing Xvnc process ID 21755
kill: cannot kill pid 21755: No such process

次回 vncserver 起動時に下記のようなメッセージが表示されてしまいます。

Warning: puppypc:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server puppypc:1

New 'puppypc:2(root)' desktop is puppypc:2

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/puppypc:2.log



この場合はロックファイルを削除すればいいようです。

# rm /tmp/.X1-lock
# rm /tmp/.X11-unix/X1


参考:
Hot Linux - VNCのインストール/設定(Redhat7.1,Redhat7.3,Redhat9,WhiteBoxEL4,Fedora8)
Puppy Linux 4.3.1 VNC Serverのインストール: ペンギンの壺 有志によりPETパッケージにまとめたVNCも有るようです。こっち使えばすんなりとできたかもしれませんね。
by jehoshaphat | 2011-05-14 23:25 | Linux
(Linux)VNCサーバ構築
WindowsのクライアントからLinuxサーバ(CentOS5)をVNCでリモートする方法です。

VNCサーバ自体は CentOS インストール時に含めていました。


VNCサーバの起動方法は3つほどあるようです。
1.コマンドで vncserver を起動。
2.起動スクリプト /etc/rc.d/init.d/vncserver を使う方法。
3.inetd を使う方法。

今回は1回ぽっきりの使用だったので 1. の vncserver 手動起動の方法にしました。

まず、XwindowがつかるようにVNCで利用したいユーザの /home/user/.vnc/xstartup で unset と exec のコメントアウトを除けます。

vi /home/user/.vnc/xstartup

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER ←コメントアウト削除
exec /etc/X11/xinit/xinitrc ←コメントアウト削除

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &


つぎに、SSHでサーバにログインし、VNCで利用したいユーザで下記のようにコマンドを押下します。

# vncserver

↓初回はパスワードを求められます。
You will require a password to access your desktops.

Password:
Verify:
xauth: creating new authority file /home/hoge/.Xauthority

↓デスクトップ番号2が割り当てられています。
New 'testserver:2 (hoge)' desktop is testserver:2

Creating default startup script /home/hoge/.vnc/xstartup
Starting applications specified in /home/hoge/.vnc/xstartup
Log file is /home/hoge/.vnc/testserver:2.log


後はクライアントから、サーバ名:ディスプレイ番号 で接続するだけです。

サーバ側で vnc を終了するには下記コマンドでできるようです。

# vncserver -kill :ディスプレイ番号


参考:
VNC で Linux サーバにログインする
by jehoshaphat | 2010-11-13 08:24 | Linux