这一切都始于 1980 年代中期,我的父母为我们家购买了一台 Apple ][c。虽然我喜欢玩游戏,但我很快就被 BASIC 编程迷住了,以及它在工作和娱乐方面的用途。那是一个计算机被视为不过是打字机的时代,因此具有“高级计算机技能”的人可以轻松地利用它们来发挥自己的优势。
一个例子是使用 BASIC 和点阵打印机自动生成惩罚作业。当我被指派写 200 遍道歉声明时,我问我的老师是否可以打印出来。在得到确认后,我编写了一个 5 行 BASIC 程序为我生成它。另一个巧妙的诡计的例子是使用非 WYSIWYG 文字处理器,例如 AppleWorks,对字体、行距和页边距进行微调,以将学期论文“拉伸”到要求的长度。
我对计算机的痴迷很快导致了一台带有 RAM 驱动器卡和 x86 PC 协处理器卡的 Apple ][gs。调制解调器和 BBS 变得热门,拥有像这样的双硬件系统为我提供了各种软件选择。然而,2400bps 的调制解调器速度确实抑制了每天获得超过几 KB 有趣下载的可能性。我坚持将 Apple 作为业余爱好了一段时间,但这很快就要改变了。
冒险进入 Unix
我的本科学位是计算机信息系统 (CIS) 理学士,我的研究生学位是计算机科学硕士。我的本科教育课程主要让我接触 PC 和少量分时大型机。真正的乐趣始于我的研究生课程,在那里,拨号访问连接互联网的 Unix 机器打开了一个全新的探索世界。虽然我仍然使用我的双处理器 ][gs 进行调制解调器工作以及论文的写作和打印,但 Unix 系统以其通用访问的基于 Telnet 的游戏、FTP 档案、在线电子邮件和 C 编程真正吸引了我的注意力。Gopher 在像我这样受限于纯终端界面的人中很受欢迎并且不断发展。
当我被分配到学术计算部门时,我的研究生课程发生了命运攸关的转机,该部门负责为学校运行计算机服务。学生可以使用基于 Ultrix 的系统和 X Window 终端。大多数是灰度的,因为彩色处理在当时是一项 CPU 密集型任务,并且确实会影响系统性能。少数彩色系统很不错,但这些机器速度太慢了。
对于我来说,这是一段非常有趣的时光,因为我被授予了系统的 root 访问权限,并被分配到系统和网络维护工作。我有一些优秀的导师,这强烈影响了我决定从事系统管理而不是编程的决定(尽管我至今仍然非常热爱编程)。
从 Unix 到 Linux
稀缺是发明的动力之母,当我们需要共享学校计算机系统稀缺的资源时,我们学生经常会变得富有创造力。我们的学生数量是 Ultrix 工作站的三到五倍,因此寻找资源(尤其是在项目交付时间)通常是一个挑战。当不需要图形显示时,可以使用一组 56k PPP 调制解调器进行远程系统访问。然而,找到一台具有空闲资源的机器并共享系统进行源代码编译通常会导致进展缓慢。像大多数人一样,我发现晚上工作通常会有所帮助,但我需要其他东西让我更快地迭代。
然后,学校的一位系统管理员建议我查看一个免费提供的 Unix 系统。这就是 Linux,以 3.5 英寸软盘映像的形式提供。鉴于我们学校的极速 T1 线路,我可以轻松地搜索新闻组和其他来源来学习如何下载它。它完全基于 32 位 Intel PC,这是一个我没有拥有的设备类别。
幸运的是,我在学校的工作让我可以接触到旧电脑的垃圾堆,所以轮子开始转动了。
我找到了足够多的废弃 PC,组装了一台坚固的 80386 PC,配备了一些不错的 RAM(我确信远低于 1GB)、一个可用的图形显示器、一个细缆(同轴)以太网卡和一个硬盘。我拥有的映像是 Linux 内核 0.98,我不记得它是官方发行版的一部分(可能是 SLS)。我记得的是,它是在一系列软盘映像上提供的——第一个启动内核和一个最小安装程序,接下来它格式化驱动器,然后它要求提供每个连续的软盘映像来安装核心 GNU 实用程序。在核心安装完成并且系统可启动后,您将下载并安装其他软件包映像,例如编译器等。
这对我来说在我的学术生涯中是一个巨大的福音。在没有运行 X Window 服务器显示的情况下,这台 PC 的性能严重优于我在学校可以访问的 Ultrix 工作站。我被允许将这台机器连接到学术网络,挂载学校的学生网络文件系统 (NFS) 共享,并直接访问互联网。由于我的研究生课程主要使用 GCC(有时是 Perl 4)进行学生作业,因此我可以在本地完成我的开发工作。这让我独占访问了一项关键资源,使我能够更快地迭代我的项目。
然而,一切并非完美。硬件有点不稳定(很可能是它被丢弃的原因),但我可以处理这个问题。真正困扰我的是 Linux 和 Ultrix 在操作系统和系统库级别上的差异有多大。我开始体会到将软件移植到其他平台意味着什么;我可以自由地在任何地方进行开发,但我必须将我的项目作为 Ultrix 编译的二进制文件交付。在一个平台上完美运行的 C 代码在另一个平台上会崩溃。这非常令人沮丧,但可能我最粗鲁的觉醒是早期 Linux 处理空指针解引用的方式。Linux 似乎乐于将这些作为虚拟的空操作传递,但 Ultrix 会立即在 SIGSEGV 上转储核心。当我在项目到期前几天发现我的第一个端口到目标平台时,这真是一件大事!这也让我对 C++ 的探索非常具有挑战性,因为我不小心使用 malloc()/free() 以及自动 构造函数和析构函数 处理,使我的项目到处都是空指针炸弹。
在我的研究生课程即将结束时,我升级到了一台完整的野兽级工作站——一台 Intel 486DX2 66MHz,配备 SCSI 硬盘驱动器、CD-ROM 驱动器、1024x768 RGB 显示器和一块与我的新 US Robotics V.Everything 调制解调器完美匹配的 16550 UART 串行卡。它可以双启动 Windows 和 Linux,但更重要的是,显卡和处理器允许更愉快(和更快)的开发环境。旧的 386 仍在学校服役,但我的大部分繁重工作和黑客行为现在都发生在家里。
与 Mike Harris 关于 90 年代 Linux 的故事 类似,我真的很喜欢当时流行的那些 CD 包。在我住的地方附近有一家新的 Micro Center 电脑商店,那里是业余 PC 零件、非凡的技术书籍以及各种可以想象的 Linux(和免费 Unix)CD 档案的金矿。我记得 Yggdrasil 和 Slackware 是我最喜欢的发行版之一。真正令人难以置信的是 CD 存储的巨大容量——650MB!这是获取软件的重要资源。是的,您可以以 56k 的速度下载位,但这非常有限制。更不用说大多数人买不起存档那么多闲置数据以供以后细读。
直到今天
这就是开启我超过 25 年的系统管理和开源软件乐趣的原因。Linux 一直是我职业生涯和个人发展的重要组成部分。如今,我仍然沉迷于 Linux(主要是 CentOS、RedHat 和 Ubuntu),但也经常玩 FreeBSD 和其他很酷的开源产品。
我对 Linux 的探索使我来到了 Opensource.com,我希望在这里回馈一点,并帮助引导新一代的计算机实践乐趣。
5 条评论