在 CentOS 上安装和配置 Sun Ray Server Software

sunray2

几年前 Sun Microsystems 给我们捐了一个实验室,大概100多台 SunRay 瘦客户端/显示器 + 几台 SUN 服务器、鼠标、键盘,全套 Sun 的设备,上面一直跑的是 Solaris. SunRay 瘦客户端无 CPU 无 RAM,开机自动找 SunRay Server 然后进入服务器的登录界面,标准的 ”网络就是计算机“。VPSee 最近计划把 Solaris 改成 CentOS,正在做测试。

首先确认安装了 GNOME:

# yum groupinstall "X Window System" "GNOME Desktop Environment"

必要软件

解压 srss_4.2_linux.zip 后,必要的 jre,tomcat 和 pdksh 软件包都在 srss_4.2/Supplemental 下,所以不必单独去下载:

srss_4.2/Supplemental/Java_Runtime_Environment/Linux/jre-6u13-linux-i586.bin
srss_4.2/Supplemental/Apache_Tomcat/apache-tomcat-5.5.20.tar.gz
srss_4.2/Supplemental/RHEL/i386/pdksh-5.2.14-30.3.i386.rpm
srss_4.2/GDM_2.16.7/Linux/Packages/gdm-2.16.7-2.1_01.sunray.i386.rpm

安装一些必要包

# yum install glib dhcp openldap-clients openldap tftp-server libXp \
openmotif22 openssl compat-libstdc++-33 libusb-devel compat-openldap
# yum groupinstall "Development Tools"
# yum install kernel-devel

除了上面必要包以外,SUN Ray 需要用到 pdksh(替代 ksh)以及特别版本的 gdm:

# rpm -ivh --force --nodeps pdksh-5.2.14-30.3.i386.rpm
# rpm -ivh --force --nodeps gdm-2.16.7-2.1_01.sunray.i386.rpm

安装 Java

Sun Ray Software 需要 SUN 版本的 JDK,所以如果是其他版本的 JDK,比如:OpenJDK,IBM JDK 等什么的需要先删除后再安装 SUN JDK,其实 Java 运行环境安装 JRE 就可以了,不一定需要 JDK:

# chmod +x jre-6u13-linux-i586.bin
# ./jre-6u13-linux-i586.bin
# mkdir /usr/java
# mv jre1.6.0_13 /usr/java/
# ln -sf /usr/java/jre1.6.0_13/bin/java /usr/bin/java

安装 Tomcat

不要用 yum install tomcat5 安装 Tomcat,会安装一堆不必要的包。用 srss_4.2_linux.zip 里面那个,省得再去单独下载:

# tar xvzf apache-tomcat-5.5.20.tar.gz
# mv apache-tomcat-5.5.20 /opt; cd /opt
# ln -sf apache-tomcat-5.5.20 apache-tomcat

在 /etc/init.d/ 增加新建一个 Tomcat 启动配置文件:

# vi /etc/init.d/tomcat

#!/bin/bash
#
# Tomcat Server
#
# chkconfig: 345 96 30
# description: Java servlet container

JAVA_HOME=/usr/java/jre1.6.0_13/
PATH=${JAVA_HOME}/bin:${PATH}
TOMCAT_START=/opt/apache-tomcat/bin/startup.sh
TOMCAT_STOP=/opt/apache-tomcat/bin/shutdown.sh
export JAVA_HOME PATH

start() {
    if [ -x ${TOMCAT_START} ]; then
        echo "Starting tomcat server..."
        ${TOMCAT_START} &
    else
        echo "Cannot start tomcat server"
    fi
}

stop() {
    if [ -x ${TOMCAT_STOP} ]; then
        echo "Stopping tomcat server..."
        ${TOMCAT_STOP} &
    else
        echo "Cannot stop tomcat server"
    fi
}

restart() {
    stop
    sleep 10
    start
}

status() {
    echo "No status available for tomcat server"
}

case "$1" in
    'start')
        start
        ;;
    'stop')
        stop
        ;;
    'restart')
        restart
        ;;
    'status')
        status
        ;;
*)
echo "Please supply an argument [start|stop|restart]"
esac

启动 Tomcat:

# chmod +x /etc/init.d/tomcat
# /sbin/chkconfig tomcat on
# /sbin/service tomcat start

安装 Sun Ray Software

# unzip srss_4.2_linux.zip
# cd srss_4.2
# ./utinstall
# /sbin/shutdown -r now

