我必须放弃什么兰西德泡菜已经说过,所有操作系统实际上都没有类似的喝倒采t过程。最值得注意的是,那些基于开放固件(斯巴达克,Macintosh电脑,PowerPC公司,等等)有一个完全不同的靴子程序。由于它是我唯一真正熟悉的,我将把Macintosh引导过程描述为例子.当mac第一次通电时,它会执行岗位车载代码只读存储器。这是非操作系统特定的代码,它生成启动声音并进行一些基本诊断。如果它发现了阻止它启动的问题,它将显示伤心的mac偶像。旧的mac用来玩死亡的钟声,这是一个不愉快的声音,表示发生了不好的事情(通常是公共汽车或内存问题)。否则快乐麦克图标显示,引导过程继续。
此时,ROM中的开放固件代码被执行。开放固件是一种抽象的查找和配置方法硬件使用计算机,从而绕过了基本输入/输出系统。在对内存和总线类型进行一些初始检查后,Open Firmware将探索所有附加的装置s.对于每个设备,它将查找F代码(设备代码写在Forth中)。硬件的ROMS中可以同时包含BIOS代码和FCode,因此Open Firmware需要通过检查FCode来确定硬件是否可以与Open Firnware系统一起工作。一旦找到合适的设备第四Macintosh ROM中的插入器执行设备ROM上的代码。设备上的FCode将初始化设备,并使其驱动程序例程可用于操作系统.
一旦找到所有可用设备,Open Firmware将创建一个设备树,列出操作系统可用的所有设备。然后打开固件将加载bootinfo(引导信息)文件(我相信这是唯一的苹果,从现在开始,OF可以采取不同的方式不同的系统),其中包含系统描述、可用的不同操作系统,偶像苹果的技术文档说,我还没有找到太多关于这方面的细节电气与电子工程师协会了解更多信息…)。该文件是根据ROM和非易失性存储器设置。完成后,Open Firmware将执行bootinfo文件的脚本部分,该部分加载蹦床代码(我想它之所以命名是因为它将您“弹回”到操作系统……)Macintosh工具箱.
此时,脚本将控制权转移到Trampoline代码,该代码充当从Open Firmware到操作系统让我们不要过多地研究蹦床代码,因为它令人难以置信复杂的我甚至不声称理解它,但基本上它会动态创建一个可执行文件,在两个不同的代码部分。蹦床代码将从开放固件收集系统信息,然后加载MacOS工具箱(大部分MacOS美国石油学会)并将控制权转移给它,从而启动MacOS。
在这一点上,我可能应该提到婴儿车.PRAM用于存储以下信息Appletalk公司、打印机和视频设置。在过去,它还存储启动盘。然而,在New World mac上,这一操作不再执行,而是将启动设备作为变量存储在开放固件的NVRAM中。当Open Firmware查找MacOS操作系统工具箱ROM,它将首先检查此变量指定的设备。接下来将转到最后一次启动装置。如果这两个都失败了,它将尝试加载任何其他可引导文件体积它可以找到。如果找不到任何启动卷,它将显示一个带有问号在上面。
假设它找到了要启动的卷,并加载了工具箱ROM,则将加载操作系统。初始化过程将加载系统然后按字母顺序加载所有扩展和控制面板。最后查找程序开始允许用户与操作系统交互。
新世界ROM
在第一次修订后发布的新款MaciMac电脑,包含已知的新世界ROM传统的mac设计有一个相当大的ROM,除了开放固件和引导程序外,还包含大多数Macintosh电脑工具箱。这是因为早在1984年,ROM就很便宜,皇家音乐学院价格昂贵,而且磁盘空间小,因此将其保存在ROM中是一个好主意。新世界ROM mac改变了这一切工具箱到系统文件夹中的文件。我相信MacOS 8.6是第一个包含这个ROM文件的操作系统。这在一定程度上改变了Mac的引导方式,因为Trampoline代码现在必须加载一个文件初始化后备箱。然而,在大多数情况下,它对我所知道的实际引导过程几乎没有影响。所以这是我目前的理解。信息是粗略地以及找出旧世界和新世界mac之间的差异靴子有点棘手。我仍在寻找资源来验证所有内容,我会在找到内容后更新此内容。我还试图找出其他操作系统在旧世界机器上的适用性Linux操作系统通过加载MacOS启动,此时系统扩展将终止MacOS并开始加载linux内核使用MacOS。在新世界的机器上,您可以直接引导到linux,但我不确定这一过程的哪一部分发生在。。。