Difference between revisions of "Ifarm graphic mode"

From Hall A Wiki
Jump to: navigation, search
 
Line 75: Line 75:
 
= connect to any machine's main desktop at jlab by x11vnc  =
 
= connect to any machine's main desktop at jlab by x11vnc  =
  
Treat any machine at jlab like ifarm, you can connect to it by vnc and ssh tunneling
+
For a linux host at jlab, you can connect to its main desktop by x11vnc  and ssh tunneling as if you are sitting in front of it
  
If it's a linux machine you have root access, you can even connect its main desktop by x11vnc as if you are sitting in front of it
+
at the remote host,
 +
(if x11vnc is not installed, run "yum install x11vnc" as root to install it. If you have ssh key on login server or your remote host, disable it temporarily by renaming .ssh/authorized_keys)
 +
as an example, start x11vnc in the machine called lily.jlab.org as follows
 +
run "x11vnc -localhost -auth guess -display :0 -repeat -shared -forever -rfbport 5900 &"
 +
It's preferred to run it as root so that you can do vnc even before 1st login when computer boots. Otherwise just run it as regular user yourself.
  
at the remote host, as an example, start x11vnc in the machine called lily.jlab.org as follows
+
  at your local machine, as an example,connect to host lily from your machine outside jlab as follows
run "yum install x11vnc" as root to make sure x11vnc is installed.
+
  For linux or mac, run in a terminal "ssh -X -N -g -L 5922:lily:22 your_lab_username@login.jlab.org", then run in another terminal "ssh -X -N -g -L 5999:localhost:5900 your_lab_username@localhost -p 5922" (both terminals will just stay there without allowing you to input anything and you keep both alive.)
run "x11vnc -localhost -auth guess -display :0 -repeat -shared -forever -rfbport 5900 &" as root
+
 
+
  at your local machine, as an example,connect to lily from your machine outside jlab as follows
+
  For linux or mac, run "ssh -X -N -g -L 5922:lily:22 your_lab_username@login.jlab.org" and another "ssh -X -N -g -L 5999:localhost:5900 your_lab_username@localhost -p 5922" (both terminals will just stay there without allowing you to input anything)
