桌面虚拟化是当今虚拟化技术的热点领域,桌面云计算也成为了目前云计算领域炙手可热的话题。桌面云计算通过把计算能力转移到服务器端,同时以虚拟桌面的形式替代个人电脑,大大降低了企业成本。在桌面云的世界里,用户使用的客户端也不同于传统意义上的客户端。瘦客户端(Thin Client),是一种普遍采用的客户端模式,它不仅可以很好的适应桌面云的计算环境,更为重要的是,它可以进一步节约企业成本,提升桌面云计算解决方案的价值和吸引力。
本文将介绍目前桌面云环境下流行的一个开源客户端软件—— Thinstation。Thinstation 是一个轻量级但功能十分强大的开源瘦客户端操作系统,它支持几乎所有主流的连接协议,例如 Citrix ICA,RDP,VMWare View Open client,telnet,SSH 等等。Thinstation 通过内嵌的协议客户端软件支持当今几乎所有的主流桌面云解决方案,是一个具有很强通用性的瘦客户端解决方案。
Thinstation 的另一个特点是用户通过它所提供的完全免费的在线镜像创建环境——使用浏览器创建自定制的 Thinstation 镜像文件。这个特点使得用户摆脱了复杂的镜像创建环境配置,极大的简化了创建过程,增强了其自身的普及性。本文将利用这一特性,通过一个在线镜像创建的实例,一步步的引导读者创建基于自己硬件配置的自定制 Thinstation 镜像。
在桌面云计算中,用户所使用的客户端与传统的 PC 客户端相比,发生了很大的变化。在桌面云中,用户桌面运行在服务器端,计算能力和数据存储主要是由服务器端来提供。客户端所提供的功能主要是集中于对用户桌面的展示和对用户动作的响应。因此,与传统的 PC 客户端相比,桌面云计算中的客户端并不需要很强的本地计算能力和数据存储能力。伴随着这种应用模式的变化,在当前的桌面云解决方案中,一种普遍采用的客户端模式是瘦客户端(Thin Client)。
桌面云计算环境中的瘦客户端(Thin Client)通常指的是一种依赖于远端服务器计算能力和存储能力而运行在用户侧的客户端软件或者硬件设备。它通过显示设备、键盘、鼠标以及基本的本地计算能力来实现本地桌面和运行于远端服务器中的用户桌面之间的交互。通过瘦客户端,用户桌面中键盘和鼠标输入被发送到远端桌面计算环境。当远端服务器完成相应的计算后,响应的桌面屏幕输出被返还给客户端,从而用户可以得到相应的桌面界面更新。通过瘦客户端,用户可以获得与传统 PC 同样的桌面系统体验。
瘦客户端通常不处理和存储任何用户数据,它只提供用户桌面的界面展示。但是,瘦客户端仍然需要操作系统的支持来运行。然而与传统的操作系统相比,瘦客户端一般只需要一个轻量级的操作系统运行环境。对于瘦客户端的底层硬件,它可以是一个被转换而重新利用的老式 PC、一个崭新的专用的特定瘦客户端设备(比如 Wyse),或者是一个新的装有瘦客户端操作系统的低配置廉价 PC。因此,与传统的个人 PC 相比,基于桌面云的瘦客户端解决方案可以进一步发挥云计算所带来的成本节约优势。
Thinstation 是一个基本的,轻量级但非常强大的免费开源瘦客户端操作系统。对于运行环境,它基于 Linux 操作系统,运行在 32 位 x86 PC 硬件平台上。它对底层硬件系统的要求非常低 —— 只需要大于等于 100 MHz 的奔腾处理器和至少 32MB 的 RAM 支持。因此,企业可以通过重用老式、低配的台式电脑来使用它,非常节约企业成本。对于用户来说,它非常透明,用户不会觉察到底层基于 Linux 的操作系统的存在。用户可以在启动时根据自定义的系统配置直接连接到远程虚拟桌面,或者在启动后通过一个基于 Microsoft Windows 风格的本地用户界面环境进行虚拟桌面连接。
Thinstation 最大的特点是它支持当今大多数流行的连接协议,并且内嵌了当今主流桌面云解决方案中所支持的客户端应用程序,从而极大增强了其普及性,具有很强的通用性。Thinstation 是一个独立的系统,通过它进行虚拟桌面连接时,并不需要对远端的虚拟桌面服务器进行任何配置修改,只要保证它们之间的连接可达性既可。Thinstation 当前所支持的连接协议有:
- Citrix ICA
- NoMachine NX
- 2X ThinClient
- Microsoft Windows terminal services (RDP, via RDesktop)
- VMWare View Open client
- Cendio ThinLinc
- Tarantella
- X
- telnet
- tn5250
- VMS terminal
- SSH
值得注意的是,对于占桌面云领域市场份额前两位的两大云计算供应商 Citrix 和 VMWare,Thinstation 分别提供了对于其桌面云产品 Citrix XenDesktop 和 VMWare View 的客户端应用支持 —— Citrix ICA 和 VMWare View Open client。
在 Thinstation 系统中,有两种系统配置文件。第一种配置文件是在系统编译创建时所用到的系统创建配置文件“build.conf”。这个配置文件需要在系统编译创建时进行由用户进行创建和编辑的。它决定了创建出来的 Thinstation 启动文件中所包含的硬件驱动模块信息、应用程序信息和系统特性信息。用户可以根据自己的实际硬件环境和系统应用需求来自定义这个配置文件。一个系统创建配置文件的简化实例如下。
清单 1. 系统配置文件 build.conf 的实例
### --- Modules to include in boot image --- ### #!Hardware #!!System #!!!Bus Modules module pcm # PCMCIA Cards module serial # Serial Device Support module acpi # Advanced Configuration and Power Interface support #!!!AGP Modules module agpgart # AGP bus module for use with AGP video cards #module ali-agp # ALI chipset support #module amd64-agp # AMD Opteron/Athlon64 on-CPU GART support #module amd-k7-agp # AMD Irongate, 761, and 762 chipset support ... ### --- Packages to include in boot image --- ### # --- Packages to include in boot image # --- Packages below may be "package" or "pkg" #!!Miscellaneous #package hwclock # Utility to set system time from hardware clock #package sound-esd # Enable sound-esd or sound-nasd if you want to be able to # control #package sound-nasd # sound on your thin client from another computer or # your remote session. #package iptables # IP Tables support ... ### --- Miscellaneous Parameters --- ### #!!Basic param rootpasswd b1ttler# Do Change! Console/telnet password for root # If this is enabled, Telnetd will be enabled. param xorgvncpasswd b1ttler # VNC Access Password param storagepasswd pleasechangeme # Password for storage server param dialuppasswd pleasechangeme # Password for dialin account param sambapasswd pleasechangeme # Password for samba shares when using user # mode security param bootlogo true # Backgound picture during boot param bootresolution 1024x768 # Resolution used during Thinstation boot ... |
需要注意的是,在设置系统的硬件驱动模块信息时,不要配置多余的驱动模块信息,仅仅包含与当前系统硬件配置相关的模块驱动信息即可。无用的驱动模块信息设置,会增加系统启动文件的创建时间,更为重要的是,它会延长系统的启动时间。
第二个系统配置文件是在 Thinstation 系统启动时所用到的系统环境初始化配置文件“Thinstation.conf.buildtime”。这个文件设置了系统启动时的系统环境初始化信息,比如对键盘,时区,USB,打印机的系统信息设置,以及对连接协议(如 ICA,RDP,NX)和用户虚拟桌面连接 session 的初始化属性设置等。一个系统环境初始化配置文件的简化实例如下。
清单 2. 系统配置文件 thinstation.conf.buildtime 的实例
# --- General Options # # AUDIO_LEVEL Audio Level for sound, 0-100 # KEYBOARD_MAP Keyboard layout # TIME_ZONE Used to set time zone on TS client by entering the UTC offset. # This can be set automatically if the appropriate dhcpc option is # selected # (Option 2, time offset in seconds) # SYSLOG_SERVER Log server ip address or hostname. # If the work "local" is used, then syslog starts logging locally # If not specified syslogd is not loaded. # USB_ENABLED Enable USB Drivers into memory if USB package is chosen # DAILY_REBOOT Will reboot server if up over a day and one of the session # types is closed # AUTOPLAYCD If enabled this will autoplay music cds when inserted. # CUSTOM_CONFIG Allows choosing custom boot config, On/Off # --- Session Details # # Note: # is a number equal to or greater than 0 # # SESSION_#_TITLE Title description for SESSION. Needed for replimenu. # SESSION_#_TYPE Package type, choose beetwen: # - vncviewer Start vncviewer in X # - rdesktop Start rdesktop in X # - rdesktop_svga Start svga rdesktop, based on rdesktop 1.1 # code for low memory machines # - x Start x-terminal session (xdm) # - xnest Start x-terminal session (xdm) from # within blackbox # - ssh Start ssh client in linux console # - telnet Start telnet client in linux console # - ica Start Citrix ICA client in X # - ica_wfc Start ICA Manager # - blackbox Start blackbox window manager session # - icewm Start icewm window manager session # - dillo Start Web Browser in X # - tftpd Start tftp daemon # - tarantella Start tarantella client # - rxvt Start light xterm client # - xterm Start xterm client # - tn5250 Start AS400 client in linux console # - nx Start NX Client Session # SESSION_#_SCREEN Display number to run the X server on # SESSION_#_AUTOSTART ON Application will be executed immediately at startup # OFF Application will appear in a menu to be started # manually # SESSION_#_CUSTOM_CONFIG ON Allows choosing custom config for when # session starts # OFF Session boots normally # SESSION_#_WORKSPACE Workspace to run program on in a window manager # SESSION_#_type_SERVER IP address/hostname of the server # SESSION_#_type_OPTIONS Command line options for the session type … |
Thinstation 启动文件的创建方式非常多样。Thinstation 的官方网站主页提供了以下几种 Thinstation 启动文件的创建和获取方式,用户可以根据自己的实际需求来选择具体的一种方式进行创建。
第一种系统创建方式是用户使用自己的 Linux 系统环境进行创建。在这种方式中,用户需要首先在 Thinstation 的官方网站上下载 Thinstation 的文件编译包,然后解压到自己的 Linux 系统环境下,接着编辑系统创建配置文件“build.conf”和系统环境初始化配置文件“thinstation.conf.buildtime”。在完成上述步骤后,最后执行“build”命令进行系统启动文件的创建。执行的具体命令如下。
清单 3.用户自行创建启动文件的命令
tar xfz Thinstation-<version>.tar.gz cd Thinstation-<version> ./build |
当系统启动文件创建完成后,生成的系统启动文件可以在用户 Linux 系统的”boot-images/<type>”目录下找到,这里的 type 为在启动文件创建时所设置的文件类型,目前支持的启动文件类型为:etherboot, initrd, iso, loadlin, pxe&syslinux。
第二种系统启动文件获取方式是用户可以直接下载 Thinstation 的官方网站上所提供的已经编译完成的标准启动文件包。这个标准启动文件包在其解压后的“CD”目录下提供了已经编译完成的 .iso 文件,用户可以直接把 .iso 文件烧录到光盘上,然后通过光盘引导系统启动。如果用户想根据自己的实际硬件系统环境和应用需求进行系统启动文件的自定制创建,可以通过下载文件包中“RebuildIsoWithConf”目录下提供的基于 Windows 操作系统的自定制应用程序“rebuild-iso.bat”进行自定义启动文件构建。用户只需在“RebuildIsoWithConf\cd-files”目录下重新编辑系统创建配置文件和系统环境初始化配置文件,就可以通过自定制应用程序重新创建适用于实际硬件环境的系统启动文件。
第三种系统启动文件创建方式是用户通过 Thinstation 官方网站所提供的前端基于 Web、后端基于 Linux 服务器的在线编译创建环境,一步步的进行启动文件的创建。Thinstation 官方网站提供了位于多个不同地理位置的在线编译创建环境,用户可以根据自己的实际地理位置选择最优的编译环境进行启动文件的快速创建与下载,从而可以获得创建和下载速度。这种方式的优点是用户无需自搭建 Linux 系统来提供创建环境,更不需要考虑在启动文件编译创建过程中自建编译环境与镜像创建配置不兼容的问题。本文在下面的章节会结合一个具体的创建实例来着重讲述这种非常有特色的创建方式。
Thinstation 提供了多种系统启动方式,具有良好的部署自适应性,从而可以满足不同用户实际生产环境的需求。总体上讲,系统的启动方式主要可以分为两类:网络启动方式和本地启动方式。对于网络启动方式,Thinstation 系统可以通过网络以 PXE 的方式启动,也可以通过配置一个 TFTP 服务器以 Etherboot 的方式启动。这种启动方式类似于传统意义上的无盘工作站的工作原理,对于没有配置本地存储设备的物理机器,这是一种很合适的启动方式;对于本地启动方式,它需要本地物理存储介质的支持。这种启动方式支持多种存储介质类型,如硬盘,Compact Flash drives,USB keyrings, CD/DVD。广泛的存储设备支持提供给了用户多种选择性。对于桌面云计算环境中的瘦客户端而言,它们一般都不具有本地存储介质,或者具有非常有限的存储能力。因此,以上的这两种系统启动方式都很好的适应了作为瘦客户端的物理机器的硬件特点和应用环境。
对于 Thinstation 启动文件的创建,Thinstation 的官方网站上提供了一个具有良好用户体验性的非常有特色的创建方式——在线创建方式。通过这个前端基于 Web、后端基于 Linux 服务器的在线编译创建环境,用户可以一步步的完成系统启动文件的创建。本小节将基于一个简单的在线创建实例,一步步的引导读者掌握这种简单而强大的在线创建方式。
用户首先登陆 Thinstation 的官方网站 http://www.thinstation.org/,然后点击连接“TS-O-Matic”,如图 1 所示:
图 1.在线创建启动文件
然后在网站上提供的创建区域列表“Available TS-O-Matics”中选择距离用户当前所在地区最近的创建地点。如图 2 所示:
图 2.选择创建文件的服务器地点
注意:地点的选择将直接影响系统启动文件的创建和下载速度。
当用户完成创建地点的选择后,需要根据自己实际的系统硬件配置和应用环境进行系统创建配置文件参数的编辑。系统创建配置参数对应于如前所述的系统创建配置文件“build.conf”中的参数选项,主要分为三类:系统硬件驱动模块参数,应用程序参数和系统特性参数。图 3 显示了对系统硬件驱动模块参数进行配置的界面:
图 3.系统硬件驱动模块参数的配置界面
用户可以在 Web 页面中对相应参数进行勾选来编辑选择。另外,用户也可以选择 “Load Files”功能标签使用网站上已经预先配置好的“build.conf”文件模板,或者上传自己本地预配置的“build.conf”文件进行系统创建配置参数的设置。如图 4 所示:
图 4.上传本地预配置的文件
启动文件的在线创建过程提供了对系统用户界面的自定制支持。这里的系统用户界面分为两类:启动界面和桌面背景。用户可以根据自己的喜好来选择自己的背景界面。
- 启动界面自定制
用户可以点击“Splash”功能标签进行系统启动界面的自定制。如图 5 所示:
图 5.系统启动界面的选择
在这里,用户可以上传自己的系统启动界面图片。
- 桌面背景自定制
用户可以点击“Background”功能标签进行系统桌面背景的自定制。如图 6 所示:
图 6.系统桌面背景的定制
在这里,用户可以上传自己的系统桌面背景图片。
当用户完成系统参数和用户界面的自定制后,点击“Build”功能标签,开始进入系统启动文件的创建。如图 7 所示:
图 7.系统启动文件的创建
然后用户进行系统环境初始化配置文件“thinstation.conf.buildtime”的自定制,这个文件设置了系统启动后的系统环境初始化信息。在这里,Thinstation 官方网站提供了两种配置方式:在线编辑模式和预定义模式。在线编辑模式是指用户可以直接在浏览器中进行配置文件的在线编辑;预定义模式是指用户可以使用网站上已经预先配置好的配置文件模板,或者上传自己本地预配置的配置文件进行系统环境初始化配置参数的编辑。图 8 显示了在线编辑模式:
图 8.在线编辑系统环境初始化配置文件
如果用户选择预定义模式,可以点击功能标签“Load Files”进行设置。
当系统环境初始化配置文件编辑完成后,用户需要点击“Write image”功能标签进行最终的系统启动文件的创建。当启动文件编译创建完成后,用户可以在“Log”标签下查看相应的启动文件创建日志,确定启动文件是否创建成功。然后,用户可以根据自己所选择的 Thinstation 启动方式,下载相应的系统启动文件。Thinstation 目前提供了对应于五种启动方式的系统启动文件,用户可以点击相应的类型标签进行下载。如图 9 所示:
图 9.启动文件的五种启动方式
当相应的系统启动文件下载完毕后,用户就可以根据选择的启动方式在瘦客户端上启动 Thinstation 系统。图 10 示例了通过 VMWare Workstation 模拟的,以 .iso 镜像文件启动方式启动的 Thinstation 系统界面:
图 10.Thinstation 启动后的系统界面
通过本文的介绍 , 相信您对桌面云计算环境中的客户端及开源瘦客户端软件 Thinstation 有了初步的了解。通过本文介绍的一个 Thinstation 在线创建实例,您可以轻松利用 Thinstation 构建自己桌面云计算环境下的瘦客户端系统,充分享受桌面云计算所具有的独特优势。
学习
- 参考 Thinstation 的官方网站,查看 Thinstation 的最新信息。
- 参考“桌面云初探”: 从这篇文章,您能够了解桌面云的基本概念有一定的了解。
- 在 developerWorks 云开发人员资源 中,发现和共享应用程序和服务开发人员为云部署构建项目的知识和经验。
- 观看 developerWorks 演示中心, 从面向初学者的产品安装和设置演示到面向经验丰富的开发人员的高级功能演示。
- 访问 IBM Smart Business Development and Test on the IBM Cloud。
讨论
- 加入 developerWorks 上的一个 云计算小组。
- 阅读 developerWorks 上所有不错的 云计算博客。
- 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。