LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

ラベル VNC の投稿を表示しています。 すべての投稿を表示
ラベル VNC の投稿を表示しています。 すべての投稿を表示

2024年9月4日水曜日

【Raspberry Pi 5】ローカルディスプレイのデスクトップ画面をミラーリングするリモートデスクトップ接続の設定方法について

 ■ 概要

  ここでは、安全なローカルネットワーク上にあるRaspberry Pi 5 (Raspberry Pi OS)に、ローカルHDMIディスプレイに表示されるデスクトップをミラーリングしたリモートデスクトップ接続を行う手順を確認している。

 このリモートデスクトップ接続にはVNCを用いているが、Raspberry PiにHDMI接続したディスプレイで通常表示されるデスクトップ画面そのものをミラーリングして、リモートの環境で操作する方法を取り扱っている点が特徴的である。

 通常、ユーザーはRaspberry PiにHDMI接続したディスプレイに表示される画面でログインし、デスクトップ操作を行う。これらのユーザーをリモートからサポートするためには、上記のような方法でのリモートデスクトップ接続が必要である。


■ ローカル画面をミラーリングしてリモートデスクトップ接続するための設定


◯ ヘッドレスでラズパイが起動した場合に備えるための設定

 Raspberry Pi 5は、HDMIに関して初期設定のまま、ヘッドレス(HDMI接続ディスプレイなし)で起動すると、内部でローカル画面描画に関するシステムの機能の処理能力を制限するようである。そのためローカルディスプレイをミラーリングするリモートデスクトップの反応が非常に遅くなった。

 しかし、次のように、「video=HDMI-A-1:1920x1080@60D」という設定を次のファイルの次のような設定項目の最後に付けて、再起動を行うと問題が解消した。

# nano /boot/firmware/cmdline.txt

console=serial0,115200 console=tty1 root=PARTUUID=xxxxxxxx-02 rootfstype=ext4 fsck.repair=yes rootwait video=HDMI-A-1:1920x1080@60D

# reboot

 あるいは、この設定なしで、「ダミーHDMI」のドングルをRaspberry Pi 5のHDMIポートに取り付けておいても、ヘッドレスでもローカル画面をミラーリングしたリモートデスクトップを快適に使うことができた。


◯ x11vncのインストール

# apt install x11vnc -y

以下の追加パッケージがインストールされます:
  liblzo2-2 libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6
提案パッケージ:
 tcl-tclreadline
以下のパッケージが新たにインストールされます:
  liblzo2-2 libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc                    
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 0 個。



◯ リモート接続時のパスワードを設定

# mkdir /etc/x11vnc
# touch /etc/x11vnc/passwd

# x11vnc -storepasswd /etc/x11vnc/passwd

Enter VNC password: 
Verify password:    
Write password to /etc/x11vnc/passwd?  [y]/n y
Password written to: /etc/x11vnc/passwd

 ここで、設定したパスワードを「共通VNCパスワード」と呼ぶことにする。



◯ Raspberry Pi 5に割り当てられているIPアドレスの確認

# ip a | grep inet

 ネットワーク環境に依るが、192.168.X.Xのようなアドレスが割り当てられていることが多い。これをメモしておく。リモート接続の際に使用する。



◯ (動作テスト) x11vncの起動(display 0にアタッチ)

 Linuxでは、X ServerというシステムがGUIの画面を取り扱う。(X Serverが、マウス、キーボード入力の受け取り、画面の描画などを担当する。)Linuxでは、このX Serverというシステムを複数起動させることができる。複数のX Serverのうちから一つを指定するための番号が、display番号と呼ばれるものである。

 通常、display番号「0」が参照するX Serverは、ローカルでGUIへのログインを担当する「ウインドウマネージャー」の画面を取り扱っている。そこで、後に示すコマンド(★)を用いて、display番号「0」が参照するX Serverに、x11vncをアタッチする。これによって、ログイン画面をVNC経由でミラーリングできるようになる

 また、この方法で、ログイン後のデスクトップ環境の画面も、引き続きVNC経由でミラーリングできる。つまり、display番号「0」が参照するX Serverは、最初はログインを担当するウインドウマネージャーの画面を取り扱っているが、ログインに成功すると、そのままそのユーザーのデスクトップ画面を取り扱うということである

 次の図の仕組みによって、ローカル側GUI画面と、リモート側画面がミラーリングされる。

