I've spent a considerable amount of time tracking down the
incompatibilities between dtlogin on Sparc Solaris and Xvnc 4.x (dtlogin
is the CDE version of XDM which is used to provide the Solaris login
screen when you use the -query option to Xvnc).
There are a number of issues, the most significant of which is that
there is a bug in dtlogin on Solaris 7 (and probably 2.6 and 8). It
looks like it gets confused when it uses the "named" protocol for
talking to the X server. Xvnc 3.3.7 used an earlier version of the X
server code that doesn't have support for this protocol which is why
Xvnc 3.3.7 works fine with it. Luckily there is a simple workaround for
Xvnc 4 servers which is to give the "-nolisten named" option to Xvnc.
Fonts are another issue which may cause problems but I haven't really
got to the bottom of what is going on. Using a font server seems to
help in some situations.
There is also a bug in the current 4.1.6 Enterprise Edition to do with
allocation of file descriptor numbers, for which there is a simple
workaround - add "3>/dev/null" to the Xvnc command line.
An additional pain is the fact that Solaris's inetd only allows 5
parameters to any spawned program. This means a wrapper script is needed.
So to summarise what seems to work for me on our Solaris 7 box:
1. Create a wrapper script called for example /usr/local/bin/Xvnc-inetd
which simply execs Xvnc with the desired arguments:
#!/bin/sh
exec /usr/local/bin/Xvnc -inetd -securitytypes=none -depth 24 \
-nolisten named -query localhost -once 3>/dev/null
2. Add an entry in /etc/services for the desired port, e.g.:
vnc50 5950/tcp
3. Add an entry to /etc/inetd.conf, not forgetting to kill -HUP the
inetd process:
vnc50 stream tcp nowait root /usr/local/bin/Xvnc-inetd Xvnc-inetd
4. Make sure /usr/dt/config/Xaccess etc allow XDMCP service from the
local host.
5. Connect a viewer to <host>:50 and you should be away...
Cheers
Tristan
Tom Schmidt wrote:
Chuck,
Your solution worked for me as well! I replaced the Solaris 8
dtlogin binary with the Solaris 9 version and now Xvnc 4.X works via
inetd! I agree that this is still not a solution to the root cause, but
at least it is a workaround. However I still support some Solaris 2.6
machines and this solution will not work for them since the Solaris 9
dtlogin is not backward compatible with Solaris 2.6.
So I do hope that the realvnc authors can fix this issue in their
Xvnc 4.X code since Xvnc 3.3.7 does not have this issue. And the
workaround above only fixes Solaris 8, not Solaris 2.6.
Tom
"Baumann, Chuck" <[EMAIL PROTECTED]> wrote:
> Tom,
> I have both Solaris 8 (sparc) and Solaris 9 (sparc) setup with inetd and
> the VNC connections work just fine on Solaris 9 but not on Solaris 8.
>
> After running both Solaris 8 and Solaris 9 dtlogin in debug mode and
> comparing what worked (solaris 9) and what doesn't (solaris 8) I was no
> closer to the answer. This is a comparison of the sizes of the two
> modules:
> -r-xr-xr-x 1 root bin 181532 Feb 17 07:45 dtlogin (sol8)
> -r-xr-xr-x 1 root bin 185396 Feb 17 13:36 dtlogin (sol9)
>
> Notice that the dtlogin module from Solaris 9 media is about 4K larger.
> I backed up the Solaris 8 version of dtlogin and then used the dtlogin
> from Solaris 9 on my Solaris 8 system.
> Both versions of dtlogin had all outstanding patches applied.
>
> Now when connecting via VNC on Solaris 8, I could successfully login to
> a CDE, OpenWindows or Failsafe Session. For some reason the extra code
> in the Solaris 9 dtlogin module will handle whatever is occurring and
> causing the Solaris 8 module to terminate.
> I realize that this is a workaround and not an answer.
> You may not have access to Solaris 9 or may not feel comfortable
> implementing a work-around such as this.
> I thought I would post my observations since they may help someone else
> with finding out what the real problem is.
> Chuck
_______________________________________________
VNC-List mailing list
[email protected]
To remove yourself from the list visit:
http://www.realvnc.com/mailman/listinfo/vnc-list