通过 Win4Lin Windows 虚拟桌面服务器打破硬件升级周期

作者:Jon Watson

Win4Lin 虚拟桌面服务器 (www.win4lin.com) 是一种客户端/服务器虚拟化解决方案,可用于将组织从昂贵且维护成本高的 Windows 基础设施平稳地迁移到更强大、更简洁的 Linux 基础架构。如何实现?只需单击鼠标,即可将单个 Windows 副本直接交付给多个用户的桌面。您不希望用户拥有完整的 Windows 桌面?没问题。虚拟桌面服务器 (VDS) 可以配置为将单个应用程序交付到 Linux 桌面。鉴于其灵活性,使用 VDS 迁移到 Linux 基础设施的原因同样多种多样,这并不令人惊讶。

Linux 服务器的要求通常低于 Windows 服务器。因此,Win4Lin VDS 可用于打破硬件升级周期。随着 Vista 的临近,许多组织在未来几年内将面临潜在的昂贵硬件升级。

尽管可以就总体拥有成本 (TCO) 问题的任何一方提出论据,但那些得出结论认为 Linux 提供较低 TCO 的组织随后将面临迁移其基础设施的技术和后勤负担。VDS 允许在进行基本的软件交换的同时,仍然允许员工继续使用他们熟悉的 Windows 环境和应用程序。

VDS 为组织提供了无限的喘息空间。一旦 OS 基线被替换出来,组织可以选择继续保持 Linux/Windows VM 姿态,或者他们可以继续开展为其功能应用程序采购或移植 Linux 解决方案的业务。

VDS 提供“单应用程序”部署到桌面,这意味着单个关键任务应用程序永远不需要移植。单个 Windows 应用程序可以直接在客户端 Linux 桌面上启动。

除了基础设施问题之外,运行 VDS 服务器还允许集中管理、升级和维护。由于所有客户端都由同一个 Windows 映像提供服务,因此服务器端的单个更改意味着组织范围内的快速更改。

现有的 Windows 许可证可以根据其各自的条款继续使用。

VDS 与市场上许多客户端/服务器虚拟机 (VM) 解决方案不同。大多数 VM 服务器产品仅向客户端提供远程显示,而 VDS 向客户端提供适当的客户端/服务器 X Window 系统显示。如果客户端不支持 X 协议消息,则可以使用传统的虚拟网络连接或 Tarantella 等替代“显示”方法,这确实为几乎任何安装了最新 Web 浏览器的客户端打开了大门。

许多 Windows 管理员的主要任务之一是保持 Windows 的补丁和更新,以保护客户端免受每天针对不幸的 Windows 机器的许多间谍软件和恶意软件攻击。如前所述,VDS 提供了一个 Windows 实例来修补和升级,这不仅节省了时间,而且比在整个组织中分阶段部署补丁更简单。此外,由于最终用户的环境是主 Windows 映像和他们自己本地存储的设置的组合产物,因此只需注销并重新登录即可使用主映像刷新他们的会话,从而消除他们会话中任何正在运行的恶意软件或间谍软件。

客户端

Win4Lin 建议使用原生的 Win4Lin 终端服务客户端,以便利用原生 Win4Lin 客户端/服务器连接提供的所有高级功能。但是,有很多方法可以连接到 VDS 服务器,除非您非常需要无缝打印,否则几乎任何客户端都可以完成这项工作。

可以使用 Telnet、rlogin 或 SSH(启用 X11 转发)连接到 VDS 服务器。对于 Telnet 和 rlogin,必须正确设置 {$DISPLAY} 环境变量。一般来说,远程登录选项仅适用于高速环境,例如本地 LAN。WAN 和消费级高速互联网连接通常无法提供足够的带宽来使用这些方法。也可以使用 RealVNC 客户端、NoMachine 客户端和 Tarantella 进行连接。

简而言之,如果您找不到连接到 VDS 的方法,那只是因为您没有尝试。

许可