(ローカル側画面)X Server(0) ← X11Vnc(5900) ← == ネット== ←Vnc Client (リモート側画面)

(★)

# x11vnc -auth guess -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -forever -loop -xkb -noxdamage -repeat -shared

 --- x11vnc loop: 1 ---

 --- x11vnc loop: waiting for: 2622

24/06/2024 09:53:37 passing arg to libvncserver: -rfbauth
24/06/2024 09:53:37 passing arg to libvncserver: /home/user01/.vnc/passwd
24/06/2024 09:53:37 passing arg to libvncserver: -rfbport
24/06/2024 09:53:37 passing arg to libvncserver: 5900
24/06/2024 09:53:37 x11vnc version: 0.9.16 lastmod: 2019-01-05  pid: 2622
xauth:  file /root/.Xauthority does not exist
24/06/2024 09:53:37 -auth guess: using 'XAUTHORITY=/var/run/lightdm/root/:0' for disp=':0'
24/06/2024 09:53:37 Using X display :0
24/06/2024 09:53:37 rootwin: 0x39f reswin: 0x600001 dpy: 0x72803770
24/06/2024 09:53:37 
24/06/2024 09:53:37 ------------------ USEFUL INFORMATION ------------------
24/06/2024 09:53:37 
24/06/2024 09:53:37 Wireframing: -wireframe mode is in effect for window moves.
24/06/2024 09:53:37   If this yields undesired behavior (poor response, painting
24/06/2024 09:53:37   errors, etc) it may be disabled:
24/06/2024 09:53:37    - use '-nowf' to disable wireframing completely.
24/06/2024 09:53:37    - use '-nowcr' to disable the Copy Rectangle after the
24/06/2024 09:53:37      moved window is released in the new position.
24/06/2024 09:53:37   Also see the -help entry for tuning parameters.
24/06/2024 09:53:37   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2024 09:53:37   repaint the screen, also see the -fixscreen option for
24/06/2024 09:53:37   periodic repaints.
24/06/2024 09:53:37 
24/06/2024 09:53:37 XFIXES available on display, resetting cursor mode
24/06/2024 09:53:37   to: '-cursor most'.
24/06/2024 09:53:37   to disable this behavior use: '-cursor arrow'
24/06/2024 09:53:37   or '-noxfixes'.
24/06/2024 09:53:37 using XFIXES for cursor drawing.
24/06/2024 09:53:37 GrabServer control via XTEST.
24/06/2024 09:53:37 
24/06/2024 09:53:37 Scroll Detection: -scrollcopyrect mode is in effect to
24/06/2024 09:53:37   use RECORD extension to try to detect scrolling windows
24/06/2024 09:53:37   (induced by either user keystroke or mouse input).
24/06/2024 09:53:37   If this yields undesired behavior (poor response, painting
24/06/2024 09:53:37   errors, etc) it may be disabled via: '-noscr'
24/06/2024 09:53:37   Also see the -help entry for tuning parameters.
24/06/2024 09:53:37   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2024 09:53:37   repaint the screen, also see the -fixscreen option for
24/06/2024 09:53:37   periodic repaints.
24/06/2024 09:53:37 X FBPM extension not supported.
24/06/2024 09:53:37 X display is capable of DPMS.
24/06/2024 09:53:37 --------------------------------------------------------
24/06/2024 09:53:37 
24/06/2024 09:53:37 Default visual ID: 0x21
24/06/2024 09:53:37 Read initial data from X display into framebuffer.
24/06/2024 09:53:37 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/4096
24/06/2024 09:53:37 
24/06/2024 09:53:37 X display :0 is 32bpp depth=24 true color
24/06/2024 09:53:37 
24/06/2024 09:53:37 Listening for VNC connections on TCP port 5900
24/06/2024 09:53:37 Listening for VNC connections on TCP6 port 5900
24/06/2024 09:53:37 listen6: bind: Address already in use
24/06/2024 09:53:37 Not listening on IPv6 interface.
24/06/2024 09:53:37 fb read rate: 468 MB/sec
24/06/2024 09:53:37 fast read: reset -wait  ms to: 10
24/06/2024 09:53:37 fast read: reset -defer ms to: 10
24/06/2024 09:53:37 The X server says there are 10 mouse buttons.
24/06/2024 09:53:37 screen setup finished.
24/06/2024 09:53:37 