也可以不用 Sun Ray 硬件设备,下载一个 Sun Desktop Access Client 1.0 可以在 Windows 上连接 Sun Ray 服务器。

配置 Sun Ray Server

运行 utconfig 报错:

# cd /opt/SUNWut/sbin
# ./utconfig
...
Enter Sun Ray admin password: 
Re-enter Sun Ray admin password: 
/opt/SUNWut/sbin/utpw: error while loading shared libraries: libldap.so.199: cannot open shared object file: No such file or directory

解决办法:

# ln -sf /usr/lib/libexpat.so /usr/lib/libexpat.so.1
# ln -sf /usr/lib/libldap-2.3.so.0.2.31 /usr/lib/libldap.so.199
# ln -sf /usr/lib/libgdbm.so.2.0.0 /usr/lib/libgdbm.so.3
# ln -sf /usr/lib/liblber-2.3.so.0.2.31 /usr/lib/liblber.so.199

配置 GDM

修改 GDM 配置文件后,启动 GDM:

# vi /etc/X11/gdm/custom.conf

[daemon]
# These are for the SunRay Services
DefaultPath=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/opt/SUNWut/bin
PostLoginScriptDir=/etc/X11/gdm/SunRayPostLogin/
PreSessionScriptDir=/etc/X11/gdm/SunRayPreSession/
PostSessionScriptDir=/etc/X11/gdm/SunRayPostSession/
DisplayInitDir=/etc/X11/gdm/SunRayInit
#Allow the SRSS to Dynamicly Allcoate XServers
VTAllocation=false
DynamicXServers=true

# Do not allow users to Reboot/Halt/Suspend System
RebootCommand=
HaltCommand=
SuspendCommand=
HibernateCommand=
Greeter=/usr/libexec/gdmgreeter

[security]

[xdmcp]

[gui]

[greeter]

[chooser]

[debug]

[servers]

# /usr/sbin/gdm-binary

配置 DHCP 服务器

安装完 Sun Ray Server 软件后,会增加1个文件 SunRay-interface-eth1 文件,重启 dhcpd 服务的时候会报错,说 SunRay-interface-eth1 这个配置文件格式不对,用以下格式替换:

# vi /etc/opt/SUNWut/net/dhcp/SunRay-interface-eth1

#Sun Ray
option space SunRay;
option SunRay.AuthSrvr  code 21 = ip-address;
option SunRay.AuthSrvr  192.168.128.1;
option SunRay.FWSrvr    code 31 = ip-address;
option SunRay.FWSrvr    192.168.128.1;
option SunRay.NewTVer   code 23 = text;
option SunRay.NewTVer   "4.1_50,REV=2008.09.25.12.37";
option SunRay.Intf      code 33 = text;
option SunRay.Intf      "eth1";
option SunRay.LogHost   code 24 = ip-address;
option SunRay.LogHost   192.168.128.1;
option SunRay.LogKern   code 25 = integer 8;
option SunRay.LogKern   6;
option SunRay.LogNet    code 26 = integer 8;
option SunRay.LogNet    6;
option SunRay.LogUSB    code 27 = integer 8;
option SunRay.LogUSB    6;
option SunRay.LogVid    code 28 = integer 8;
option SunRay.LogVid    6;
option SunRay.LogAppl   code 29 = integer 8;
option SunRay.LogAppl   6;

group
{
        vendor-option-space SunRay;
        subnet 192.168.128.0 netmask 255.255.255.0 {
                default-lease-time 720000;
                max-lease-time 1440000;
                authoritative;
                option routers 192.168.128.1;
                range 192.168.128.100 192.168.128.199;
        }
}

# /etc/init.d/dhcpd restart

关闭防火墙和 SELinux

# /usr/bin/system-config-securitylevel

运行

重启系统后,Sun Ray 就应该自动运行了,需要一些配置才能让 Sun Ray 瘦客户端连上 CentOS 上的 Sun Ray 服务器。Sun Ray 支持两种常见的网络配置方式:dedicated interconnect 和 directly-connected shared subnet,如图所示:

sun ray network topolog

dedicated interconnect 是建立一个私有内部网络,Sun Ray Server 的一个网络接口连着外部局域网,另一个网络接口连着由众多 Sun Ray 瘦客户端组成的私有网络。这时需要在服务器上配置 DHCP Server 来给每个瘦客户端分配 IP 地址。(假设 eth0 连着外部网,eth1 连着内部网)

