Oberon/ETH Oberon/bootstrap
本文档最初托管于 ETHZ。它仍在 ETH 许可 下,并存放在 WayBack 存档 中。
本文档的目的是以系统化和渐进的方式解释如何从无到有地启动操作系统(即引导机制),从最简单的单一操作系统设置,到更复杂、更需要多引导管理器的设置,包括引导加载程序的级联。每个操作系统在安装介质上都有自己的引导扇区,这里将回顾其中几个,但将重点强调通用性,以方便理解用于启动操作系统的机制的细节。
启动操作系统的替代方法将按以下顺序进行回顾
- 直接从软盘引导:软盘是一种单分区存储介质(本文档中有描述)
- 通过(可能包含多个分区的)海量存储介质的 MBR 间接引导分区
- 通过 引导管理器 引导,通常在多个操作系统环境中使用
- 通过 另一个操作系统 间接引导,例如通过 DOS 使用 noboot.exe(Oberon)或 loadlin.exe(Linux)
- 引导一个 托管在文件中的虚拟操作系统(在 FatFS 或 Linux FS 中)
该方法通常适用于大多数操作系统,但重点放在我们感兴趣的操作系统 ETH Oberon 上。
这部分对于所有基于 x86 的机器来说是通用的,但根据不同制造商提供的 BIOS,会观察到一些差异,并且 BIOS 设置也可能因机器而异。
在系统完成开机自检 (POST) 后,BIOS 引导程序会生成一个 INT 19。通常,INT 19 会尝试从第一个软盘驱动器读取引导扇区(参见下一节“直接从软盘引导”)。如果在软盘上找到了引导扇区,该引导扇区将被读入内存位置 0000:7C00,并且 BIOS 检查该扇区的最后两个字节是否为“55 AA”。如果正确,该程序将跳转到内存位置 0000:7C00 以执行负责加载和启动操作系统的引导加载程序(它从内核开始)。
如果最后两个字节不包含“55 AA”签名,则会显示一个依赖于 BIOS 的消息,例如“非可引导磁盘”或“非系统”,并且机器将停止运行。
但是,如果在第一个软盘驱动器上没有找到引导扇区,INT 19 会尝试从第一个硬盘读取 MBR。如果找到 MBR,它将被读入内存位置 0000:7C00,并且 INT 19 将跳转到内存位置 0000:7C00。MBR 中的小程序将在简单情况下尝试在其分区表中找到一个活动(可引导)分区。或者,它可以是引导管理器程序的起始部分。
按下 Ctrl-Alt-Del 键时也会调用 INT 19。在大多数系统中,Ctrl-Alt-Del 会导致在调用 INT 19 之前执行简短的 POST 版本。
一种启动操作系统的简单而稳定的方法,缺点是速度相对较慢。大多数制造商建议创建救援软盘,以便在启动相关操作系统时遇到困难时使用。
先决条件是
- 机器必须配备软盘驱动器。对于较新的非传统机器来说,情况并非如此。
- BIOS 设置必须优先考虑软盘驱动器。如果安装了两个软盘驱动器,则可以通过 BIOS 设置或在较旧的机器(其 BIOS 不支持软件切换)中切换电缆来切换 A 和 B 驱动器。
- 必须提供一张可引导软盘。对于 ETH Oberon,请参见 软盘支持。
优势:消除了安装 MBR 或引导管理器时可能遇到的困难。
完整的 ETH Oberon 引导加载程序 (OBL) 汇编代码位于 OBL.Asm 中,其编译后的形式位于 OBL.Bin 中。
当执行 Partitions.Format 命令 时,OBL 写入 Oberon 分区(类型 76)中的前 4 个扇区。一个分区占据整个软盘。对于海量存储设备上的分区来说也是如此。不同之处在于,在后一种情况下,OBL 在 MBR 中的第一阶段加载程序之后成为第二阶段加载程序。
引导扇区的结构是
当 Oberon 运行时,可以通过执行以下命令显示引导扇区:Partitions.ShowBlocks dev#part 0 1 ~。可以使用您喜欢的操作系统或第三方软件(商业版、共享版等)的功能获取相同的信息。
阅读 Hale Landis 编写的 "它是如何工作的:DOS 软盘引导扇区"。
阅读 "示例引导扇区"
2008 年 3 月 19 日 - 版权所有 © 2002 ETH Zürich。保留所有权利。
电子邮件:oberon-web at inf.ethz.ch [已过期]
主页:http://www.ethoberon.ethz.ch/ [已过期]