基本许可证起价为 2,500 美元(25 个席位)。可以以不同的增量获得补充许可证,以使 VDS 能够处理多达 1,000 个用户。您的服务器是否可以处理 1,000 个用户取决于您自己决定。重要的是要注意,这些是 VDS 的许可证,而不是 Windows 的许可证。组织将必须根据微软的条件提供自己的 Windows 许可证。但是,在大多数情况下,可以使用现有许可证。

下载和安装

Win4Lin VDS 的当前版本是 3.0,但 3.5 正在最后阶段的 beta 测试中,并且可能会在本文章付印之前发布。由于撰写一篇关于潜在移动目标的文章没有太多意义,因此我们使用 3.0 稳定版本。

Win4Lin Pro 和 VDS 是相同的二进制文件,但不同的许可证解锁不同的功能。有适用于 32 位和 64 位 Linux 的 DEB 和 RPM 包。安装会提示输入许可证代码,届时产品将变成 Pro 或 VDS。

没有从 Win4Lin Pro 到 Win4Lin VDS 的升级路径,因此如果您安装了 Pro,则必须使用 ask_license.sh 脚本使用 VDS 许可证重新许可它。

VDS 客户端可用于 Linux、Solaris 和 Windows,但源代码也可供下载,这使得具有中等技能的 Linux 用户可以为几乎任何平台编译客户端。

安装服务器

我们从 Win4Lin FTP 站点 (ftp.win4lin.com/pub/releases/linux/pro/3.0/index.html) 下载了我们的软件包。有服务器软件包可作为 32 位和 64 位 RPM、32 位和 64 位 DEB 以及 tarball 提供。

我们为我们的测试平台下载了 32 位 RPM 软件包,该平台是一个 Centrino Duo Core,运行频率为 1.83GHz,具有 1GB RAM,运行 Edgy Eft 的 beta 版。在初始安装后,我们最终迁移到 SUSE 10.1,因为 Edgy 的“前沿”内核在 Win4Lin 客户端方面存在问题。我们尝试在测试平台上使用 beta 版本是咎由自取,我们已经受到了适当的惩罚。我提到这一点只是因为一些眼尖的读者可能能够在某些屏幕截图中检测到不同的平台。

win4linpro_6.3.0-07_i386.deb 包只有 3.7MB,安装过程非常顺利。VDS 安装手册建议,在安装 VDS 之前,必须安装受支持发行版的工具链。这背后的原因是,所有 Win4Lin 产品都提供了一个专门的 KQEMU 模块,以便提供令人满意的速度性能。只要您尽职尽责地安装了工具链,构建和插入所述模块的过程对您来说基本上是透明的(图 1)。

Break the Hardware Upgrade Cycle with Win4Lin Windows Virtual Desktop Server

图 1. 构建和安装模块

现在是时候安装我的单个 Windows 实例了。我们使用了 Windows XP 家庭版,安装了它并允许它将自己升级到 Service Pack 2,然后再配置帐户。为此,我们将 Windows XP CD 放入驱动器并运行命令

sudo loadwinproCD

如果您尚未安装 VDS 许可证,系统此时会提示您这样做。您可以选择此时不输入许可证并使用该产品 14 天,但服务器功能将不会启用,实际上只会给您留下一个单用户工作站。

在图 1 中,您将看到我们必须使用 -r 开关来加载客户媒体。这是因为我们的测试平台之前已经安装了 Win4Lin Pro,并且 loadwinproCD 命令检测到了这一点。-r 开关只是告诉 VDS 重新加载客户媒体。

安装 VDS 有两个步骤。首先,超级用户必须将客户媒体复制到硬盘,这就是 loadwinproCD 所做的事情。下一步实际上是安装 Windows,这是在正常特权用户帐户下完成的。安装 Windows 和创建主配置文件的过程(所有其他用户帐户将从中派生其 Windows 环境)是紧密耦合的,以至于整个下一节都致力于理解该过程。

基于配置文件的配置