The VNC desktop is:      raspberrypi:0
PORT=5900

******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval.  It should work with any VNC viewer.  Try it by running:

    x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching



◯ (動作テスト) リモート接続

 他の端末から、先程確かめたRaspberry Pi 5のアドレス「192.168.X.X」にVNCで接続する。

 今回は、別のLinux端末のTigerVNCクライアントアプリケーションを使って接続した。このとき指定アドレスとポートを次のように指定した。

「192.168.X.X:0」もしくは「192.168.X.X:5900

 先程設定した「共通VNCパスワード」を入力すると、次のようにリモートの操作画面が開いた。

 ここで、ユーザー名(user01)、そのパスワードを入力した。


 すると、次のようにユーザー「user01」のMATEデスクトップ環境の画面に遷移した。



 さらに、ログアウト後、再びログインすることも問題なくできた。

 複数のVnc Clientを接続して、1対多でミラーリングすることもできた。



◯ システム起動時にリモート接続機能を自動起動させる設定

 以上で、手動でコマンドを実行することによって、ローカル画面をミラーリングしてリモートデスクトップを許可する仕組みを整えられたことを確認した。ここでは、このコマンドをシステム起動時に自動で起動するための設定を行う。

 まず、次のように設定ファイルを作成する。この設定ファイル名がサービス名として使用される。X Server(Display番号0)にアタッチするx11vncサービスということから「x11vnc_0」とした。

# nano /etc/systemd/system/x11vnc_0.service

[Unit]
Description=x11vnc (Remote access to X Server 0)
After=network-online.target

[Service]
Type=simple
ExecStart=x11vnc -auth guess -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -forever -loop -xkb -noxdamage -repeat -shared
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=graphical.target


# systemctl daemon-reload
# systemctl enable x11vnc_0

Created symlink /etc/systemd/system/graphical.target.wants/x11vnc_0.service → /etc/systemd/system/x11vnc_0.service.

# reboot

 システムの再起動後、しばらく待つと、テスト動作と同様にしてVNCクライアントからユーザー「user01」のログインを経て、MATEデスクトップ環境を操作できた。



<参考>

● ディスプレイマネージャー
・What is the greeter?/A greeter is a graphical login interface. It's also often called the login screen.
< https://askubuntu.com/questions/1027145/what-is-the-greeter > 2024年6月17日

・LightDM/Greeter
< https://wiki.archlinux.org/title/LightDM > 2024年6月17日


● リモートアクセス
・【備忘録】Ubuntu20.04でx11vncセットアップ
< https://qiita.com/moootoko/items/a489279c26cae68d60d6 > 2024年6月24日


● HDMI出力
・Bullseye vncserver is very slow without display
< https://forums.raspberrypi.com/viewtopic.php?t=323294 > 2024年9月11日

・Extremely slow VNC response in Chromium - Bookworm (Raspberry 5 using X11)
< https://forums.raspberrypi.com/viewtopic.php?t=366262 > 2024年9月11日

2012年6月11日月曜日

【Linux CentOS 6.2 64bit 版】TurboVNC Serverのインストールと設定

CentOS 6.2 64bit版に、TurboVNC 1.1 Serverをインストールしたときのメモ


