您用于连接到模拟大型主机的机器应该价格低廉、易于维护,并且从安全的角度来看,是可消耗的。
有些人——例如那些没有耗时的工作、配偶或孩子的人——会希望能够花费大量时间玩硬件密集型电脑游戏。尽管越来越多的游戏开始支持 Linux,但这通常意味着运行一台装有闭源操作系统(如 Microsoft Windows)的机器。解决这个问题的方法是将游戏电脑设置为双启动机器。繁琐的细节通常由您正在使用的发行版自动处理;如果不是,请查看 Tobby Banerjee 撰写的Linux 安装策略 mini-HOWTO。
模拟大型主机设置让您可以将双启动机器上 Linux 分区的大小和复杂性保持在最低限度:它所要做的就是让 X 运行并连接。有很多方法可以做到这一点,我通常只是这样做:
转到/etc/X11/xdm/。在文件Xservers中,注释掉以下行之一::0 local /usr/X11R6/bin/X :0 vt07或类似的内容,方法是在开头放置一个井号 ("#")。这将阻止计算机在启动时本地启动 X。
在etc/inittab中,插入一个新行,例如(对于 SuSE 8.2):xx:5:respawn:/usr/X11R6/bin/X -query <host>其中 "<host>" 再次是模拟大型主机的名称。“5”是启动 X 的运行级别;“xx”只是我选择的标签;您可能必须根据您的系统调整两者(请小心: 玩弄inittab可能会导致严重问题)。这将通过调用模拟大型主机来启动 X,当您在双启动计算机上时,您应该会看到登录窗口。
如果您不必经常在操作系统之间切换,双启动机器是不错的选择。但是,所有重新启动都可能很快变得令人厌烦,而且考虑到闭源操作系统的价格,双启动机器不能被认为是真正可消耗的。
Linux 终端服务器 http://www.ltsp.org (LTSP) 让您可以使用旧硬件组装没有硬盘的精简电脑,这些电脑可以作为瘦客户端运行。这些机器价格低廉、安静、设置快捷,一旦运行起来,几乎不需要维护(除非,例如,风扇坏了)。LTSP 获得了各种奖项,并且被用于比家庭小型模拟大型主机要求更高的场合。例如,英国的奥威尔高中在其完整系统中使用了 LTSP 机器和 IBM 刀片服务器(请参阅 http://www.cutterproject.co.uk/Casestudies/orwell_high_school_cutter_case_study.php)。如果您要拥有 постоянно 使用的终端,很难想象这不是最佳解决方案。
所需硬件。 很可能,在您的地下室或车库(或您存放您的伴侣亲切地称之为“所有垃圾”的东西的任何地方),您可能有一个完全过时的主板和处理器,您一直在保存它们,因为您不知道什么时候会用到。好吧,猜猜看。
如果您使用 100 Mbit(“快速”)以太网网络,请保持在 486DX 以上;奔腾 II 应该没问题。看看您是否可以凑够大约 32 MByte 的 RAM。在初始阶段,您需要一个软盘驱动器。您还需要一块不错的显卡和一个显示器——“不错”不一定意味着带有 128 MByte RAM 的 AGP 显卡,而是指清晰、锐利的图像。
您唯一需要稍微注意的事情是网卡。找到一个带有插槽可以插入 ROM 芯片的网卡:“可启动”网卡。您可以使用没有插槽的网卡,但那样您就必须一直从软盘启动。我们还需要网卡的唯一编号(媒体访问控制或 MAC 地址)。在好的网卡上,它包含在板上的小贴纸上,看起来像这样:
00:50:56:81:00:01 |
如果您在网卡上找不到它,请尝试使用 Linux 救援软盘或任何其他内核启动系统。当检测到网卡时,该编号应在启动期间显示。
添加键盘和机箱就可以了。请注意,我们没有硬盘,更不用说 CD-ROM 了。使用适合电源和处理器的风扇,您将获得一台非常安静的机器。
它们如何工作。
LTSP 主页对系统启动时发生的情况进行了深入的技术讨论。简而言之,用通俗易懂的语言来说:
当打开电源时,Linux 终端像任何其他计算机一样,环顾四周以查看它被赋予了哪些硬件。它找到了一张带有 MAC 地址的网卡,并注意到它有一个带有启动盘的软盘(或网卡中的启动 ROM)。它启动了启动程序。这实际上告诉 Linux 终端:
Got your MAC? Good. Now scream for help as loud as you can. |
终端的呼叫通过整个(本地)网络。在模拟大型主机上,一个名为dhcpd(动态主机配置协议服务器守护进程)的程序正在监听。它将终端发送的 MAC 地址与它被告知要处理的机器列表进行比较,然后向终端发送一个包含 IP 地址和终端可以获取内核的位置的答复。然后,终端使用其新名称配置自身。
使用来自启动程序的更多代码,终端启动一个名为tftp(简单文件传输协议,是古老的ftp的简化版本)。这会从主机下载内核。然后,终端启动此内核。
像每个其他 Linux 系统一样,终端需要一个根文件系统。它不是从硬盘获取,而是通过NFS(网络文件系统)从模拟大型主机导入。如果终端的内存非常小,它也可以通过这种方式挂载交换分区。然后,终端启动 X,通过xdm连接到模拟大型主机,并显示登录屏幕。
这一切都发生得非常快。如果您关闭终端上所有各种 BIOS 启动检查,并从网卡中的 EPROM 而不是软盘启动,它会发生得更快。
运行dhcpd, tftpd和nfsd在模拟大型主机上运行是一个您可能不愿意承担的安全风险。在关于支持机器的章节中,我们将展示一种绕过此问题的方法。
设置软件。 在服务器(模拟大型主机)端,您需要安装nfsd tftpd和dhcpd,您的发行版应将其作为标准软件包包含在内。
暂时保持其配置文件不变。LTSP 配置和安装程序将为您完成大部分工作。您应该注意的一些文件:
提供终端的 IP 地址、主机名、模拟大型主机的 IP 地址、终端的 MAC 地址和默认网关。检查内核路径名是否正确。
这些选项控制终端本身。
Linux 终端的名称及其 IP 地址必须在此处列出。稍后,在描述网络时,我们将介绍一种系统化的命名约定,以简化此操作。
尽管当前的 LTSP 文档中没有提到,但您可能需要在该文件中添加以下行:rpc.mountd : <terminal> : ALLOW rpc.mountd : ALL : DENY其中 "<terminal>" 是终端的 IP 地址。这告诉主机允许终端挂载 NFS 文件系统。
为 Linux 终端创建启动软盘通常很简单。根据您的以太网卡类型,转到 LTSP 文档中提到的网站(目前是 Marty Connor 的 ROM-O-Matic 网站 http://www.rom-o-matic.net/),并按照启动软盘的说明进行操作。这将生成一个几十 KB 的文件,然后您可以将其放在软盘上并从中启动。稍后,当您确定您的硬件配置不会更改并且您的设置有效时,请用您插入以太网卡的 EPROM 替换软盘。
如果您的终端机器上有更现代的主板,您也许可以通过从启动顺序 (CMOS) 菜单中选择 “PXE”(预启动执行环境)、“MBA”(管理启动代理)或 “Network”(网络)来绕过所有这些步骤。
使用终端。 一个模拟大型主机可以支持多少个 Linux 终端?LTSP 文档给出了以下示例:
It's not unusual to have 40 workstations [Linux Terminals], all running Netscape and StarOffice from a Dual PIII-650 with 1GB of ram. We know this works. In fact, the load-average is rarely above 1.0! |
(本文档的这一部分写于 2002 年 3 月,因此提到了 Netscape,它是 Mozilla FireFox 的前身。StarOffice 是 OpenOffice.org 的商业变体。)
Linux 终端可能需要一些用户教育。那些只使用过 Windows 的人往往难以想象这样一个系统:图形层不仅独立于操作系统的其余部分,而且还可以从多个屏幕访问。解释这一点的最佳方法是使用示例。X 新手非常喜欢的一个技巧是,程序在一个终端上启动,然后在另一个终端上出现。要启用此功能(但仅在安全环境中!),请坐在一个终端前并键入:
xhost +<host> |
其中 "<host>" 是模拟大型主机的名称。然后,移动到另一个终端并启动一个程序,例如:xeyes或xroach:
xeyes -display <terminal>:0 & |
眼睛应该出现在第一个终端的显示器上,为所有人提供无尽的乐趣。当您解释完发生的事情后,请记住使用以下命令在第一个终端上再次撤销权限:
xhost -<host> |
您还可以使用此示例来说明为什么使用xhost命令是危险的。
通常会出现的另一个问题是 Linux 终端的速度。演示这一点的一个好方法是从xlock套件中运行一系列屏幕保护程序。例如:
xlock -inwindow -mode kumppa |
或更一般地:
xlock -inwindow -mode random |
虽然结果将取决于您的硬件,但这通常可以消除任何疑虑。
如果您使用的是像 KDE 这样的桌面环境,它允许您在注销时关闭计算机,请确保禁用此功能。否则,您的用户在尝试退出终端时会关闭模拟大型主机。告诉他们注销后只需关闭电源。年长的用户会感到一丝怀旧,而年轻的用户会盯着您,好像您疯了一样。这就是进步。
如果幸运之神眷顾您或者您很富有,您可能会发现自己拥有真正的瘦客户端。安装一个通常与设置 Linux 终端没有太大区别,只是您需要来自供应商的软件,您可能需要为支持付费,并且当出现问题时,您将无法自行修复。
Linux 文档项目有许多关于如何设置 X 终端的通用和特殊 HOWTO,例如 Salvador J. Peralta 的将 X 终端连接到 Linux Mini-HOWTO 或 Ian Hodge 的 NCD-X-Terminal Mini-HOWTO。
如果您在已经支持 X 的机器上,您或许可以使用安全外壳 (ssh) 程序的 X11 转发功能。这可以通过以下命令调用:
ssh -X <HOST> |
并创建一个到主机机器的加密保护隧道。X 转发必须在两台机器上都进行配置——在/etc/ssh/sshd_config主机机器上,X11Forwarding必须设置为yes——而且每天使用可能有点笨拙。但是,对于快速而粗略的工作,这是一个不错的选择。
作为连接到模拟大型主机的最后一种方法,有一些 “X 服务器” 程序可以在不同的操作系统下运行(请记住,X 服务器为终端侧供电)。这些程序使您可以使用本身不运行 X 的操作系统登录到 Linux 机器。
大多数用于 Windows 的 X 服务器都需要花钱,在某些情况下需要很多钱。唯一的例外是 Cygwin http://cygwin.com/xfree/,它将 X(和 GNU 工具)移植到 Windows 机器。
如果您有一台装有 OS X 的 Apple 电脑,您的处境会更好。对于 OS 10.3 “Panther”,您需要从安装盘安装 X11 软件包。然后,使用任何文本编辑器,创建一个可执行的 bash shell 脚本,例如:
#!/bin/bash /usr/X11R6/bin/X -terminate -query "<HOST>" :1 exit |
请注意窗口编号是 :1,因为 :0 被 Aqua 使用。不要使用/Applications/Utilities/X11.app/Contents/MacOS/X11中的 X11 服务器,因为它不理解-query命令:Apple 似乎不希望人们运行远程 Aqua 会话。然后,告诉防火墙您在做什么(您确实打开了防火墙,不是吗?):在系统偏好设置 -> 共享 -> 防火墙中,为端口 6001(而不是:6000)创建一个名为 “X Window System” 的新条目。然后,将 shell 脚本图标移动到您想要保留它的任何位置。要启动 X 会话,请单击该图标。一个名为 “X” 的 “EXEC” 图标将出现在 Dock 中。单击此图标。享受您的连接。要再次退出,请按Command-Option-a。(注意:这尚未在 Mac OS X 10.4 “Tiger” 上进行测试)
您还可以查看 XDarwin http://www.xdarwin.com/ 项目。XDarwin 是 X Window 系统的 Apple 版本,它位于 Darwin 操作系统(BSD 的变体)之上,Darwin 操作系统是 OS X 的核心。
(有一个用 Java 编写的 GPL X 服务器您可以尝试:Weirdx http://www.jcraft.com/weirdx/,尽管作者指出它不是为重负载而设计的。)
在本章中,我们研究了将为您提供 GUI(图形用户界面)的终端。如果您足够坚强,您还可以将文本终端连接到您的模拟大型主机,并通过 CLI(命令行界面)访问系统。此选项将在后面介绍。