与 Linux 共烹饪
现在的 Linux 用户日子过得很轻松。 当我刚开始接触这个系统时(大约在 0.12 版本左右),我们没有网络、文档、DOSEMU 或 XFree86 这些奢侈品。 我们没有“即插即用”的 Linux 发行版,介质从软盘到磁带再到 CD-ROM 各式各样。 当时只有两种所谓的“发行版”可供选择:H.J. Lu 经典的“启动/根”磁盘,或者当时流行的 MCC-Interim 版本——它包含了当时几乎所有的 Linux 软件,装在惊人的七张磁盘上。
如今,Linux 的开发已经进步到似乎没有什么具有挑战性的地步了。 以前运行 gcc 没有段错误会让我感到兴奋; 现在这已成为日常生活的一部分。(偶尔,
我会启动我古老的 0.95+ 内核,并尝试用 gcc-1.38 编译 Emacs,只是为了找回对着机器咒骂几个小时,屏幕上充满错误信息的兴奋感。) Linux 太容易了。 任何人都可以下载 Slackware,并通过 SLIP 线路运行自己的 WWW 服务器。 而且无需编译一行代码! 我告诉你,这很可悲。
为了充分体会 Linux 的强大功能,我认为所有新手都应该被迫重温过去的日子,那时“真正的黑客”的定义是那些为了徒劳地试图破译串行驱动程序的语义而熬夜的人。(可能是为了让串行奶酪刨丝器工作,但那是另一个故事了。) 如果不经历这种痛苦的、咬牙切齿的折磨,用户很容易将 Linux 开发人员无数小时的辛勤工作视为理所当然。
因此,我认为现在是时候对当前的 Linux 用户进行一次现实检验了,形式是一个简短的“你还记得吗?”测验。 在不过度怀旧的情况下,我们不妨说,如果你能记住这个列表中至少一半的项目,那么你就有资格称自己为 Linux 苦工——他们有权坐下来喝咖啡,同时你的 Linux 机器用 TeX 格式化你的论文,重新编译 libc,并同时为东欧大部分地区提供匿名 FTP 访问。
请注意:以下列表中的某些项目可能会勾起痛苦的回忆。 如果你过于感伤或有小孩,你可能需要考虑翻到下一页——现在就翻。
1. ...comp.os.linux? 好的,这是一个简单的,但自从——现在是什么来着?——五个 Linux 新闻组激增以来,我们中的一些人可能已经忘记了在一个与 Linux 相关的 Usenet 论坛中度过一个星期五晚上——划掉,应该说整整一周——来赶上文章是多么令人愉快了。 除非你的 killfile 比特里·普拉切特的作品集还大,否则你根本无法全部跟上。 而那些错过了“重要”帖子,例如新内核发布公告,或每周一次的“Linux 已过时”口水战的忠实读者,则只能自认倒霉。
最终,Linux 社区变得聪明起来,并决定创建 comp.os.linux.announce,并在六个月后创建了当前一系列 Linux 群组。 那时,c.o.l 上近 50% 的帖子都是要求新闻组分裂的,所以这是不可避免的。
奖励问题:如果你还记得 comp.os.linux,那么它的前身 alt.os.linux 呢? 或者,comp.os.minix 上出现的第一个 Linux 帖子呢? (如果你能记住这个,那么你真的是一个 Linux 黑客。 要么就是你花太多时间阅读 Usenet。)
2. ...当主要的 Linux FTP 站点是 banjo.concert.net 时? 没错——早在 SunSITE 仅仅是一台台式计算器之前,就有了 banjo。 当时运行 banjo 的 Alan Clegg 最终被迫从该机器上删除 Linux 存档,因为它们需要太多的磁盘空间——整整 45 兆字节。 更糟糕的是,每天有几十个 FTP 登录。 这对这台可怜的机器来说太过分了,所以 banjo 不得不放弃。
SunSITE 进入 Linux 世界部分归功于 Jon Magid(你还记得他吗?)被聘为 Sun Microsystems 资助的新 FTP/Gopher/WAIS/WWW 站点的系统管理员。 Sun 允许 SunSITE 管理员从新机器上提供他们希望的任何有趣的资讯,因此 Jon 将 banjo 的整个 Linux 存档复制了过来。
从那时起,SunSITE 上 Linux FTP 的使用量呈惊人增长。 那里的 Linux 存档现在需要超过 640 兆字节的磁盘存储空间。 在典型的一天里,可能有 2,500 次 Linux FTP 登录,总共下载大约 43,000 个 Linux 文件。 如果你计算所有 Linux 相关的 FTP 流量,包括 SunSITE 的众多镜像站点以及其他主要的 Linux 存档站点,我相信你会有足够的统计数据让 NSF 真正头疼。
3. ...Minix 文件系统? 这种文件系统在相当长一段时间内一直是(也许现在仍然是)Linux 黑客的最爱。 别忘了,它最初是内核唯一支持的文件系统类型,并且它将分区大小限制为 64 兆字节。 Linus Torvalds 在 Minix 下开始了 Linux 内核的开发,Minix 是 Andy Tanenbaum 在操作系统书中介绍的学术 Unix 克隆。 因此,实现 Linus 拥有源代码的 Minix 文件系统是非常合理的。 有一个有趣的轶事(或者我们应该说是“传说”?),Linus 不小心破坏了他的一个 Minix 文件系统——碰巧该文件系统包含了他系统上的整个 Linux 内核源代码树。 Linus,作为 Minix 文件系统向导,设法手动修复了损坏的超级块,并节省了无数小时的工作。 一切都挽救回来了。
4. ...Ross Biro 和 Linux TCP/IP 代码? 早在 Linux 内核的早期(令人难以置信的两年前),Linux 内核中根本没有网络支持。 许多用户被迫启动 MS-DOS(或某些其他操作系统)来连接网络——其他人则求助于更过时的方法,例如(天哪)UUCP。
第一代 Linux TCP/IP 代码(现在被称为“NET-1”,但那是一个追溯的头衔)是由许多人开发的,Ross Biro 是最重要的人物之一。 尽管它支持的硬件范围有限(当然只有以太网——SLIP 是不可能的),而且远非完美,但当时确实令人印象深刻。 好吧,也许我应该换一种说法。 在熬夜将 alpha TCP/IP 代码破解到我的,呃,“个性化”内核中之后,你最好相信我印象深刻。 在与编译错误和内核崩溃搏斗了一整夜,双眼充血,筋疲力尽之后,我记得当第一缕曙光穿过窗户时运行了 telnet——它成功了! 当然,内核在五分钟后崩溃了,但这对我来说已经足够了。 “登录或崩溃!” 是我那天晚上的座右铭。
Ross 是 Linux TCP/IP 套件开发的关键人物之一,与 Don Becker 和其他人一起。 然而,随着越来越多的 Linux 用户试图使用他们的代码,越来越多的问题开始出现——不可避免地导致 Ross 的邮箱充斥着无端的抱怨和谩骂。 不久之后,Ross “缴械投降”,厌倦了 Linux 用户社区的不当对待。 Linux 开发工作在那一天失去了一位重要的参与者。(这个故事的寓意是什么?我忘了。)
5. ...鞋带? 这些是短绳或细绳,用于系鞋带,最终被尼龙搭扣淘汰。 等等! Shoelace 实际上是 LILO 的前身,众所周知,LILO 是 LInux LOader,负责启动 Linux(以及你可能安装的任何其他操作系统)。 Shoelace 最初是从硬盘驱动器启动 Linux 的唯一方法——当时大多数 Linux 用户都使用内核软盘。 使用 Shoelace 需要什么? 确切的细节已经淹没在历史的长河中,但我确实记得必须手动修改内核镜像的 508 和 509 扇区,以便设置根文件系统设备。(事实上,即使你不使用 Shoelace,这也是必要的——但手动编辑内核镜像是 Linux 老手总是喜欢吹嘘的事情。)
与 Shoelace 相关的另一个警告是,它只能在 Minix 下重新编译。 事实上,Linux 内核曾经也有同样的命运:必须安装 Minix 才能编译 Linux 内核——并且,曾经,甚至安装 Linux 软件。(这个时期对 Linux 来说就像欧洲历史上的黑暗时代。 当然,不包括饥荒和文化停滞。)
6. ...最初的 Linux FAQ? (也许这个问题应该读作,“你想回忆起最初的 Linux FAQ 吗?”) 最初的 Linux 常见问题列表由 Marc-Michel Corsini 协调(尽管第一个版本是由 Robert Blum 发布的)。 它是一个庞然大物般的文件。 作者和贡献者的名单多达数十人,错误和不一致之处的数量也超过了这个数字。 这是一项英勇的努力,请注意——事实上,我维护,或者试图维护 FAQ 的几个部分,然后才放弃。 最终,当该文档接近临界质量(800K 左右)并且每月发布不少于 7 个部分时,每个人都同意它太长且过时,无法再维护下去。 Ian Jackson 从头开始重写了 FAQ,我们启动了 HOWTO 项目来收拾残局。 从那时起,事情就相对顺利了。
我存档的原始 FAQ 的最后一个版本来自 1993 年 7 月,正好在 Ian 重写和当年夏天 comp.os.linux 新闻组分裂之前。 当时在 Linux 用户可能还记得以下经典摘录,这两段摘录都归功于 Marc-Michel Corsini
“此帖子的最后更改日期始终是“两分钟前”。 :)”
“FAQ 包含大量信息,有时我以 3 种不同的方式写下来,因为人们似乎不理解他们所读的内容(或者我写的内容,你知道我只是一只小青蛙,英语不是我的母语)。 我的意思是,并非所有内容都在 FAQ 中,但其中包含了很多内容,所以请花时间阅读它,这将为其他 Linux 用户节省大量时间 [如果您认为我应该改写一些问答,请给我发一份包含更正的说明]。”
这个列表可以继续列下去,但我相信现在我已经说明了我的观点。 事实上,大多数 Linux 用户不会记得 Linux 开发的那些重要里程碑,例如,哦,VFS 层的引入、共享库的原始实现以及扩展文件系统的第一个版本。 但就让往事随风吧。
如果这次对 Linux 历史黑暗编年史的短暂回顾教会了你一件事,那就是你应该感谢那些不顾一切的先驱者,他们为了微薄的收入工作,为大众开辟了道路。 你知道,他们不得不手动编辑他们的内核镜像,并在雪地里赤脚走五英里路,只是为了上传最新的补丁集。
下次当你考虑抱怨通过 NFS 从巴拉圭的远程 Linux 机器运行 Lucid Emacs 19.05 似乎无法正确显示背景颜色时,你就知道该感谢谁了。
Matt Welsh (mdw@sunsite.unc.edu) 是一位人工智能,它被编程为时不时地对 Linux 社区做出有些离谱的观察。 欢迎评论和问题; 作者可以通过互联网电子邮件或纸质邮件联系,地址为:Linux Journal。