Turbo VNCは、公開されているRPMパッケージで導入できた。

ただいくつかの問題点に気が付いた。
インストールする前に、次に挙げる不具合を確認したほうがいい。

「ただし、このブログ記事は、2012年のものなのでとても古いです。
現在の新しいパッケージでは、不具合が解決されているかもしれません。試していません。」


(不具合)
・gnome上で、ファイルアイコンの右クリックメニューを表示させたとき、しばしばメニュー一番目にある項目が勝手に選択実行されてしまった。
そのため、ファイルで右クリックを押しただけでそのメニュー一番目に「アプリケーションで開く」があれば勝手にファイルが開いてしまうし、
デスクトップ上の何もないところで右クリックを押しただけで、そのメニューの一番目にある「フォルダを新規作成」が勝手に選択実行されて、フォルダが作成されてしまった。
(回避策: 右クリックで表示されるメニューを使わないこと。代わりに、デスクトップをHOMEフォルダから開いてウインドウ表示させ、その編集メニューにあるコピーや、貼り付けなどの機能を用いる。)

・このインストール環境で試したところ、gnome上でファイルのドラッグアンドドロップ操作ができなかった。
(回避策: ウインドウ上部バー編集メニューにあるコピーアンドペーストを使う。)

・システム起動時のタイミングでtvncserverを自動起動させると、gnomeが日本語モードにならなかったので注意。
(回避策: 手動で起動すれば問題なかった。対応方法などは後述)


今後の、バージョンアップに期待して前向きに。



□インストール手順

(注意事項)
・設定ファイル名や実行ファイルの位置などが、yumでインストールできるvnc serverとは異なっていたので注意。

<前提>

・CentOS 6.2 64bit版は、インストーラーで「デスクトップ」を選択して導入したものを用いた。
・SELinuxは解除した。
・簡単のためにファイアウォールは無効にした。


1、rpmファイルのダウンロードを行った

http://sourceforge.net/projects/virtualgl/files/TurboVNC/1.1/ からrpmファイルをダウンロードした。
[root@local software]# ls
turbovnc-1.1.x86_64.rpm

2、必要なパッケージをインストールした

[root@local software]# yum install libXaw
Installed:
  libXaw.x86_64 0:1.0.6-4.1.el6

Complete!

3、rpmコマンドを使って、ダウンロード済みのturbovnc-1.1.x86_64.rpmをインストールした
[root@local software]# rpm -ivh turbovnc-1.1.x86_64.rpm
準備中...                ########################################### [100%]
   1:turbovnc               ########################################### [100%]



□設定手順

<前提>
・ログインできてgnomeが使用可能な「LINUXユーザー」(例として、userA、userB)があること
・そのユーザーで一度以上ログインしgnomeを使用しており、ホームディレクトリに関係ファイルが配置されていること


0、設定に必要なファイルの位置や名前を確認した

[root@local software]# find / -name "*vnc*"
/usr/share/doc/turbovnc-1.1
/usr/share/doc/turbovnc-1.1/turbovnc.css
/usr/share/doc/turbovnc-1.1/turbovnc3.png
/usr/share/doc/turbovnc-1.1/turbovnc1.png
/usr/share/doc/turbovnc-1.1/turbovnc6.png
/usr/share/doc/turbovnc-1.1/turbovnc5.png
/usr/share/doc/turbovnc-1.1/turbovnc4.png
/usr/share/doc/turbovnc-1.1/turbovnc2.png
/usr/share/applications/tvncviewer.desktop
/root/software/turbovnc-1.1.x86_64.rpm
/opt/TurboVNC/man/man1/vncserver.1
/opt/TurboVNC/man/man1/vncviewer.1
/opt/TurboVNC/man/man1/vncpasswd.1
/opt/TurboVNC/man/man1/vncconnect.1
/opt/TurboVNC/man/man1/Xvnc.1
/opt/TurboVNC/vnc
/opt/TurboVNC/vnc/classes/index.vnc
/opt/TurboVNC/bin/vncpasswd
/opt/TurboVNC/bin/vncconnect
/opt/TurboVNC/bin/tvncconfig
/opt/TurboVNC/bin/Xvnc
/opt/TurboVNC/bin/vncviewer
/opt/TurboVNC/bin/vncserver
/etc/sysconfig/tvncservers
/etc/rc.d/rc5.d/K35tvncserver
/etc/rc.d/rc4.d/K35tvncserver
/etc/rc.d/rc1.d/K35tvncserver
/etc/rc.d/rc2.d/K35tvncserver
/etc/rc.d/rc0.d/K35tvncserver
/etc/rc.d/rc6.d/K35tvncserver
/etc/rc.d/rc3.d/K35tvncserver
/etc/rc.d/init.d/tvncserver
/etc/turbovncserver.conf
/etc/turbovncserver-auth.conf

