SRSS 4.1 on OpenSolaris 2008.11

From Sun Ray User Group Wiki

Jump to: navigation, search

Contents

Background - Goals - Disclaimers

  • The purpose of this page is to provide a recipe for SRSS 4.1 installation/configuration on OpenSolaris 2008.11.
  • Over time, the plan is to refine this page as knowledge & the product evolves until SRSS officially supports OpenSolaris seamlessly (target release unknown as of Dec 2008).
  • This documentation should not be construed as a recommendation to install SRSS 4.1 & OpenSolaris in a production environment.
  • These procedures were jointly developed by Bob Doolittle (Sun Ray Engineering) & Matt Hatley (SunFed Desktop Practice).


Assumptions

  • Reader has basic Solaris System Administration skills
  • Reader has Sun Ray Administration skills
  • Execute instructions as root (in a terminal window use cmd: su -). Although not all cmds need to be executed as root, assuming so simply makes the procedures shorter & clearer.
  • Unless otherwise noted below, accept default command options.


Download Required Software

  • OpenSolaris 2008.11 officially released 10Dec2008 [1]
  • SRSS 4.1 (aka Sun Ray Software 4 10/08, Sun code name "Aker") released Oct2008 [2]


OpenSolaris 2008.11 Installation/Configuration Instructions

Boot, Install & reboot OpenSolaris 2008.11

Tell networking to use static addresses. Either:

  • Use the System->Administration->Network configuration GUI tool

or execute the following cmdline procedures:

  • Edit /etc/nwam/llp to contain a line of the form
    NIC static IP/maskbits
    for each network interface that should have a static address, where NIC is the name of your network interface, IP is the desired static IP address and maskbits is the length of your netmask. Examples:
    e1000g0 static 172.16.0.43/16
    e1000g1 static 192.168.128.1/24
    And then...
  • Restart NWAM:
    svcadm restart nwam

NWAM is an interesting character (especially how it interacts with Sun Ray). If you simply plan to setup your Sun Ray topology using utadm -L on, continued use of NWAM is fine. If you plan to use a SRSS topology (utadm -a or utadm -A), it gets so dicey, it's easier to Turn off NWAM. More on that below in the Sun Ray Server 4.1 Topology Configuration Instructions section or you can go here to Turn off NWAM.


Ensure DNS is configured (if applicable). Setup /etc/resolv.conf, here's an example:

domain     example.acme.com
nameserver 192.168.1.1

Activate:

cp /etc/nsswitch.dns /etc/nsswitch.conf
svcadm enable dns/client
svcadm restart dns/client

Sun Ray Server 4.1 Installation Instructions

Base installation (no change to standard/documented procedures, accept all defaults)...

unzip -qq srss_4.1_solaris.zip
cd srss_4.1
./utinstall

...at this point, normal SRSS installation procedures call for a reboot, but hold off.

Install Apache Tomcat:

gtar xfz <MEDIA-DIR>/srss_4.1/Supplemental/Apache_Tomcat/apache-tomcat-5.5.20.tar.gz -C /opt
mv /opt/apache-tomcat-5.5.20 /opt/apache-tomcat

Configure the Xsession.d/xinitrc.d area:

