1.4. `boot0`阶段
上一页 | 第 1 章 引导过程与内核初始化 | 下一页

## 1.4. `boot0`阶段

让我们看一下文件`/boot/boot0`。 这是一个仅512字节的小文件。如果在FreeBSD安装过程中选择 “bootmanager”，这个文件中的内容将被写入硬盘MBR

如前所述， `INT 0x19` 指令装载 MBR， 也就是 `boot0` 的内容至内存地址 0x7c00。 再看文件 `sys/boot/i386/boot0/boot0.S`， 可以猜想这里面发生了什么 - 这是引导管理器， 一段由 Robert Nordier书写的令人起敬的程序片段。

MBR里，也就是`boot0`里， 从偏移量0x1be开始有一个特殊的结构，称为 分区表。其中有4条记录 (称为分区记录)，每条记录16字节。 分区记录表示硬盘如何被划分，在FreeBSD的术语中， 这被称为slice(d)。16字节中有一个标志字节决定这个分区是否可引导。 有仅只能有一个分区可设定这一标志。否则， `boot0`的代码将拒绝继续执行。

一个分区记录有如下域：

- 1字节 文件系统类型

- 1字节 可引导标志

- 6字节 CHS格式描述符

- 8字节 LBA格式描述符

一个分区记录描述符包含某一分区在硬盘上的确切位置信息。 LBA和CHS两种描述符指示相同的信息，但是指示方式有所不同：LBA (逻辑块寻址，Logical Block Addressing)指示分区的起始扇区和分区长度， 而CHS(柱面 磁头 扇区)指示首扇区和末扇区

引导管理器扫描分区表，并在屏幕上显示菜单，以便用户可以 选择用于引导的磁盘和分区。在键盘上按下相应的键后， `boot0`进行如下动作：

- 标记选中的分区为可引导，清除以前的可引导标志

- 记住本次选择的分区以备下次引导时作为缺省项

- 装载选中分区的第一个扇区，并跳转执行之

什么数据会存在于一个可引导扇区(这里指FreeBSD扇区)的第一扇区里呢？ 正如你已经猜到的，那就是`boot2`。

上一页 | 上一级 | 下一页
1.3. BIOS POST | 起始页 | 1.5. `boot2`阶段

本文档和其它文档可从这里下载： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.