Win4Lin VDS 使用基于配置文件的配置。简而言之,这意味着必须配置单个主配置文件。这是所有其他用户将继承的配置文件,这也是唯一需要安装补丁、升级和应用程序以及执行其他维护的配置文件。一旦主配置文件按需配置完成,就会为每个系统用户创建单独的用户配置文件。

创建主配置文件

VDS 必须在用户帐户下安装。与所有基础设施决策一样,现在花一些时间可以节省以后无数的麻烦。我已决定在我的主用户帐户 jdw 下安装我的主配置文件。我进一步决定,我将在我的系统上配置另外两个名为 jwatson 和 dwatson 的用户帐户。那么,我的第一步是创建 jwatson 和 dwatson 帐户。已经运行 Linux 系统的组织很可能已经设置了所有用户帐户,可能只需要为主 VDS 配置文件创建一个帐户。

要创建主配置文件,首先我登录到我的系统并运行

sudo adduser jwatson
sudo adduser dwatson

在分配这些新用户帐户密码后,它们就可以使用了。现在是时候创建主配置文件了。这包括安装 Windows、将该安装指定为主安装,然后根据需要对其进行配置。

因此,我注销并以我的主配置文件用户 jdw 身份重新登录,然后运行installwinpro命令。

此命令的各种选项决定了将安装 Windows 的虚拟机的特性。我接受默认值,其中包括 4GB 磁盘映像大小。根据您打算安装的应用程序数量,4GB 可能不够。但是,无需考虑用户空间,因为各个用户的文档和设置存储在用户各自工作站上的 Linux 文件系统中,而不是映像中(图 2)。

Break the Hardware Upgrade Cycle with Win4Lin Windows Virtual Desktop Server

图 2. 用户文档和文件夹存储在 Linux 文件系统中。

除非您使用 -d 开关更改它,否则默认配置文件名称将为 winpro。请记住,如果您切换配置名称,您将需要在下一步中使用该信息导出主配置文件。

相信我 - 现在备份您的映像。经历一次 Windows 安装已经够痛苦的了,您不想再做两次。

备份您的映像就像将 GUEST.IMG 文件复制到另一个位置一样简单。如果您采用了默认安装选项,您将在 /home/jdw/winpro/ 中找到 GUEST.IMG 文件(显然,您需要替换您自己的用户名)。如果您修改了您的安装,您就会知道在哪里找到它。

安装完成后,通过运行命令将此安装指定为主安装/opt/win4linpro/bin/export-profile <配置名称>.

如果您在上一步中安装客户会话时更改了配置名称,则需要在 <配置名称> 位置提供该名称。如果您没有指定配置名称,则使用了默认的 winpro,您无需提供它来导出主配置文件。

启动映像并对其进行自定义。至少启动并关闭映像一次以正确创建主配置文件至关重要。要启动主 Windows 配置文件,请双击桌面上的 Win4Lin 图标,或运行命令winpro从命令行。

自定义映像

由于配置的用户每次登录到 VDS 时都将收到主映像的新副本,因此立即完全自定义您的映像并非至关重要。从理论上讲,您现在可以跳到创建用户配置文件,然后再回来自定义您的主映像。但是,在实践中,有一些原因说明您可能应该现在就做

  • 熟悉度:您的组织使用 VDS 替换基础设施的原因很可能是为了最大限度地减少对用户的影响。因此,常识似乎表明应尽一切努力为用户提供最熟悉的桌面和应用程序集。

  • 安全性:由于用户的会话在每次登录到 VDS 时都会使用主映像的副本刷新,因此很容易认为安全性可以退居其次。如果操作系统至少每天刷新回主映像,那么间谍软件、恶意软件或病毒会造成多大的损害?这是一个很好的问题,但请考虑如果您的主映像包含恶意软件或病毒会发生什么。现在就锁定它(图 3)。

  • 技术性:当任何用户配置文件正在运行时,主配置文件无法运行。由于您必须启动主配置文件才能对其进行更改,因此现在不进行自定义可能意味着不久的将来会有大量非工作时间工作,或者当所有用户被迫注销并保持注销状态以进行主映像工作时,会造成严重的工作中断。

