小议Mac OS Classic的底层架构与Macintosh的固件沿革

请注意:本文章发表于 2018年9月19日 ,已经超过一年,其内容可能已经过期。对于发表时间较久的文章,本站不能在准确性和质量方面做出保证。虽然仍然欢迎提出改进建议,但一般不再维护,敬请谅解。

Mac OS Classic是早期图形界面OS的先行者,而Macintosh人机友好的交互模式也是市场的开创者之一,奠定了Mac电脑一派相承的操作基础。你是否了解Mac OS Classic系统的底层架构,与底层架构下硬件固件的历史沿革?本文将向你做更多介绍,这将帮助你更好地玩转苹果老机。


Mac OS系统架构

Mac OS最初被称作「系统软件」,随着1980年代的Macintosh们横空出世。它的设计宗旨为一切极简图形化,只需要一个鼠标,即可轻松玩转Macintosh。在这个设计宗旨下,第一代Macintosh电脑带来了最初的Mac OS,这是一个单任务单用户操作系统,用户只需要对着窗口、图标和文字打交道,而没有设计命令行界面。这一宗旨贯穿所有Mac OS Classic系统。

Mac OS Classic的核心系统架构为Toolbox。在Toolbox的基础上,硬件会加载系统、系统扩展、控制板等系统资源和应用程序。Toolbox作为最底层的组成部分,承担固件功能并且提供一些Manager、实用工具、库与API等基本功能;系统资源在Toolbox上加载,提供用户界面和基本的功能,也提供一些功能供应用程序差遣。要正常启动一台Macintosh,ROM与系统这两个部分是必须的,缺一不可。而其他部分,系统扩展通过系统的接口,增强和添加功能,或者驱动硬件功能;控制板则自定义一些功能。这些系统资源是可选的,它们会在系统加载时被加载到内存中,并形象地表现在屏幕上。

Mac OS Classic没有现代意义上的系统内核。Toolbox与系统之上,系统提供的资源非常零碎,就好像是胡乱地拼凑而成。Toolbox的功能非常简单,除了上文介绍过的那些功能——而现代操作系统的一些重要概念,例如系统和内存的保护,还有真正的多任务都在Classic系统上缺失。应用程序的运行十分不够讲究,它们直接运行在Toolbox上,差遣系统的资源,没有任何多余的部分。应用程序除了差遣那些系统提供的已有功能和资源,还可以直接操作硬件和任何内存,所有的应用程序和操作系统的资源一同运行在同样的内存空间里。任何软件的失误都可能让整个操作系统宕机和失败,因此Mac OS Classic的应用程序必须做到万无一失。

一台Macintosh PowerBook 180(1992年,68030+FPU,14兆内存)正在加载系统软件。屏幕下方的拼图图案就是系统扩展。

Toolbox与Macintosh ROM

从第一代Macintosh开始,Macintosh内置一个Macintosh ROM。这个芯片固化在主板上,也有可能在一个插槽里,作为一个固件芯片存在,一直到New World ROM电脑推出(后文介绍)。不同的Macintosh型号有不同的ROM,型号和容量也不同,ROM专门设计为配套它们的硬件,它们实现的功能都是是类似的。有些Macintosh ROM还存储了一些有趣的彩蛋,可以通过MacsBug打开。

没有ROM的Macintosh不能启动。在按下电源按钮后,硬件的控制大权来到Macintosh ROM上,Macintosh ROM与它内建的Macintosh Toolbox对硬件进行自检。如果自检不通过,或ROM里的基础代码运行出错,则会加载ROM里的宕机声音并显示Sad Mac的图像;如果自检通过,则会发出开机声。随后固件会进一步初始化硬件,搜索系统文件夹内系统的位置,然后将硬件的控制权交给系统软件。系统将进一步加载更多系统资源,就如上文的介绍——这一切都是基于Toolbox的。

综上所述,Toolbox是Macintosh ROM芯片的一个重要组成部分,不但是一切Macintosh系统与软件的基础,还扮演BIOS的角色,承担固件功能。它专为68000系列处理器设计,是一座横跨硬件与软件的桥梁。Macintosh ROM芯片在所有Macintosh里都是如此至关重要,这也帮助了苹果防止盗版——没有Macintosh ROM,就不能够运行Mac OS。

存储在Mac SE ROM里的彩蛋。这张图片显示开发了这台电脑的工程师们,可以通过MacsBug调出。
(图片来自Google)
PowerBook 180启动时的Happy Mac,表示Toolbox已经完成系统自检,且找到可用的系统。硬件的控制权此时已经交给系统软件。

PowerPC与Mac OS nanokernel

1990年代的苹果摒弃了摩托罗拉的68000系列处理器,来到PowerPC时代,它需要保证现有的软硬件平滑过渡。Toolbox是68K的,操作系统也是68K的,大量的应用程序也是68K的。Mac OS nanokernel建立在PowerPC电脑的Macintosh ROM里,为Toolbox提供了一个内核级的摩托罗拉68LC040处理器模拟环境,以便平滑过渡的完美进行。

