临时网络休息室

作者:Colin McGregor

自 1939 年开始,并在那之后的大部分年份里,世界科幻大会一直是真正的科幻迷年度日历中的高光时刻。2003 年,那个高光时刻是 Torcon 3,即在 8 月 28 日至 9 月 1 日于安大略省多伦多举办的第 61 届世界科幻大会。Torcon 3,像所有过去的世界科幻大会一样,是由粉丝为了粉丝而举办的。这意味着没有人因组织大会的努力而获得报酬,而且资金很紧张。

自 1996 年以来,大会都设有网络休息室,参会者可以在大会期间查看电子邮件。鉴于我在互联网服务提供商的背景,为休息室做志愿者似乎是我的最佳任务。我当时在一家慈善机构工作,该机构翻新旧的企业计算机,供其他慈善机构和个人重复使用,否则他们将无力购买计算机。通过我的雇主,我能够为大会安排足够的计算机,唯一的条件是他们希望推广他们当前的项目 torontogames.org。唯一的障碍是这些机器不带任何类型的操作系统。

除了运行没有软件的四到五年旧硬件的问题之外,还有大会的限制、资金少、大会设置时间短以及大约 4,000 名参会者。我考虑过 Microsoft Windows 解决方案,但我们需要每台机器的许可证。当评估大约 28 台机器,每台大约 150 美元时,许可证费用将耗尽可用的预算。然后还有安装软件以及锁定/保护计算机以防止大会参会者搞砸的问题。Microsoft 不是本次大会的解决方案。

我研究了一些传统的 Linux 发行版,包括 Red Hat 和 Debian。虽然成本和安全问题消失了,但设置时间的问题仍然存在。

我考虑了 Linux 终端服务器项目,我曾在其他项目中使用过它,其中一台主服务器支持多台哑客户端机器。虽然客户端机器可以快速设置,但仍然需要相当多的时间来设置服务器。此外,我不确定我是否能获得合适的服务器机器。另外,可能出现的单点故障无法几乎立即且廉价地更换的想法让我感到紧张。

所以我研究了 Knoppix,这是一个基于 Debian 的 Linux 发行版,默认情况下从 CD-ROM 驱动器启动和运行,从不触及硬盘驱动器,我意识到我已经找到了成功的开端。由于 Knoppix 出色的硬件检测系统,至少在理论上,可以使用十几个相同的 Knoppix 光盘面对十几种不同品牌和型号的 PC,并在五分钟内让所有 12 台机器浏览互联网。本质上,Knoppix 在光盘上有两个文件系统,一个是在 Knoppix 启动时使用的传统 ISO 9660 系统,另一个是在系统启动后使用的压缩文件系统。这使事情变得复杂,但它确实允许 Knoppix 在传统的 700MB CD-ROM 上存储明显超过 700MB 的软件。

尽管如此,Knoppix 仍然存在一些需要解决的问题。首先,默认屏幕分辨率为 1024×768。许多 15 英寸显示器不支持大于 800×600 的分辨率,而且我知道我将获得的大多数显示器都是 15 英寸屏幕。因此,必须更改默认分辨率。其次,默认窗口管理器是 KDE。在为大会做计划时,我不知道我会得到什么样的 PC。如果我最终得到低端 PC,KDE 的资源消耗将太大而无法使用。因此,必须更改默认窗口管理器。

此外,浏览器中的默认主页必须设置为 Torcon 3 站点。浏览器书签必须设置为旅游信息站点和世界科幻大会相关站点。其他更改包括使启动屏幕和壁纸注明大会赞助商,并添加 Macromedia Flash 支持。最后,为了专注于房间的工作,所有额外的功能都被删除了。

我的第一步是下载并刻录最新版本的 Knoppix,当时是 Knoppix 3.4。这些说明仅适用于 Knoppix 3.4。接下来,我组装了一台开发机器,一台 Pentium II 350MHz,配备 256MB 内存、52 倍速 CD-ROM 和一块空白的 6GB 硬盘驱动器。我本可以使用更低的内存和更慢的 CD-ROM,但这已经是您为此类定制所需的最简陋的机器了。为了补充这台机器,在我的家庭网络的其他地方,我有一个支持盒,它将充当 FTP 服务器,外加一个 CD 刻录机和一个路由器,路由器兼作 DHCP 服务器。

