UNIX:老派作风
有些人称我“年纪轻轻就怀旧”,我想这很准确。我出生于 1976 年,一直对早期小型计算机和大型机历史有着强烈的兴趣。我认为有记录的历史本身就是人类存在的最重要的创新。我们人类似乎有一种与生俱来的冲动,去记录、传承和学习前人的错误和成功。开源软件是这一概念应用于计算机技术的自然演变。在开源理念中,我们都可以自由地学习前人创造的大量软件。通过研究一个项目的演变,我们可以从他人的错误中吸取教训,或许最重要的是,可以逐字逐句地复制他们的成功经验。通过利用这种免费提供的历史以及不受限制的合作,我们促进了共同利益。
最近,各公司已开始放松对早期计算“知识产权”的控制。尽管有些公司尚未完全拥抱开源,但这些有时很小的象征性姿态为我们提供了丰富的知识。在本文中,我重点介绍如何通过在我们自己的 Linux 机器上使用模拟器运行“历史悠久”的 UNIX 版本来探索早期操作系统历史。SCO 集团(是的,“他们”,以前是 Caldera, Inc.)声称拥有早期 UNIX 的当前所有权,并已在“Ancient Unix”许可下发布它们,该许可允许非商业用途。我在此重点介绍 UNIX V5 版本,因为它是最早可用的版本。UNIX V6、V7 和各种早期 BSD 版本也可用。如果您计划试用这些操作系统中的任何一个,请在启动它们之前检查每个操作系统随附的许可证。
异域奇遇:UNIX V5 用户环境
与现代丰富多彩的 UNIX/Linux 系统相比,磁盘镜像中提供的 UNIX V5 系统相当简陋且不友好。以下是一些入门提示
sh 是 shell。它只有 858 行 C 代码;不要期望它像 bash 那样工作。
使用chdir来更改默认目录。
退格键和方向键很少起作用。
ed 是文本编辑器;请参阅 en.wikipedia.org/wiki/Ed。
bas 是 basic 解释器。
fc 是 FORTRAN 解释器。
cc 是 C 编译器。
源代码位于 /usr/source 中。
文件不多,因此请使用find / -print查看还包含哪些内容。
为了探索这些操作系统,我们需要能够在常用的计算硬件上运行它们。幸运的是,我们有用于此目的的模拟器。由于其质量和深度支持,最流行的模拟器之一是 SIMH,可从 SIMH 网站(请参阅在线资源)获得。SIMH 可在每个流行的 *nix 操作系统以及 Microsoft Windows 上运行,并且能够模拟各种早期计算机系统,包括数字设备公司 (Digital Equipment Corp.) 的 PDP 和 VAX 系统、MITS Altair、早期 IBM 系统等等。一些最具历史意义的系统是 DEC 的 PDP 系列,UNIX 的诞生系统。
SIMH 是一个从头开始构建的系统模拟器;它模拟了许多早期计算机系统的 CPU、内存、固件和设备。这意味着原始分发的软件可以在这些模拟系统上未经修改地运行。SIMH 成功地模拟了磁盘、磁带驱动器、打印机和网络设备等设备。这意味着我们不仅可以运行这些历史悠久的系统,还可以使用现代技术和协议与它们通信并传输数据。非常感谢 SIMH 的贡献者。他们决定以开源方式贡献和发布,这进一步增进了我们对历史的理解,并保证这段历史将永远免费。
下载最新的 SIMH 版本,在撰写本文时为 V3.4-0,编译并安装。如果您想使用以太网仿真,您可能需要升级与您的操作系统捆绑在一起的 libpcap 库,因为目前分发的大多数版本都太旧了。SIMH 安装文档解释了如何执行此操作,如果您不打算在模拟机器上使用网络支持,则可以跳过此步骤。编译可以由任何用户完成,并且非常简单,只需
$ mkdir simh $ cd simh $ unzip /path/to/simhv34-0.zip $ mkdir BIN # Note all CAPS $ gmake USE_NETWORK=1 all # Only include USE_NETWORK=1 if your PCAP lib is up to date. (compilation chatter omitted) $ ls -l ./BIN/ total 11624 -rwxrwxr-x 1 matt matt 301959 Jul 16 18:45 altair -rwxrwxr-x 1 matt matt 482274 Jul 16 18:45 altairz80 -rwxrwxr-x 1 matt matt 529317 Jul 16 18:44 eclipse -rwxrwxr-x 1 matt matt 297590 Jul 16 18:45 gri -rwxrwxr-x 1 matt matt 375737 Jul 16 18:44 h316 -rwxrwxr-x 1 matt matt 577678 Jul 16 18:44 hp2100 -rwxrwxr-x 1 matt matt 355225 Jul 16 18:44 i1401 -rwxrwxr-x 1 matt matt 381672 Jul 16 18:45 i1620 -rwxrwxr-x 1 matt matt 441079 Jul 16 18:46 ibm1130 -rwxrwxr-x 1 matt matt 502037 Jul 16 18:46 id16 -rwxrwxr-x 1 matt matt 508378 Jul 16 18:46 id32 -rwxrwxr-x 1 matt matt 294614 Jul 16 18:46 lgp -rwxrwxr-x 1 matt matt 434940 Jul 16 18:44 nova -rwxrwxr-x 1 matt matt 345034 Jul 16 18:41 pdp1 -rwxrwxr-x 1 matt matt 752055 Jul 16 18:43 pdp10 -rwxrwxr-x 1 matt matt 1055376 Jul 16 18:43 pdp11 -rwxrwxr-x 1 matt matt 474153 Jul 16 18:42 pdp15 -rwxrwxr-x 1 matt matt 459203 Jul 16 18:41 pdp4 -rwxrwxr-x 1 matt matt 460363 Jul 16 18:41 pdp7 -rwxrwxr-x 1 matt matt 499473 Jul 16 18:42 pdp8 -rwxrwxr-x 1 matt matt 467662 Jul 16 18:42 pdp9 -rwxrwxr-x 1 matt matt 352233 Jul 16 18:45 s3 -rwxrwxr-x 1 matt matt 429312 Jul 16 18:46 sds -rwxrwxr-x 1 matt matt 982694 Jul 16 18:43 vax
这将构建所有可能的系统模拟器。每个模拟器都成为 ./BIN/ 目录中的一个单独的二进制文件。SIMH 可以作为任何普通用户运行,但如果您想使用以太网网络模拟,您需要以 root 用户身份(在 UNIX 下)执行它,以允许 libpcap 访问以太网设备。
UNIX V5 于 1974 年 6 月发布,在贝尔实验室的 UNIX 开发中仍处于早期阶段。系统的大部分仍然是用汇编程序编写的。此磁盘镜像包括一个可工作的 C 编译器 (cc) 和大量有趣的源代码,位于 /usr/source 下。要开始我们的探索,我们必须下载 UNIX V5 磁盘镜像(请参阅资源)。此 zip 存档包含预安装的镜像文件以及 README 和包含许可证信息的文件。磁盘镜像是一个正在运行的已安装系统的快照。在本例中,它模拟的是一个 RK05 磁盘驱动器。我们现在必须收集启动此系统所需的组件。首先创建一个目录,然后从 SIMH 构建目录下的 BIN/ 目录中复制 pdp11 二进制文件,以及 uv5swre.zip 存档的解压缩内容。然后,使用您选择的编辑器创建一个 pdp11.ini 文件来控制模拟器,并将以下行放入 ini 文件中
set cpu U18 attach rk0 unix_v5_rk.dsk boot rk0
这告诉模拟器要模拟哪种类型的 CPU,并将 unix_v5_rk.dsk 文件作为模拟的 RK 样式磁盘连接,使用 rk0 设备名称。最后,此文件告诉模拟器启动该磁盘上的操作系统镜像。
您的模拟器目录应如下所示
-rw-rw-r-- 1 matt matt 12299 Jan 24 2002 AncientUnix.pdf -rwxrwxr-x 1 matt matt 913614 Jul 22 19:33 pdp11 -rw-rw-r-- 1 matt matt 47 Jul 22 23:59 pdp11.ini -rw-rw-r-- 1 matt matt 263 Nov 25 1996 README.txt -rw-rw-r-- 1 matt matt 2494464 Jul 23 00:39 unix_v5_rk.dsk
要启动 UNIX V5,只需输入./pdp11在当前目录下,然后在提示时输入unix在 @ 提示符下。您几乎会立即获得 login: 提示符;在这些旧 UNIX 中,启动消息不多。没有 root 密码,因此您将被赋予命令提示符。您的会话可能如下所示
$ ./pdp11 PDP-11 simulator V3.4-0 Disabling XQ @unix login: root # ls -l / total 60 drwxr-xr-x 2 bin 944 Nov 26 18:13 bin drwxr-xr-x 2 bin 80 Nov 26 18:13 dev drwxr-xr-x 2 bin 240 Mar 21 12:07 etc drwxr-xr-x 2 bin 224 Nov 26 18:13 lib drwxr-xr-x 2 bin 32 Nov 26 18:13 mnt drwxrwxrwx 2 bin 112 Mar 21 12:11 tmp -rwxrwxrwx 1 bin 25802 Mar 21 12:07 unix drwxr-xr-x 14 bin 224 Nov 26 18:13 usr # chdir /usr/source/s1 # cat echo.c main(argc, argv) int argc; char *argv[]; { int i; argc--; for(i=1; i<=argc; i++) printf("%s%c", argv[i], i==argc? '\n': ' '); } # cc echo.c # mv a.out newecho # ./newecho Hello World Hello World # chdir /tmp # cat >hello.c main() { printf ("Hello World!\n"); } # cc hello.c # ./a.out Hello World! # cat >hello.b 10 print "Hello World!" # bas hello.b run Hello World!
就是这样;您已启动并运行。您已正式接触到“真正”的历史 UNIX 系统。如您所见,有大量的源代码可供查看,还有一个可工作的编译器可供使用。UNIX V5 只是您可以使用 SIMH 探索的早期操作系统之一。在 SIMH 网站上,您将找到其他系统的磁盘镜像存储库。
如果您有兴趣了解 PDP-11 系统和 RK05 磁盘的实际外观,请查看 SIMH 网站上的照片库(请参阅资源)。此外,尝试在 Google 图片中搜索大量精美的照片。
本文资源: /article/8587。
Matthew Hoskins 是新泽西理工学院的高级 UNIX 系统管理员,他在那里维护着许多公司管理系统。他喜欢尝试让截然不同的系统和软件协同工作,通常使用薄薄的一层 Perl(在当地被称为“MattGlue”)。当不破解系统时,他经常可以在厨房里破解美食。可以通过 matt@njit.edu 联系 Matt。