Mac OS nanokernel在Macintosh启动时即加载,在内存里开辟一个PowerPC内核空间加载模拟器和Toolbox。随后模拟器继续加载Toolbox对整个系统硬件进行自检,余下的步骤与68000的电脑无异,简单到不能再简单——也就是说,一个PowerPC的Macintosh实际上的内核,是一个运行在68000模拟器里的Toolbox,听起来滑稽可笑,但无论如何苹果通过这招成功完成了向PowerPC的转换。Mac OS nanokernel提供的模拟器为68000软件提供了系统级别的保障,但运行在模拟器上的软件无疑不能发挥完整的PowerPC性能。系统软件和开发者们需要通过不断的更新,增加PowerPC代码来更好地发挥性能。

一台Macintosh PowerBook 1400c(1996年,603,50兆内存)正在加载系统软件。这台电脑就是典型的NuBus早期PowerPC苹果电脑。

Old World ROM

PowerPC的苹果电脑大致可以分为两个时代,NuBus的早期PowerPC电脑与PCI总线的新款PowerPC电脑。PCI时代的两个重要分界线是Power Macintosh 9500与PowerBook 3400,这些新款苹果电脑有了一个新的固件——Open Firmware。早期PCI总线Macintosh的固件被称为Old World ROM,它们依然使用固化在主板上的Macintosh ROM芯片作为真正的固件;它们的Open Firmware功能还非常虚弱,仅用于初始化PCI设备并且加载Macintosh ROM。苹果并没有真正地发掘它。

在Old World ROM的Macintosh启动时,Open Firmware初始化PCI设备并且将硬件的控制大权立即交给Macintosh ROM。此时Macintosh ROM作为一个Open Firmware设备被加载,然后加载Mac OS nanokernel,就像上文所介绍的,最终加载Toolbox继续那个原始无比的启动流程。

一台Macintosh PowerBook 3400c(1997年,603e,80兆内存)正在加载系统软件。这台电脑就是典型的PCI Old World苹果电脑。

New World ROM

直至Old World ROM,Macintosh的固件都与Mac OS的底层紧密配合。1990年代末期,苹果推出iMac G3,它是第一个New World ROM电脑。New World ROM的电脑是一次爆炸性的革新,这些电脑有完全基于Open Firmware的固件。New World时代的两个重要分界线是PowerBook G3 Bronze Keyboard与Power Macintosh G3 Blue and White,以及新推出的iMac与iBook系列电脑都基于New World ROM。

在那时,Mac OS X计划迅速推进。原先的Macintosh ROM内的Toolbox被提取为一个文件,称为Mac OS ROM,且机型之间通用,存放在系统文件夹下。固化在主板上的Macintosh ROM不复存在,硬件的自检与启动由一个新的完全基于Open Firmware的固件负责。启动Mac OS Classic时,Open Firmware则加载系统文件夹下的Mac OS nanokernel与Toolbox;而启动Mac OS X时,Open Firmware直接加载BootX与mach_kernel——PowerPC Mac OS X的引导器。

一些我们非常熟悉的功能,例如网络启动,Option选择启动磁盘,与自定义的Open Firmware参数等,都来自New World ROM。完全基于Open Firmware的固件功能强大,并且能够直接启动Mac OS X而无需为Toolbox打补丁。不得不说,Mac OS Classic在New World时代已经是强弩之末,一个全新的时代即将由Mac OS X开创——Mac OS X的内核基于Mach与BSD,无需Toolbox的参与。全新的内核高瞻远瞩,更先进的架构将彻底取代Classic的落后底层,成为Macintosh上的主流。

New World电脑开机时按住Option,可以进入引导磁盘选择器。
在Mac OS X下查看Mac OS 9的Mac OS ROM,New World电脑需要这个文件,否则不能启动。

拓展阅读

赞赏站长

本站是原创性质的个人站点,站长拥有所有原创内容的著作权,版权所有。

站长欢迎任何人利用本站内容进行高质量的二次创作,但必须为站长署名(@paizhangpi 或 @paizhang),并附上本站的链接,或事先与站长协商授权事宜。除此之外,严禁任何人盗用本站包括图片在内的任何原创内容,形式包括但不限于低质量或未署名的二创或使用、转载、抄袭、引用、改编、翻译,乃至用于商业用途等。以上行为一经发现,将会追究到底。

《小议Mac OS Classic的底层架构与Macintosh的固件沿革》上有1条评论

  1. QQbrowser QQbrowser Android 6.0zh Android 6.0zh
    Mozilla/5.0 (Linux; U; Android 6.0zh-cn; NEM-AL10 Build/HONORNEM-AL10) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.1 Mobile Safari/537.36

    old world rom的mac完全事启动越 来 越复 杂,用当时的屑cpu确定不会卡死(

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据