mkdir -p /etc/X11/xinit/xinitrc.d
ln -s /etc/opt/SUNWut/xinitrc.d/* /etc/X11/xinit/xinitrc.d

Enable use of GDM by SRSS:

touch /etc/opt/SUNWut/ut_enable_gdm

Ensure TFTP & DHCP packages are available:

  • On OpenSolaris 2008.11 the TFTP package is installed by default, but DHCP is not. Install the DHCP packages:
pkg install SUNWdhcs SUNWdhcsb SUNWdhcm
  • If you observe the following errors during the pkg install above:
Error Msg: Action install failed for 'etc' (pkg:/SUNWdhcs):
Error Msg: KeyError: 'user name not found: root'
-
Work-around:: touch /etc/passwd
The error was caused by bug # 4788 (/etc/passwd file ended up w/ epoch time stamp 1969-12-31)
Bug Ref: http://defect.opensolaris.org/bz/show_bug.cgi?id=4788
  • If TFTP is missing, install it:
pkg install SUNWtftp
  • Enable TFTP: Follow the instructions under http://default-information.blogspot.com/2007/12/opensolaris-tftp-server.html
  • You can also install the TFTP & DHCP packages via the new package manager GUI. Click the "Add More Software" icon on your desktop (Note the "user name not found: root" error & work around above. This condition occurs with package manager GUI as well). If you're unfamiliar with new package manager GUI, there's an excellent explanation included in this OpenSolaris 2008.11 new features presentation [3]


Update /etc/pam.conf to include these stacks for gdm (add the following lines @ EOF):

# START: To support gdm on SRSS, added following by hand...
gdm   auth requisite          /opt/SUNWut/lib/pam_sunray_hotdesk.so.1
gdm   auth requisite          /opt/SUNWut/lib/sunray_get_user.so.1 property=user
gdm   auth required           /opt/SUNWut/lib/pam_sunray_amgh.so.1
gdm   auth sufficient         /opt/SUNWkio/lib/pam_kiosk.so log=user ignoreuser
gdm   auth requisite          /opt/SUNWkio/lib/pam_kiosk.so log=user 
gdm   auth sufficient         /opt/SUNWut/lib/pam_sunray.so
gdm   auth requisite          /opt/SUNWut/lib/sunray_get_user.so.1 prompt
gdm   auth required           /opt/SUNWut/lib/pam_sunray_amgh.so.1 clearuser
gdm   auth requisite          pam_authtok_get.so.1
gdm   auth required           pam_dhkeys.so.1
gdm   auth required           pam_unix_cred.so.1
gdm   auth required           pam_unix_auth.so.1
gdm   account sufficient      /opt/SUNWkio/lib/pam_kiosk.so log=user
gdm   account sufficient      /opt/SUNWut/lib/pam_sunray.so
gdm   account requisite       pam_roles.so.1
gdm   account required        pam_unix_account.so.1
gdm   session requisite       /opt/SUNWut/lib/pam_sunray_hotdesk.so.1
gdm   session required        /opt/SUNWkio/lib/pam_kiosk.so log=user
gdm   session required        pam_unix_session.so.1
gdm   password required       pam_dhkeys.so.1
gdm   password requisite      pam_authtok_get.so.1
gdm   password requisite      pam_authtok_check.so.1
gdm   password required       pam_authtok_store.so.1
# END: To support gdm on SRSS

Fix a bug in /opt/SUNWut/lib/utdtsession (6803899)

  • Edit the file and replace "awk" with "nawk". It only occurs in one place, on line 493.

If you have access to Nevada packages and really want NSCM and RHA functionality, see the Motif section below and follow those steps now.

Make sure you have a /var/dt directory (mkdir /var/dt), otherwise you may get the following errors:

/etc/opt/SUNWut/xmgr/notify[28]: /var/dt/Xpid: cannot open [No such file or directory]
/etc/opt/SUNWut/xmgr/notify: failed to obtain master PID from /var/dt/Xpid

OK, now it's cool to reboot:

init 6

Sun Ray Server 4.1 Topology Configuration Instructions

3 methods for setting up SRSS topology:

  • 1 Easiest - Public (no DTU boot/IP/DHCP info provided by SRSS): utadm -L on
  • 2 Public (some DTU boot info provided by SRSS): utadm -A <SUBNET>
  • 3 Private: utadm -a <NIC>
  • utadm command details & background is available in the SRSS Admin Guide for Solaris [4]

For options 2 & 3, continued use of OpenSolaris NWAM gets messy. If you follow these procedures/work-arounds to Turn off NWAM, utadm -a & utadm -A will work in the typical way. For example, the following problem is caused by NWAM:

utadm -A 192.168.1.0
Error: host IP address must be set
Set host IP address in /etc/inet/hosts files and try again

After turning off NWAM you see this error:

utadm -A 192.168.1.0
### Configuring /etc/nsswitch.conf
### Configuring Service information for Sun Ray
cp: cannot access /usr/dt/config/sessionetc
chmod: WARNING: can't access /usr/dt/config/sessionetc.1273
/usr/bin/nawk: can't open file /usr/dt/config/sessionetc.1273
 source line number 1
cp: cannot access /usr/dt/config/sessionetc
Error:  unable to make backup file "/usr/dt/config/sessionetc.bak"

Here is the work-around:

touch /usr/dt/config/sessionetc

Sun Ray Server 4.1 Configuration Instructions

Configure the SRSS Web Mgmt Interface:

/opt/SUNWut/sbin/utconfig

Set Policy:

/opt/SUNWut/sbin/utpolicy -a -g -z both -D

Restart SRSS Services:

/opt/SUNWut/sbin/utrestart -c

At this point SRSS should be hot on OpenSolaris 2008.11!!!


Optional Next Steps

Install SRWC 2.1 (no change to standard installation procedures):

unzip -qq srwc_2.1
groupadd uttsc
cd srwc_2.1
./installer
/opt/SUNWuttsc/sbin/uttscadm -c
/opt/SUNWut/sbin/utrestart

During the uttscadm -c step you will be asked to provide the pathname of a library that can satisify SRWC's dependency on functions that were originally delivered in libcrypto.so.0.9.7. The suggested default of /usr/sfw/lib/libcrypto.so.0.9.8 is fine if that library actually exists on your system. If it does not exist then you should specify /lib/libcrypto.so.0.9.8 instead.

(The earlier instructions here assumed that /usr/sfw/lib/libcrypto.so.0.9.8 would always exist but that is no longer true in OpenSolaris build 110, a.k.a. nv_110. The original instructions would leave you with a broken SRWC install on nv_110.)

If neither /usr/sfw/lib/libcrypto.so.0.9.8 nor /lib/libcrypto.so.0.9.8 exists then perhaps the SUNWopenssl package is not installed on your system. If installing that package doesn't give you a suitable library then your best way forward is to ask for assistance on the sunray-users mailing list.

Install Terminal Services Client GUI (it's got a nice SRWC protocol option):

pkg install SUNWtsclient

It's available via tsclient cmd (now) or the Applications->Internet->Terminal Server Client menu option (the menu doesn't update until you perform a logout/login).

How to Use CUPS to Configure an Attached Non-PostScript Printer

On OpenSolaris, the (Common Unix Printing System) CUPS can be used to administer and configure printers. CUPS can also be configured to use printers connected via USB to the DTU.

1. Enable CUPS on the Sun Ray server:

# print-service -s cups

The CUPS Admin GUI is now available at http://localhost:631

2. Change directory to the DTU's printer device files.

/tmp/SUNWut/units/<DTU>/dev/printers/*

3. Change permissions on the printer's device file.

# chmod 777 <device_file>

(Unfortunately, this is not permanent - If someone knows how to make this change permanent, please update here.)

4. Add a new printer using the CUPS Admin GUI.

  • Select the "hal backend" as the printer connection
  • Use "parallel:<path to your printer>" as a device.

Example

Description: Example Printer
Location: Next to my desk
Printer Driver: Brother HL-2060 Foomatic/hl1250 (recommended)
Printer State: idle, accepting jobs, published.
Device URI: parallel:/tmp/SUNWut/units/IEEE802.00144f7f5f91/dev/printers/BrotherA5J292353

How to Disable GDM on the Console

On Servers with memory limitations, you can save a few MB of RAM by disabling GDM/X11 on the local VGA console, which you typically don't need. Do this in one of two ways (tested on OpenSolaris 2009.06):

  • Using the gdmsetup command, remove Screen 0 from the configuration
  • add the line
0=inactive

to /etc/X11/gdm/custom.conf

In both cases, restart gdm to activate.

Known to Work

  • Basic session creation/login
  • policies
  • audio
  • utconfig/SRDS
  • FOGs/utreplica
  • utadm (assuming OpenSolaris DHCP & TFTP packages are installed: SUNWdhcs SUNWdhcsb SUNWdhcm SUNWtftp & work-arounds are in place)


Known NOT to Work

  • Kiosk policy
  • NSCM (can be made to work by adding Nevada packages, see 'Motif' below)
  • RHA (can be made to work by adding Nevada packages, see 'Motif' below)
  • utmhscreen (can be made to work by adding Nevada packages, see 'Motif' below)

Suspected NOT to Work

  • utselect (no dtksh)
  • utwall (no dterror.ds)


Known Major Issues

  • loginGUI depends on SUNWmfrun (libXm.so.4) (affects NSCM, SC, & RHA)
  • loginGUI depends on SUNWdtbas (libDtWidget.so.2) (affects NSCM, SC, and RHA)
  • loginGUI depends on SUNWtltk (libtt.so.2) (affects NSCM and SC, and RHA)
  • loginGUI depends on SUNWxwplt (libXt.so.4) (this was broken in OS2008.05, fixed in nv_93/2008.11 and later: BUGID:6683217)
  • After adding the above Nevada packages - very long startup delay in loginGUI (XListFonts) but NSCM and RHA eventually work
  • Adding the above Nevada packages may break OpenSolaris legacy symlinks (e.g. /usr/openwin) and cause unknown collateral damage with legacy applications
  • On OpenSolaris 2008.11 /usr/openwin is now a symlink to /usr/X11 & these Nevada packages will break the symlink, turning it into a directory again. At that point things that have been moved from /usr/openwin to /usr/X11 in OpenSolaris won't be found via the legacy path.
  • Due to the loginGUI startup delay and issues related to adding the above packages to OpenSolaris, it is recommended at this time that NSCM not be configured, and that the -D option be used with utpolicy to avoid RHA. Although NSCM and RHA can be used and do function properly, the startup delays may be unacceptably lengthy.
  • RHA = Remote Hotdesk Authentication. A new security feature in SRSS 4.1. It means that loginGUI is used to authenticate, outside of the session, when hotdesking to an existing session (instead of the in-session screen locker). Kind of like NSCM has always been, but now for cards as well. The new -D utpolicy switch disables it - provides legacy behavior.

Motif

If you have access to the Nevada SUNWmfrun, SUNWtltk, and SUNWdtbas packages, it is possible (with some work) to install these on OpenSolaris in a non-damaging way, and get NSCM, RHA, and utmhscreen to work properly.

If you are using the OpenSolaris /dev (development) repo or 2009.06 pre-release builds, these packages are in the /devel repo as of build 110, and can be installed with pkg install.

If you are using the 2008.11 /release (stable) repo, or an older build, and thus need to use the Nevada packages, do the following after installing SRSS and before rebooting:

rm /usr/openwin
mkdir /usr/openwin
mount -Flofs /usr/X11 /usr/openwin
rm /usr/X11/share/include
mkdir /usr/X11/share/include
mount -Flofs /usr/X11/include /usr/X11/share/include
pkgadd SUNWmfrun SUNWtltk SUNWdtbas
(ignore the warnings about missing dependencies and setuid executables)
umount /usr/openwin
rmdir /usr/openwin
ln -s /usr/X11 /usr/openwin
umount /usr/X11/share/include
rmdir /usr/X11/share/include
ln -s /usr/X11/include /usr/X11/share/include

That takes care of the packages. Now things will work, but experience a very long startup delay due to missing fonts. To fix this, replace /opt/SUNWut/lib/app-defaults/loginGUI.res with the following contents:

!#
!# This is a hacked-up loginGUI.res designed to substitute existing fonts for OpenSolaris
!#
!# loginGUI Resource File
!#

*foreground:            #000000
*background:            #a8a8a8
*highlightColor:        #ef506f
*title.font:            -adobe-*-medium-r-normal-*-*-*-*-*-p-107-*-*:
*title.fontList:        -adobe-*-medium-r-normal-*-*-*-*-*-p-107-*-*:
*welcome.font:          -adobe-*-medium-r-normal-*-*-*-*-*-p-137-*-*:
*welcome.fontList:      -adobe-*-medium-r-normal-*-*-*-*-*-p-137-*-*:
*prompt.font:           -adobe-*-medium-r-normal-*-*-*-*-*-p-107-*-*:
*prompt.fontList:       -adobe-*-medium-r-normal-*-*-*-*-*-p-107-*-*:
*text.font:             -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*text.fontList:         -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*text.foreground:       #ffffff
*text.background:       #808080
*text.Translations:     #override\n\
        Ctrl<Key>u:delete-adobe-*-to-start-of-line()\n\
        Ctrl<Key>k:delete-adobe-*-to-end-of-line()\n\
        Ctrl<Key>a:beginning-adobe-*-of-line()\n\
        Ctrl<Key>e:end-adobe-*-of-line()\n\
        Ctrl<Key>b:backward-adobe-*-character()\n\
        Ctrl<Key>f:forward-adobe-*-character()\n\
        Shift<Key>Tab: prev-adobe-*-tab-group() \n\
        Ctrl<Key>Tab: next-adobe-*-tab-group()
*enableBtn1Transfer:    button2_transfer
*enableButtonTab:       True
*enableDefaultButton:   True
*help_text.font:        -adobe-*-medium-r-normal-*-*-*-*-*-p-107-*-*:
*help_text.fontList:    -adobe-*-medium-r-normal-*-*-*-*-*-p-107-*-*:
*XmPushButton.font:     -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*XmPushButton.fontList: -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*QuickLogin.font:       -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*QuickLogin.fontList:   -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*Exit.font:             -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*Exit.fontList:         -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*On.font:               -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*On.fontList:           -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*Off.font:              -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*Off.fontList:          -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*options.font:          -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:
*options.fontList:      -adobe-*-medium-r-normal-*-*-*-*-*-p-103-*-*:

That's it! Now after rebooting and configuring your system as detailed above you have access to the NSCM and RHA policies.

OpenSolaris 2009.06

A couple of aspects are now simpler with 2009.06.

  • Motif libraries are now in the OpenSolaris repository, so you should now run
pkg install SUNWmfrun SUNWtltk SUNWdtbas
  • There's a bug however in one of the I18N libraries which makes loginGUI fail except in the C locale (CR 6822673, fixed in snv_115). To work around this, you can either leave NSCM disabled and disable RHA (don't add -M to utpolicy, do add -D), or you can edit /etc/opt/SUNWut/loginGUI.start as follows:
197c197
<     $LOGIN_GUI_PROG -l "$LOGIN_TYPE" "$@" &
---
>     LANG=C $LOGIN_GUI_PROG -l "$LOGIN_TYPE" "$@" &
  • After performing the above steps, NSCM, RHA, utselect, utwall, and utmhscreen should all work
  • There's a bug (6807063) that requires you to run utrestart -c after bootup to make SRSS become operational. If this is a problem, you can fix it by editing /etc/init.d/utacleanup as follows:
211,218c211,214
< OS=`uname -s`
< if [ "$OS" = "SunOS" ]; then
<       if isGDMOK2Use && [ "`/bin/svcs -o STATE -H gdm 2>/dev/null`" = "online" ]
<       then
<               XMGR=gdm
<       else
<               XMGR=dtlogin
<       fi
---
> if [ "`uname -s` `uname -r`" = "SunOS 5.10" ] \
>    || [ -x /usr/dt/bin/dtlogin -a ! -f ${ETCOPTDIR}/ut_enable_gdm ]
> then
>       XMGR=dtlogin
  • There's a Solaris bug (6795892) that, although it's been marked as fixed, still impacts SRSS 4.1. It has to do with a rewrite of the networking stack (a project called "Volo"). If you receive 26D then apply the following workaround (copied from the CR Workaround):
In /etc/sock2path change the following lines:

    2   2   0   tcp
    2   2   6   tcp

    26  2   0   tcp
    26  2   6   tcp

    2   1   0   udp
    2   1   17  udp

    26  1   0   udp
    26  1   17  udp

to:

    2   2   0   /dev/tcp
    2   2   6   /dev/tcp

    26  2   0   /dev/tcp6
    26  2   6   /dev/tcp6

    2   1   0   /dev/udp
    2   1   17  /dev/udp

    26   1  0   /dev/udp6
    26   1  17  /dev/udp6

i.e replace 'udp' with '/dev/udp' and 'tcp' with '/dev/tcp' (and add a
6 to the end of the family 26 lines), then reboot.
This will revert back to using old streams sockets for UDP and TCP.

Opensolaris-Dev 129 +

With the introduction of OpenSolaris build 129 onwards, some changes have been made to GDM.

You may see the following error in /var/log/gdm/:XX.log:

Fatal server error:
could not open default font 'fixed'

To solve this, you need to apply the following work-arounds:

Edit /etc/gdm/custom.conf and change the Greeter line to:

Greeter=/usr/lib/gdm-simple-greeter

Create a file /etc/opt/SUNWut/X11/fontpath with the following contents:

/usr/X11/lib/X11/fonts/100dpi
/usr/X11/lib/X11/fonts/100dpi-ISO8859-1
/usr/X11/lib/X11/fonts/100dpi-ISO8859-15
/usr/X11/lib/X11/fonts/75dpi
/usr/X11/lib/X11/fonts/75dpi-ISO8859-1
/usr/X11/lib/X11/fonts/75dpi-ISO8859-15
/usr/X11/lib/X11/fonts/encodings
/usr/X11/lib/X11/fonts/fonts
/usr/X11/lib/X11/fonts/isas
/usr/X11/lib/X11/fonts/misc
/usr/X11/lib/X11/fonts/misc-ISO8859-1
/usr/X11/lib/X11/fonts/misc-ISO8859-15
/usr/X11/lib/X11/fonts/Type1

Opensolaris-Dev 134 + (or maybe 130+)

In some of the latest Opensolaris builds, the above fontpaths have changed to:

/usr/share/fonts/X11/100dpi
/usr/share/fonts/X11/100dpi-ISO8859-1
/usr/share/fonts/X11/100dpi-ISO8859-15
/usr/share/fonts/X11/75dpi
/usr/share/fonts/X11/75dpi-ISO8859-1
/usr/share/fonts/X11/75dpi-ISO8859-15
/usr/share/fonts/X11/encodings
/usr/share/fonts/X11/isas
/usr/share/fonts/X11/misc
/usr/share/fonts/X11/misc-ISO8859-1
/usr/share/fonts/X11/misc-ISO8859-15
/usr/share/fonts/X11/Type1

Furthermore, you need to fix some library path issues. Quick and dirty:

/usr/lib# ln -s xorg/libXfont.so
/usr/lib# ln -s xorg/libXfont.so.1 
/usr/lib# cd amd64/
/usr/lib/amd64# ln -s xorg/libXfont.so.1 ^C
/usr/lib/amd64# ln -s ../xorg/amd64/libXfont.so
/usr/lib/amd64# ln -s ../xorg/amd64/libXfont.so.1 

/usr/lib# ln -s xorg/libfontenc.so
/usr/lib# ln -s xorg/libfontenc.so.1 
/usr/lib# cd amd64/
/usr/lib/amd64# ln -s ../xorg/amd64/libfontenc.so.1 
/usr/lib/amd64# ln -s ../xorg/amd64/libfontenc.so

And even *further* more you'll need to hack /opt/SUNWut/lib/xmgr/gdm/remove-dpy since gdmdynamic arguments appear to have changed:


Replace:

gdmglue="; gdmdynamic -b -d "'$UT_DPY'

With:

gdmglue="; gdmdynamic -d "'$UT_DPY'



Of course, you could also find the appropriate script that start Xnewt and edit LD_LIBRARY_PATH accordingly. I'll leave that to someone closer to SunRay development than me.

Check out Chris Gerhard's Blog for some additional details.

Personal tools