好吧,我从 80 年代末就开始接触计算机了(实际上我 3 岁左右)。尝试了各种操作系统:Atari Xl-XE、MS-DOS、Windows 3.1、95 等。然后开始使用 Linux,因为它的外观(是的,我知道,复合融合是探索 Linux 的真正原因),现在已安装在我所有的机器上。我什至在 Windows 10 中也有过它。
我以前从头开始组装过机器,你总是可以启动到“MS-DOS”,这就是我记得的,这让我感到好奇。
早在 80 年代或 70 年代后期,Unix 是如何安装的(我什至还没有活着)?它是像启动大软盘或涉及黑魔法这样的小事吗?
碰巧我找不到任何关于它的参考资料,而我的国家的人们就是不了解自由软件。
编辑:
我跳过了一个关键部分,我觉得很愚蠢,因为我一开始就没有考虑到这一点。
一切都从启动顺序开始,它不是操作系统,而是在 ROM 内存中,例如 BIOS(在我看来,这是一个非常简约的机器配置操作系统)和其他内容,例如启动顺序。在此阶段,它将查找 BIOS 中列出的设备,然后按顺序迭代它们,直到一个设备响应启动指令,就像磁带中的设备一样。因此不需要初始操作系统,可以安装 Unix。
愚蠢的错误会让你走很长的路,但你肯定会学到更多。
答案1
我在 80 年代安装 Unix 的经验是在 PDP-11 上,安装过程实际上非常有趣。事实上,我今晚(在模拟器上)做到了,这是多年来的第一次......
PDP-11 的 Unix V7 以磁带形式分发。磁带里有几个文件,一个接一个。
- 磁带上的第一个文件是引导加载程序。它分为两部分。第一部分是引导块,它只知道引导加载程序的第二部分从磁带读入内存,然后将控制权转移给它。该代码少于 512 字节。第二部分更大,它有针对几种不同类型的磁盘和磁带的精简“独立驱动程序”,并且它对 Unix 文件系统有足够的了解,能够在磁带上或根目录中查找文件硬盘驱动器上的文件系统,加载它们并运行它们。引导加载程序的完整大小(两部分的总大小)约为 8K 字节。
- 磁带上的第二个文件是一个独立的
cat
程序。当我说“独立”时,我的意思是它直接在裸机上运行(根本没有任何操作系统);它是使用与引导加载程序相同的独立设备驱动程序和文件系统驱动程序编写的。您可以使用引导加载程序加载并运行它。当它启动时,你告诉它你想从哪个设备读取文件,以及读取哪个文件。它读取它,打印出来,然后退出。这就是它的全部作用。这的用处有限。 - 磁带上的第三个文件只是一个文本文件,其中列出了磁带上的文件。几乎没有人看过这个。如果您使用其中一盘分发磁带,您几乎已经知道上面有什么内容了......
- 磁带上的第四个文件是一个独立的
mkfs
程序。它是使用与其他独立程序相同的独立设备驱动程序和文件系统驱动程序库构建的,并且它也运行在裸机上,没有操作系统。您可以使用引导加载程序加载并运行它,它会询问您想要在哪个磁盘(和分区)上创建文件系统,以及文件系统应该有多大,然后它会在上面写出初始文件系统结构您指定的设备和分区。然后它就会退出。 - 磁带上的第五个文件是一个独立
restor
程序(是的,很像creat()
系统调用,restor
拼写时没有“e”......)。您可以使用引导加载程序加载并运行它。同样,它在裸机上运行,没有操作系统。它会要求一个包含文件系统转储的磁带文件,以及一个用于恢复它的磁盘分区。然后,它就会这样做。然后它就会退出。 - 磁带上的第六个文件只是根文件系统的文件系统转储。
- 磁带上的第七个文件只是 /usr 文件系统的文件系统转储。
就是这样 - 这就是你得到的。
所以,如果你有这盘磁带,你就必须以某种方式开始这个过程。一些 PDP-11 具有引导 ROM,知道如何从设备(如磁带或磁盘)加载第一个块并跳转它。 (对于这个磁带,第一个块是小于 512 字节的可执行代码,它知道如何加载引导加载程序的其余部分。)但是,我使用的第一个 PDP-11 没有引导程序 ROM。每次启动机器时,我们都必须输入启动代码以加载设备的第一个块并跳转到它。用手。以二进制形式...幸运的是,它非常短(例如,读取 TU16 或 TE16 磁带驱动器的第一个块并跳转到它的代码只有 6 个字或 12 个字节),并且我们有启动代码写在贴在机器上的一张纸上。不用说,我们尽最大努力不惜一切代价避免重新启动机器......
因此,考虑到所有这些......安装系统的一般过程是:
- 使用引导 ROM(或手动键入引导代码...)将所谓的“零块引导加载程序”加载到内存中,然后用于加载引导加载程序的其余部分。
- 使用引导加载程序加载独立
mkfs
程序(磁带上的第四个文件),以在硬盘分区上奠定根文件系统的结构。 - 使用引导加载程序加载独立
restor
程序(磁带上的第五个文件),将根文件系统(磁带上的第六个文件)的文件系统转储恢复到硬盘上。 - 使用引导加载程序从硬盘驱动器上根文件系统中的文件(刚刚从磁带恢复)中加载 Unix 内核,并将控制权转移给它。至此,Unix已经运行起来了。
- 使用普通的 Unix
mkfs
和restor
命令在硬盘的另一个分区上创建 /usr 文件系统,并将 /usr 文件系统的文件系统转储恢复到您刚刚准备的分区。
然后,除了将引导代码安装在硬盘上的第一个磁盘块中之外,您已经基本完成了(因此您的引导 ROM 或您手动输入的引导代码可以在您重新启动系统时运行它),一些系统调整项目,并按照您想要的方式设置一些东西。
在 20 世纪 70 年代和 1980 年代的很长一段时间内,许多 Unix 发行版都安装了这样的程序。 Berkeley Unix(4.2BSD及更高版本)提供了具有非常相似结构的分发磁带,以及非常相似的安装过程。
如果您想查看 Charles Haley 和 Dennis Ritchie 自己在 PDP-11 上安装 V7 Unix 的说明,您可以找到它们这里。我今晚只是按照这些说明进行操作,它们工作得很好。 ;-)
答案2
在我的第一份工作中,早在 1989 年,我们使用 3.5 英寸(约 9 厘米)软盘将 Unix(交互式,当时由柯达拥有)安装到 Intel 386 PC 上。
答案3
我想你是在问如何初始安装Unix 的执行。那个时代的许多计算机都被设计为运行 Unix,并在硬盘或软盘上预装了操作系统。安装只是提供包含正确内容的磁盘的问题。
但你可能会问,系统启动时通过什么方式将操作系统安装到内存中呢?
这是一个例子。 AT&T 3B1 又名“Unix PC”有一个包含引导程序的 ROM,地址为 800000-BFFFFF。当系统复位时,其Motoroloa 68010 CPU从000000-2加载堆栈指针,从000004-6加载程序计数器并跳转。在复位期间,硬件强制地址位 23 为高电平,有效地将 ROM 映射到主存储器,因此系统实际上是在 ROM 中运行程序。 ROM 中的程序初始化不同的硬件组件,运行一些诊断程序,并通过加载和运行引导块从软盘或磁盘加载操作系统。引导块中的代码将加载内核并开始执行init
,就像现代系统一样。
(手册中的更多信息,请参阅 Philip Pemberton 的镜子AT&T 3B1 模拟器)
理论上你可以利用这些知识在诸如机器上安装 Unix 以外的东西。但并不总是存在像 PC 上的 BIOS 这样的硬件抽象层,因此启动的程序必须与硬件更紧密地耦合。
答案4
在 PC (IIRC) 上,Interactive Unix 的安装是通过启动软盘完成的,然后从磁带完成“真正的”安装。请注意,您的 SCSI 卡必须受交互式支持。
在 HP 工作站上,您从磁带/DAT 启动并安装。