Break the Hardware Upgrade Cycle with Win4Lin Windows Virtual Desktop Server

图 3. 更新您的 Windows 主映像,但锁定一个已知的良好状态。

现在可能是再次备份您的映像的好时机。每次您更改主配置文件时,明智的做法是创建映像的另一个备份。请记住,如果您的映像损坏,那么很多用户将无法完成他们的工作,直到您恢复它为止。将 4GB 映像复制回主目录只需几分钟,但重新安装 Windows 或将旧映像更新到最新状态则需要更长的时间。

Win4Lin VDS 服务应自行启动。如果它没有启动,或者如果您需要出于某种原因重新启动它,您可以这样做,方法是

/opt/win4linpro/etc/mergepro_rc start

/opt/win4linpro/etc/mergepro_rc restart
创建用户配置文件

只有配置的用户才能使用主配置文件。不需要使用 VDS 的系统用户无需配置,但配置过程必须在每个用户的帐户下完成。如果您只有少数用户,则可能更快地su到每个用户帐户并手动运行导入命令。但是,如果您有很多用户,则可能需要一些巧妙的 bash 脚本或登录脚本来方便该过程。在我的示例中,这意味着我必须以 jwatson 和 dwatson 身份登录并运行以下命令

/opt/win4linpro/bin/import-profile /home/jdw/winpro

主配置文件已创建,并且用户已配置。服务器的大部分工作现在已经完成,从此以后对主配置文件所做的任何更改(例如安装新应用程序或应用补丁)都将在每次用户登录时向下传播给配置的用户。

但是,这些用户将如何登录?现在是时候安装客户端了。

安装客户端

如前所述,有几种方法可以连接到 VDS。我只关注 Win4Lin 客户端,因为它免费且易于获得。

使用原生 Win4Lin 客户端连接 VDS 服务器可提供最佳速度和功能集。Win4Lin 客户端可以从 Win4Lin 站点 (www.win4lin.com/component/option,com_repository/Itemid,76/func,fileinfo/id,2) 下载,并提供 Linux、Solaris、Windows 和源代码版本。

奇怪的是,虽然 VDS 本身提供 DEB、RPM 和 tarball 版本,但 Linux 客户端不提供 DEB 格式。由于从源代码安装通常会让我失去胃口,因此我们将获取 RPM,使用 alien 将其转换为 DEB,然后使用 dpkg 将其安装在基于 Debian 的系统上。以下是步骤

  1. 从 Win4Lin 下载 RPM。

  2. 运行sudo alien wtsclient_1.0.0-4_i386.rpm.

  3. 运行sudo dpkg -i wtsclient_1.0.0-4_i386.deb.

  4. 运行wtsclient命令连接到服务器。

Win4Lin VDS 可以配置为交付单个应用程序或整个 Windows 桌面。我们将这两种配置都连接到 Win4Lin 演示服务器,并提供了两个屏幕截图。第一个屏幕截图显示了整个 Windows 桌面配置,第二个屏幕截图仅显示了交付到我们 Linux 桌面的 Internet Explorer(图 4 和 5)。

Break the Hardware Upgrade Cycle with Win4Lin Windows Virtual Desktop Server

图 4. 运行桌面的 Win4Lin 客户端

Break the Hardware Upgrade Cycle with Win4Lin Windows Virtual Desktop Server

图 5. Win4Lin 可以仅交付单个应用程序,而不是整个桌面。

将单个应用程序交付到 Linux 桌面

到目前为止,我们涵盖的所有内容都是如何将完整的 Windows XP 桌面交付到 Linux 桌面。虽然这可能适用于许多情况,但在其他情况下,用户可能只需要单个 Windows 应用程序。如何调整 VDS 以打开应用程序而不是完整的桌面?当然,通过调整 Windows 注册表。Win4Lin VDS 手册是查找有关如何实现此目的的最新说明的最佳场所,但为了坐下来并仅使用这本《Linux Journal》来完成它,现在我们提供了交付单个应用程序所需的步骤。