接下来需要美术作品,即启动画面和壁纸。对于壁纸,任何 800×600 JPEG 图像都可以。我将其保存在支持盒上,命名为 knoppix.jpg。启动画面需要采用特殊的 640×400、16 色格式。我通过创建一个简单的低于 17 色的 640×400 图像,然后将其以 .bmp 格式保存在支持盒上,命名为 startup.bmp,得到了这个图像。

然后我在 Knoppix 下启动了开发盒并启动了一个 shell。第一步是设置一个新的文件系统,创建所需的目录,并创建一个文件,我稍后可以用作交换文件。其中一些东西需要略多于 1GB 的内存(RAM + 交换空间),因此我需要为一台具有 256MB 内存的机器设置一个交换文件。首次设置驱动器时,我输入了

su
mkfs.ext2 /dev/hda1
mount -o rw /dev/hda1 /mnt/hda1
mkdir /mnt/hda1/master
mkdir /mnt/hda1/source
mkdir /mnt/hda1/knx
cd /mnt/hda1/knx
dd if=/dev/zero of=swap bs=1M count=750
cd ~
umount /dev/hda1
exit

在上面的代码中,master 目录用于存储传统文件系统,source 用于存储后来成为压缩文件系统的文件,knx 用于存储交换文件,以及完成的 CD 镜像。上述步骤应该只需要执行一次。

我多次执行了以下步骤,因此我将它们变成了小脚本,以自动化磁盘创建任务的某些部分。这样,我可以刻录一个草稿 CD-R,将其展示给委员会成员,获得反馈并根据反馈进行调整。在这里,我擦除过去的工作,设置交换空间,然后从我当前的 CD 镜像复制到硬盘驱动器