+
 
  For windows, use putty to connect to login.jlab.org by add Connection->SSH->Tunnels with source port 5922 and destination lily:22" and another putty to connect to localhost:5922 by add Connection->SSH->Tunnels with source port 5999 and destination localhost:5900"
 
  For windows, use putty to connect to login.jlab.org by add Connection->SSH->Tunnels with source port 5922 and destination lily:22" and another putty to connect to localhost:5922 by add Connection->SSH->Tunnels with source port 5999 and destination localhost:5900"
  get a good [https://www.realvnc.com/en/connect/download/viewer/ vncviewer]
+
  The first ssh tunneling connect your localhost:5922 to lily:22 through login:22 and the second ssh tunneling connect your localhost:5900 to lily:5900 through localhost5922 which is actually lily:22
  in a new terminal, then run vncviewer and connect to localhost:99
+
 
 +
at your local machine, get [https://www.realvnc.com/en/connect/download/viewer/ vncviewer]
 +
  then run vncviewer and connect to localhost:99
 
  choose lower graphic quality for better speed and scale to window size in option for best use
 
  choose lower graphic quality for better speed and scale to window size in option for best use

Latest revision as of 16:08, 26 March 2020

For any question, email Zhiwen Zhao zwzhao@jlab.org

Why

Usually we are running code on ifarm without caring about graphic because it's used for a test ground for farm job anyway.

Sometimes we do want to test a code's graphic feature. For example, it's a common system we all have access and can be used for debug.

Sometime you also want to connect to other machines at jlab for graphic

connect to ifarm at jlab by vnc

Xwindow forwarding (not recommended)

It is simply use Xwindow forwarding by ssh into ifarm and run the code.

Xwindow graphic is always rendered in your local machine. This is not only very slow if your machines is outside of jlab network, but also can have different results for different people because their local machines are different. Sometimes, it can even cause crash of your local machine if your code is not nice and your local machine is very different from ifarm.

ssh -XY your_lab_username@ifarm          (login with Xwindow forwarding enabled for linux and Mac)
xclock &                                 (test if Xwindow forwarding works)                                            
If you local machine is windows, you need to have a Xwindow server like Xming-mesa running. You also you need to enable Xwindows forwarding in putty option to use ssh
If you local machine is Mac, you need to have a Xwindow server installed and enabled

vnc (recommended)

tested on ifarm1401 and ifarm1402 as of 2017/05

The better way to do it is through a vnc server inside ifarm. This way the code won't crash because it runs within the same environment where it is compiled and everyone will see same result. Here is how to do it

You need to use ifarm1401 or ifarm1402 explicitly, ifarm is an alias to both and would cause confusion. I use ifarm1401 as an example below.

start vnc server

First you need to start a vncserver on ifarm1401

ssh -XY your_lab_username@ifarm1401.jlab.org (login with Xwindow forwarding enabled)
mkdir .vnc
edit .vnc/xstartup with lines below
        #!/bin/sh
        xsetroot -solid grey
        vncconfig -iconic &
        xterm -geometry 160x50+10+10 -ls -title "$VNCDESKTOP Desktop" &
        metacity &
chmod 755 .vnc/xstartup
vncserver                           (start vnc server)
or
vncserver -bs                       (start vnc server this way if somehow quitting program root will kill vncserver)
(give a password if running it first time, or run vncpasswd to enter password
note the vnc server port number output on screen
make sure to kill the server after you using it to free resource on ifarm,
otherwise it will keep running even after you log out!)
vncserver -kill :port         (replace port with correct vnc server port number, note the space before colons)

run vnc viewer

Next you need to connect to the vnc server on ifarm1401 by a vnc viwer

The simple way is to use vncviewer on ifarm to test see if your vncserver runs ok. It's slow if your machine is not at jlab network

ssh -XY your_lab_username@ifarm1401 (login with Xwindow forwarding enabled)
vncviewer localhost:port            (replace port with correct vnc server port number)

The best way is run vncviewer on your machine anywhere through ssh tunneling

built ssh tunnel as follows with correct port number of vnc server
  if your linux or mac machine is at jlab, run "ssh -X -N -g -L 5999:localhost:port your_lab_username@ifarm1401.jlab.org" 
  if your linux or mac machine is outside jlab, run "ssh -X -N -g -L 5922:ifarm1401:22 your_lab_username@login.jlab.org" and another "ssh -X -N -g -L 5999:localhost:port your_lab_username@localhost -p 5922"
  if you windows machine is at jlab, use putty to connect to ifarm1401.jlab.org:22 by add Connection->SSH->Tunnels with source port 5999 and destination localhost:port"
  if you windows machine is outside jlab, use putty to connect to login.jlab.org by add Connection->SSH->Tunnels with source port 5922 and destination ifarm1401:22" and another putty to connect to localhost:5922 by add Connection->SSH->Tunnels with source port 5999 and destination localhost:port"
get a good vncviewer
then run vncviewer and connect to localhost:99
choose lower graphic quality for better speed and scale to window size in option for best use

connect to any machine's main desktop at jlab by x11vnc

For a linux host at jlab, you can connect to its main desktop by x11vnc and ssh tunneling as if you are sitting in front of it

at the remote host, 
(if x11vnc is not installed, run "yum install x11vnc" as root to install it. If you have ssh key on login server or your remote host, disable it temporarily by renaming .ssh/authorized_keys)
as an example, start x11vnc in the machine called lily.jlab.org as follows
run "x11vnc -localhost -auth guess -display :0 -repeat -shared -forever -rfbport 5900 &"
It's preferred to run it as root so that you can do vnc even before 1st login when computer boots. Otherwise just run it as regular user yourself.
at your local machine, as an example,connect to host lily from your machine outside jlab as follows
For linux or mac, run in a terminal "ssh -X -N -g -L 5922:lily:22 your_lab_username@login.jlab.org", then run in another terminal "ssh -X -N -g -L 5999:localhost:5900 your_lab_username@localhost -p 5922" (both terminals will just stay there without allowing you to input anything and you keep both alive.)
For windows, use putty to connect to login.jlab.org by add Connection->SSH->Tunnels with source port 5922 and destination lily:22" and another putty to connect to localhost:5922 by add Connection->SSH->Tunnels with source port 5999 and destination localhost:5900"
The first ssh tunneling connect your localhost:5922 to lily:22 through login:22 and the second ssh tunneling connect your localhost:5900 to lily:5900 through localhost5922 which is actually lily:22 
at your local machine, get vncviewer
then run vncviewer and connect to localhost:99
choose lower graphic quality for better speed and scale to window size in option for best use