10.7. 登录和访问桌面

10.7.1. 用户无法访问其桌面
10.7.2. 用户可以登录,但是其桌面未响应
10.7.3. 错误 -“当前没有可用的桌面或没有分配给您的桌面“
10.7.4. 可以自定义桌面登录屏幕吗?
10.7.5. Sun Ray Client 处于循环中并且无法连接到虚拟机
10.7.6. 因为网络未启用,所以用户无法登录 Ubuntu 8.04 桌面
10.7.7. 我如何控制当用户从其 Kiosk 会话断开连接时,用户重定向至哪个 Sun Ray 服务器?

10.7.1. 用户无法访问其桌面

  1. 在终端上,触发以下命令:

    /opt/SUNWvda/lib/vda-client -u <user>
  2. 如果一切正常运行,那么 vda-client 将触发启动对应桌面并应该返回 IP(如 10.16.46.208)或 DNS 名称(如 xpdesktop01),用于访问用户桌面。如果 RDP 端口不同于默认值,则其将附加至 IP/DNS 名称(如 10.16.46.208:49259 或 xpdesktop01:49259)

  3. 使用该信息,现在应该可以建立至桌面的 RDP 连接。

  4. 如果 vda-client 未返回 IP 或 DNS 名称,Oracle VDI 可能无法在用户目录中解析用户 ID。

    要检查该问题,请更改目录服务的日志级别,如第 10.2.1 节 “我在用户目录方面遇到一些问题。我可以调整记录级别,以了解更多信息吗?”中所述。

  5. 在 Cacao 日志文件中,查找该类型的条目:

    FINEST: userId=<user ID> -> DN=<dn>

    有关详细信息,请参见第 9.3.2 节 “如何查看 Oracle VDI 日志文件”

  6. 如果 <dn> 为 null,则表示在用户目录中未找到与用户 ID <测试用户> 匹配的用户。必须自定义属性 ldap.userid.attributes 的列表,以与目录模式匹配,如第 C.1 节 “如何编辑 LDAP 过滤器和属性”中所述。

  7. 如果 <dn> 不为 null,表示在用户目录中找到了与用户 ID <测试用户> 匹配的用户。

10.7.2. 用户可以登录,但是其桌面未响应

用户可能会发现他们可以登录 Oracle VDI,但是无法使用桌面,因为虚拟机未响应。

发生该情况时,解决方法是重新启动桌面。管理员(例如,通过 vda desktop-restart 命令)或者用户均可以执行该操作。

用户要重新启动桌面,必须首先通过将鼠标上移至屏幕的顶部并单击远程桌面下拉菜单中的“X“断开桌面连接。当显示桌面选定器屏幕时,用户选择无响应的桌面,然后单击“重置“按钮以重新启动桌面。重新启动桌面与重新引导传统 PC 相同,并且用户也会看到关于可能丢失未保存数据的警告。重新引导桌面后,可以在桌面选定器屏幕中连接到桌面。以下类型的提供者提供的桌面无法通过该方式重新启动:

  • 通用桌面提供者

  • Microsoft 远程桌面提供者

  • Sun Ray Kiosk 会话提供者

10.7.3. 错误 -“当前没有可用的桌面或没有分配给您的桌面“

Oracle VDI 通常会由于以下原因而返回上述消息:

  • 没有直接分配给用户的桌面。

  • 为用户分配了池,但是该池中的桌面不可用或无法免费使用。

  • 已选择某桌面,但是其处于不可使用状态,通常桌面会因各种原因而无法启动。

如果出现该消息,请查看 Cacao 日志文件(请参见第 9.3.2 节 “如何查看 Oracle VDI 日志文件”)。

要确定根源,请完成以下步骤:

  1. 检查系统是否已正确识别您的桌面/池分配。

    Oracle VDI Kiosk 登录利用内部 CLI (vda-client) 检索该信息。您可以从终端手动触发此 CLI(无需超级用户权限):

    $ /opt/SUNWvda/lib/vda-client -a query -u <user>
    Password: xxxxx
    Windows 7,Windows7000003,8,User

    CLI 将要求提供用户密码。因此,您需要输入与 Kiosk 会话登录屏幕上相同的凭证信息(如果系统上的验证已禁用,vda-client CLI 仍将提示输入密码,您可以将此留空 - 在这种情况下,将不会验证您的输入)。

    如果一切运行正常,之后您将获得桌面/池分配的 CSV 列表。格式如下

    <池名称>,<桌面名称>,<桌面 ID>,<起始点>

    如果此时您看到错误消息,或者系统报告不存在分配,请查看 Cacao 日志。查找处理 vda-client 请求的 ClientRequestWorker 条目:

    ...
    Jun 26, 2009 12:10:47 PM com.sun.vda.service.client.ClientRequestWorker run
    FINEST: Received request from vda-client (127.0.0.1): query(user=username)
    ...
    Jun 26, 2009 12:10:49 PM com.sun.vda.service.client.ClientRequestWorker run
    FINEST: Sent response to vda-client: Windows 7,Windows70000003,8,User
    ...

    可能存在导致问题的一些问题:

    • 验证失败

    • 无法在 LDAP 中找到用户名,因此无法确定用户 DN

    • 对于已确定的用户 DN,未找到桌面分配。

    已接收请求与已发送响应之间的日志条目应该会为您提供一些信息。

  2. 如果步骤 2 正常执行,为您的用户请求一个桌面。

    这也可以通过 vda-client CLI 完成:

    $  /opt/SUNWvda/lib/vda-client -a start -u <user> \
    [-P <poolname> [-D <desktopId>]]
    Password: xxxxx
    servername:49281

    仅当分配多个桌面并且您希望启动特定桌面时,才需要 poolname 和 desktopId 参数。如果仅分配一个桌面或池(或者您只想启动默认桌面),则无需提供这两个参数。如果一切正常,CLI 将返回用户的桌面/虚拟机的名称(或 IP),后跟冒号和 RDP 端口数目(可选)。

    如果未正常执行(CLI 将报告错误),则您应该再次查看日志:

    ...
    Jun 26, 2009 12:25:14 PM com.sun.vda.service.client.ClientRequestWorker run
    FINEST: Received request from vda-client (127.0.0.1): start(user=username)
    ....
    Jun 26, 2009 12:25:18 PM com.sun.vda.service.client.ClientRequestWorker run
    FINEST: Sent response to vda-client: servername:49281
    ....