su
mount -o rw /dev/hda1 /mnt/hda1
cd /mnt/hda1/source
rm -rf *
cd /mnt/hda1/master
rm -rf *
cd /mnt/hda1/knx
rm knoppix.iso
mkswap swap
swapon swap
cp -Rp /KNOPPIX/* /mnt/hda1/source
cp /cdrom/index.html /mnt/hda1/master
cd /cdrom/KNOPPIX
mkdir /mnt/hda1/master/KNOPPIX
find . -size -1000000 -type f -exec cp -p \
-- parents {} /mnt/hda1/master/KNOPPIX \;
cd ~knoppix

现在我准备开始自定义了。我首先从支持盒下载图像文件,然后将启动图像转换为我稍后需要的格式

lftp -u <<support box userid>>,<<support box
    password>> <<support box ip number>>
get startup.bmp
get knoppix.jpg
exit
bmptoppm startup.bmp | ppmtolss16 >logo.16

接下来,我进入引导文件系统以更改关键默认设置

mkdir ~knoppix/bootimg
chmod 664 /mnt/hda1/master/KNOPPIX/boot.img
mount -o loop /mnt/hda1/master/KNOPPIX/boot.img \
    ~knoppix/bootimg
cd ~knoppix/bootimg

从这里,我编辑了 syslinux.cfg。在 syslinux.cfg 中的第一行和第二行APPEND行,我必须将 VGA 值更改为vga=788然后插入命令screen=800x600 desktop=icewm。最后,在文件末尾,我删除了许多 # 号,以便最终文件的大小与我开始时的大小相同。然后我保存了结果。

现在是启动徽标的时候了,所以我输入了

ls -l ~knoppix/logo.16
ls -l logo.16

引导文件系统中的空间有限;如果新的徽标文件与旧的徽标文件大小相同或更小,那我就没问题,可以继续。否则,我必须返回并重新制作启动徽标以使其更小

mv ~knoppix/logo.16 .
chmod 744 logo.16

然后我必须编辑 boot.msg 文件中徽标下方显示的文本。我忽略了前两行,它们包含加载徽标图像的代码,并确保第三行包含少于 80 个字符。保存文件并退出后,我卸载了引导文件系统并重置了文件权限

cd ..
umount bootimg
chmod 444 /mnt/hda1/master/KNOPPIX/boot.img

为了修复壁纸,我使用了

cd /mnt/hda1/master/KNOPPIX
mv ~knoppix/knoppix.jpg background.jpg

如果我需要添加软件包,我会输入

wget <<url and name of required package>>
mv <<package name>> /mnt/hda1/source

由于 Knoppix 中压缩的古怪之处,可能会出现这样一种情况:在不添加或删除软件的情况下,您最终会得到一个过大的文件系统。所以我用以下命令删除了不需要的软件

chroot /mnt/hda1/source
dpkg -P <<name of an unneeded package>>

我摆脱了游戏、服务器和高端办公软件。每当我添加一些东西时,我都必须删除更大的东西。删除了这些项目后,我才能够添加 Flash 插件。许可条款禁止将插件文件与 Linux 发行版一起分发,因此为了解决这个问题,我在启动时下载并安装了 Flash 文件。为此,我编辑了文件 /usr/bin/install_flashplugin.sh;在第一个注释块之后,我输入了以下行sleep 30并将交互式行更改为interactive="no"。然后我保存了文件并退出了。

接下来,我创建了文件 /etc/rc5.d/S99flashplugin 并添加了以下行

#!/bin/bash
su - knoppix -c /usr/bin/install_flashplugin.sh &

并保存了文件。我使用以下命令修复了权限

chmod 644 /etc/rc5.d/S99flashplugin

完成此操作后,我按 Ctrl-D 退出 chroot,然后我删除了历史文件

rm /mnt/hda1/source/root/.bash_history
touch /mnt/hda1/source/root/.bash_history
chmod 600 /mnt/hda1/source/root/.bash_history

接下来,我启动了 Mozilla,编辑了书签,将默认主页设置为大会主页,并调整了默认设置。这些更改存储在 RAM 磁盘上;为了将它们移动到硬盘驱动器上,我使用了

cp -r ~knoppix/.mozilla/knoppix/ujixazk6.slt/*
↪/mnt/hda1/source/etc/skel/.mozilla/knoppix/
↪ujixazk6.slt
chmod -R 644 /mnt/hda1/source/etc/skel/.mozilla/
↪knoppix/ujixazk6.slt/*

现在我已经组装了软件,我创建了压缩文件系统

mkisofs -R -U -V "KNOPPIX.net filesystem" -P \
"KNOPPIX www.knoppix.net" -hide-rr-moved \
-cache-inodes -no-bak -pad /mnt/hda1/source | nice -5 \
/usr/bin/create_compressed_fs - 65536 > \
/mnt/hda1/master/KNOPPIX/KNOPPIX

在上述过程中,我收到并忽略了一条警告消息,即文件系统不是 ISO 9660。这个过程是缓慢的一步,在一台 Pentium II 350 上大约需要一个小时才能完成。之后,我将 CD 作为一个整体创建

cd /mnt/hda1
mkisofs -pad -l -r -J -v -V "KNOPPIX" -b \
KNOPPIX/boot.img -c KNOPPIX/boot.cat -hide-rr-moved \
-o /mnt/hda1/knx/knoppix.iso /mnt/hda1/master

从这里,我使用 LFTP 将生成的文件移动到支持盒,以便刻录到 CD-R 上。

在完善 Knoppix 时出现了一些问题,包括房间的布局、电源和路由器情况。在房间布局方面,我采用了大型矩形布置,为人们留出了足够的空间,使他们感到舒适,防止大多数电缆成为可能的绊倒危险,将交换机放置在远离恶作剧的地方,并为志愿者留出了一个相当安全的地方来存放他们的背包/包。必须穿过地板的电缆用厚重的布胶带覆盖以保持安全。这种布置的缺点是我只能在房间里放置大约 28 台机器。

在张贴房间规则之前,我咨询了大会志愿者律师 Ken Smookler。结果是一张纸,声明如果出现任何问题概不负责,并保留移除任何造成麻烦的生物的权利(使用“生物”这个词更多是出于对宠物而不是外星人的担忧,但在法律上它涵盖了我们两者)。

房间里没有足够的电力来支持 28 台以上的机器,所以在大会前一个月,我与大会现场的电工安排安装了额外的插座。在计算电力需求时,我假设每台 PC 5A(我正在看的 PC 的典型最大值)和每台显示器 2A。我知道 PC 不会消耗其额定最大值,所以我将有一个舒适的安全边际。所以我订购了安装 16 个 15A 电路(每个电路两台 PC 和两台显示器,一个电路用于交换机/集线器,一个电路用于笔记本电脑)。这是网络休息室大部分预算的去向,电力从来都不是问题。

对于路由器,我考虑使用 Coyote Linux 盒子,类似于我以前构建的那些。但是,使用自制路由器的问题是它会占用其他准备工作的时间。此外,处理故障需要的不仅仅是拿着收据跑到商店进行保修更换。因此,我从一家营业时间长的办公用品商店购买了一台基本的 D-Link 路由器/DHCP 服务器,该商店位于大会现场附近。

在大会前六天,我得知我将要得到的机器类型,并能够开始测试硬件。它们是配备 128MB 内存的 Pentium II 400MHz 盒子。KDE 可以在它们上面运行,但 IceWM 运行良好。在大会前四天,我得知必须在系统上列出一个新的赞助商。在大会前三天,机器运到了大会现场。在大会前两天,我从高级大会委员会成员 Lance Sibley 那里获得了最终的设置批准,我开始刻录 CD-R,为了以防万一,还刻录了一些备用 CD-R。

在计算机发货的当天,我收到报告说,一些机器在运输过程中被撞了一下,有两台机器在到达大会现场时出现了问题。尽管计划是拥有 28 台机器,但只有 26 台可用。在大会前一天,我与志愿者 Robert Eveleigh 和 Juan Sanmiguel 一起进行了设置。出现了一些问题,包括一个坏掉的交换机。一个打给我办公室的电话得到了更换,这使得有必要在附近的办公用品商店购买一根以太网交叉电缆。

大会一旦开始,网络休息室就在整个期间 24 小时运行。因此,我不能一直待在那里观看情况,一些非 Linux 管理员(包括 Robert 和 Juan)监控了房间。感谢 Knoppix,如果出现问题或异常情况,我可以告诉人们只需重置机器即可。由于没有使用硬盘驱动器,这是一个很好的解决方案。

A Temporary Internet Lounge

图 1. 休息室内部的视图,显示了中央广场。主要志愿者之一 Juan Sanmiguel 在图片右侧显示。

大会的无线访问曾被短暂考虑过,但由于包括成本在内的几个原因,这个想法被拒绝了。但这并没有阻止无线访问的发生。一位大会参会者 Keith Lofstrom 想要无线访问,他通过带来一个 802.11b 无线集线器来兑现他的承诺,这个功能被证明很受欢迎。

有人抱怨休息室相对于大会其他地方的位置。有些人希望我安装更多软件,包括 AIM 和 Yahoo 即时通讯客户端以及来自时间服务器的自动更新(有些 PC 时钟漂移)。还有人要求配备打印机,但建立一个支付系统来支付纸张/墨粉成本将是另一个重要的项目。

尽管如此,Mozilla 和 IceWM 并没有给这群人造成任何麻烦。计算机的唯一真正排队发生在雨果奖颁奖典礼之后,在此期间颁发了前几年最佳科幻作品的奖项。幸运的是,排队时间不长,而且大部分时间休息室都很忙,即使没有满员。总的来说,用户的反应是积极的,来自那些从未使用过 Linux 的人,包括一位说这是有史以来最好的网络休息室的人。

经验教训:即时通讯软件的需求让我感到惊讶,而被忽视的时间服务器需要在未来加以考虑。尽管如此,如果没有 Knoppix,快速设置机器和对设置进行调整的能力是不可能实现的。

Colin McGregor (colin@mcgregor.org) 在一家慈善机构工作,业余时间做咨询工作,并曾担任多伦多自由网络总裁。他还在多伦多 Linux 用户组新用户会议上做过演讲。他喜欢参加科幻大会,即使不总是在那里工作。

加载 Disqus 评论