1、LINUXユーザーのホームディレクトリに、.vnc 隠しディレクトリを作成した

作成する.vncディレクトリは、userAがリード・ライトできるようにした

[root@local software]# cd /home/userA
[root@local software]# su userA
bash-4.1$ mkdir .vnc

同様にして、userBについても設定を行う


2、VNCパスワードを設定した(VNC ViewerでVNC Serverにアクセスするときに求められる)

(注意) su userAのままなので、userA用パスワードを作成することになる

bash-4.1$ /opt/TurboVNC/bin/vncpasswd
Password:  ←設定するパスワードを入力した
Verify:    ←確認のためもう一度入力した
Would you like to enter a view-only password (y/n)? n  ← yにすると、view-only用になってしまうので注意

3、VNCサーバの設定を行った

(注意)rootに戻っておく

設定ファイル内の例に倣って設定を行った
[root@local ~]# vim /etc/sysconfig/tvncservers
一部抜粋

# VNCSERVERS="1:myusername"
# VNCSERVERARGS[1]="-geometry 800x600 -nohttpd -localhost"
#
VNCSERVERS="1:userA 2:userB"

1:userAの1や、2:userBの2は、VNCのディスプレイ番号である。
ディスプレイ番号は重ならないように指定すること。

(注意)
ディスプレイ番号は、VNCクライアントが接続してくる「待ち受けポート番号」に関係する。
待ち受けポート番号 = 5900 + ディスプレイ番号になっている。

ディスプレイ番号によっては、(システム予約され)使用できないポート番号と重なってしまい、VNCSERVERの起動に失敗してしまう。

たとえば、ディスプレイ番号、53や、102に設定すると、VNCSERVERの起動に失敗した。
この場合、別の番号を指定すると問題なく起動することができた。



4、VNC Serverを起動した

[root@local ~]# service tvncserver start
TurboVNC server を起動中: 1:userA 2:userB                         [  OK  ]

5、システム起動時に自動的にスタートするように設定した

[root@local ~]# chkconfig tvncserver on

システム起動時のタイミングでtvncserverを起動すると、gnomeが日本語モードにならなかったので注意。
rc.localに起動コマンドを記述する方法でも同様に、gnomeが日本語にならなかった。
gnomeで日本語を使いたい場合は、自動スタートの設定をせずに、
システム起動後にターミナルから手動でservice tvncserver startすると良い。



□動作テスト

今回のインストール作業で専用Viewerもインストールされており、GNOMEのメニューから利用可能だった。

動作テストでは、クライアントソフトのVNC Viewer (Windows版)からアクセスした。
TurboVNC専用のクライアントソフトを使うと、ローカルで操作しているみたいにとても快適だった。

VNC Viewerには、サーバマシンIPv4アドレスと接続ポートを指定した。
接続ポート番号で、VNCのディスプレイ番号とLINUXユーザーが区別される。
接続ポート番号は、5900に「VNCのディスプレイ番号」を加算した数になる。

(例)userAのVNCディスプレイ番号にアクセスする場合
VNC Serverアドレス:5901

Ad

Ad