已接收请求与已发送响应之间的日志条目应该有助于您了解任何问题。

一个典型的问题是未找到适合启动桌面的主机。在这种情况下,您应该首先检查用于运行桌面/虚拟机的可用内存。

10.7.4. 可以自定义桌面登录屏幕吗?

支持修改在 Sun Ray Client 上显示的 Oracle VDI 登录屏幕,但是有一些限制。

可以添加公司徽标(左上角)并用自定义图像替换桌面登录/选择对话框(屏幕中间)的背景。但是,无法更改文本位置以及按钮和输入元素的颜色。由于此限制,我们还要求使用大小固定的背景图像,否则对话框输入元素在屏幕上将错位。

将自定义图像放置在 /etc/opt/SUNWkio/sessions/vda 下面的 Kiosk 会话目录中,确保文件权限(每个人均可读)正确。文件名必须分别为 dialog_background.pngcompany_logo.png。一开始,您可能想要下载下面的示例背景图像,然后根据需要进行修改。

退出现有 Sun Ray Kiosk 会话(单击退出按钮)或执行 Sun Ray 服务的冷重启,以强制创建新 Kiosk 会话。现在图像应该显示在 Oracle VDI 的登录/桌面选择屏幕中。

图 10.2. 公司徽标在自定义桌面登录屏幕上的位置

显示公司徽标在自定义桌面登录屏幕上位置的屏幕抓图。

其他更加复杂的方法包括用修改的版本替换默认的 Oracle VDI kiosk 会话。Oracle VDI Web 服务 API 提供与 Oracle VDI 服务通信所需的所有功能,用于检索已分配桌面的列表和启动桌面。您可以使用此 Web 服务 API 创建属于您自己的 GUI(登录屏幕和桌面选定器),但是这需要更多的编程。

10.7.5. Sun Ray Client 处于循环中并且无法连接到虚拟机

  1. 检验是否有可供连接的虚拟机。

  2. 验证在您的客操作系统上是否已正确配置远程访问。

  3. 验证 Oracle VDI 主机是否可以与 vCenter 或 Oracle VM VirtualBox 主机通信。

    vCenter 上的防火墙可能会阻止通信。

    用户名或密码可能不正确。

  4. 检验 Windows 客 OS 上是否安装了 VMware 工具。

  5. 如果使用 Microsoft RDP 连接到 Windows 7 桌面,请确保用户在 30 秒内登录。

    默认情况下,如果 30 秒内无人登录,Windows 7 将断开 RDP 连接。

10.7.6. 因为网络未启用,所以用户无法登录 Ubuntu 8.04 桌面

Ubuntu 具有旧的“Debian 样式“网络行为,因此每个 MAC 地址更改(每个克隆)将网络接口名称增加一。结果是,获取正在使用的网络配置需要管理员执行一些鼠标单击操作。唯一的解决方法是,在准备模板时,从 /lib/udev/rules.d/75-persistent-net-generator.rules 中的“持久性网络“设备中排除 Oracle VM VirtualBox MAC 地址范围 (08:00:27:*),然后清除 /etc/udev/rules.d/70-persistent-net.rules

有关持久性网络更改的详细信息,请参阅 http://ubuntuforums.org/archive/index.php/t-1045715.html

10.7.7. 我如何控制当用户从其 Kiosk 会话断开连接时,用户重定向至哪个 Sun Ray 服务器?

默认情况下,当用户从其会话断开连接时,他们将重定向至第一个连接的 Sun Ray 服务器。您可以使用命令行配置重定向行为。

确保重定向至第一个连接的 Sun Ray 服务器:

# /opt/SUNWvda/sbin/vda settings-setprops -p client.autoredirect.firstserver=enabled

确保重定向至最近连接的 Sun Ray 服务器:

# /opt/SUNWvda/sbin/vda settings-setprops -p client.autoredirect.firstserver=disabled