确保正确的 Win4Lin 注册表项值(所有 Windows 版本)

无论使用哪个应用程序或哪个版本的 Windows,都必须首先设置或验证 Win4Lin 注册表项

  1. 打开 regedit 应用程序。

  2. 导航到 HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon。

  3. 确保 Userinit 变量完全读取B:\mrgpro32.exe。如果该值不完全相同,请更改它。

让用户登录 Windows 只是为了运行单个应用程序是没有太多意义的。因此,第一步(虽然是可选的)是将主 Windows 配置文件设置为自动登录用户。不同版本的 Windows 具有不同的允许自动登录的规定。

设置自动登录(Windows 2000)
  1. 启动控制面板。

  2. 启动用户和密码小程序。

  3. 取消选中标有“用户必须输入用户名和密码才能使用这台计算机”的框,然后单击“确定”。

  4. 出现提示时,输入您希望 Windows 在其下启动的帐户的用户名和密码。

设置自动登录(Windows XP)
  1. 启动控制面板。

  2. 启动用户帐户类别。

  3. 单击“更改用户登录或注销的方式”。

  4. 取消选中“使用欢迎屏幕”复选框。

  5. 单击“应用选项”。

  6. 通过单击“开始”→“运行”并输入来启动备用用户帐户编辑器control userpasswords2。单击“确定”。

  7. 取消选中标有“用户必须输入用户名和密码才能使用这台计算机”的框。单击“确定”。

  8. 出现提示时,输入您希望 Windows 在其下启动的帐户的用户名和密码。

指定要交付的单个应用程序(所有 Windows 版本)
  1. 通过单击“开始”→“运行”启动注册表编辑器。输入regedit然后单击“确定”。

  2. 导航到 HKLM\Software\Win4Lin。

  3. 在右侧空白窗格中单击鼠标右键以创建一个新变量。

  4. 选择“字符串值”。

  5. 键入SingleAppStart(区分大小写)。

  6. 双击新创建的 SingleAppStart 变量。

  7. 在“数值数据:”字段中,输入要启动的可执行文件的完整路径。例如,要运行 Microsoft Word,WORD.EXE 是不够的。需要 C:\Program Files\Microsoft Office\word.exe 的完整路径(或您的 Word 可执行文件所在的位置和名称)。

  8. 退出注册表编辑器,您就完成了!

现在,当用户启动他们的客户端并登录时,Microsoft Word 将在他们的桌面上与他们的 Linux 应用程序并排启动。这可能看起来没什么大不了的,因为 Microsoft Office 套件得到了 Wine 和 CrossOver Office 的良好支持,但将 Word 换成 Windows 桌面上的任何其他应用程序,其强大功能就变得显而易见了。由于正在使用完整副本的 Windows 来交付应用程序,因此几乎可以无限数量的 Windows 应用程序以这种方式交付,而无需进行任何修改。

结束语

虚拟化技术并不新鲜。IBM 自 1960 年代以来就一直在使用它。使虚拟化再次令人兴奋的是快速网络和功能强大的服务器的广泛可用性。在硬件、管理和培训方面,使用 Linux 交付 Windows 是经济高效的,而 Win4Lin 虚拟桌面服务器等产品使该技术易于安装和使用。事实上,虚拟化技术已经发展到如此程度,以至于棘手之处不再是技术性的;而是后勤方面的。制定虚拟化策略比实施虚拟化策略更困难。

Jon Watson (www.jonwatson.ca) 是一位加拿大 GNU/Linux 爱好者,他定期为 Linux 社区撰写文章。在不写作、撰写博客和播客有关免费和开源软件的内容时,Jon 经常可以在他的办公室里打磨他的 Linux+ 认证,但这除了他自己之外,谁也无法打动。

加载 Disqus 评论