# /opt/SUNWut/sbin/utadm -a eth1
# /opt/SUNWut/sbin/utrestart

directly-connected shared subnet 是直接连在外部网上,Sun Ray Server 和 Sun Ray 瘦客户端都在同一个子网络上,由第三方 DHCP 服务器提供 IP 地址。

# /opt/SUNWut/sbin/utadm -L on
# /opt/SUNWut/sbin/utrestart

这种方式通常会使用第三方的 DHCP 服务,Sun Ray Server 和 Client 都从第三方得到 IP 地址,这里就会有一个问题,第三方 DHCP Server 没有专门对 Sun Ray 设置必要的参数,导致 Sun Ray 瘦客户端得不到足够多的信息连接上 Sun Ray Server,这时需要把 Sun Ray 瘦客户端用 dedicated interconnect 的方式连上 Sun Ray Server,从服务器那里下载并更新 firmware 后才能正确在 directly-connected shared subnet 的网络上运行,一旦更新 firmware 后就可以脱离 dedicated interconnect 在 directly-connected shared subnet 上运行。

如果不使用第三方 DHCP 服务,由 Sun Ray Server 自己提供 DHCP 服务的话,可以用以下命令把 172.16.38.0 网段加入到 Sun Ray Server 管理:

# /opt/SUNWut/sbin/utadm -A 172.16.38.0
# /opt/SUNWut/sbin/utrestart

Trouble Shooting

经过几天的战斗终于让 Sun Ray Server 运行在了 Linux 上,期间遇到很多问题,很多都和没有正确 link 对应的库有关,做几个连接就好了。主要问题还是在 gdm,如果 Sun Ray 瘦客户端的屏幕上出现 26D/27D 的错误多半和 gdm 有关,要确定装了 GNOME 桌面系统和正确启动了 gdm,记下几个命令以便以后排错:

# /opt/SUNWut/sbin/utrestart
# /opt/SUNWut/sbin/utdesktop -l
# /opt/SUNWut/sbin/utdesktop -lc
# /opt/SUNWut/sbin/utsession -p
# /opt/SUNWut/lib/Xnewt
# /usr/sbin/gdm-binary
# /usr/libexec/gdmgreeter 
# /usr/sbin/dhcpd

如果有任何错误,检查一下有没有需要安装的包没有安装,我的这个系统缺少 glitz:

# rpm -ivh glitz-0.5.6-5.i386.rpm
# rpm -ivh glitz-devel-0.5.6-5.i386.rpm

评论 (11 Comments)

  1. 请问能用wyse的thin客户端替代sun ray的客户端么?

  2. 不能,wyse 和 sunray 可算同类产品(不完全是),他们的想法都是一样,但是技术都不同啊。

  3. 我们部门有几个wyse的客户端和一些闲散的服务器,想做一下VDI的实验。
    现在有不产生授权费用的VDI解决方案么?

  4. 现在主要的的几个 VDI 解决方案(Citrix, VMware, Sun)都不是免费的。

  5. 很明显sun的server可以用其他的server代替
    那么这里的sun ray可以用lenove的pc来模拟代替么?

  6. 嗯,这篇文章里已经提到了:

    也可以不用 Sun Ray 硬件设备,下载一个 Sun Desktop Access Client 1.0 可以在任何 PC+Windows 上连接 Sun Ray 服务器。

  7. 这块我看到,但是这个方式有点为了模拟而模拟,或者说有点浪费软件的嫌疑(两套windows授权)
    可不可以像我上次请教的用PC来模拟,但是采用先沟通再进系统,而不是采用SDAC1.0先进系统再沟通呢?

  8. @aufemercury
    Sun Ray Server Software 不是开源的系统,所以无法知晓客户端和服务器是如何通信和协议的,所以也没办法自己实现类似的 PC 模拟系统。

  9. 博主请教一下,sunray现在已经能跑在linux上,包括oracle的 VDI,但好像VDI一定要跑在sun的存储上?另外,sunray,一定需要结合oracle的 VDI运行么?

  10. @jplele
    不清楚现在 sunray 发展成什么样了,当时必须结合 sun/oracle 的 VDI 才能用,是商业软件。

  11. @jplele Sun Ray有RDP Connector和VMWare View Connector,所以也可以用微软或者VMWare的VDI

发表评论