FreeBSD handbook中文版 7 FreeBSD 的启动过程

目录
7 FreeBSD 的启动过程
7.1 概要
7.2 启动中的问题
7.3 MBR,启动步骤1、2 和3
7.4 启动时内核的调节
7.5 Init: 进程控制初始化
7.6 关机程序
=============================================================
第7 章FreeBSD 启动过程
=============================================================
(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)
7.1 概要
启动一个电脑和加载操作系统的过程被叫做“bootstrap process”或简单地叫
“booting” 。FreeBSD 的启动过程提供了许多弹性来适应实际的变化,允许你选择启动在
同一台电脑上安装的不同操作系统,或是同一操作系统的不同版本 。
这章将比较细致地对你可能会涉及到的配置选项和如何定制FreeBSD 的启动过程作一
个描述 。这包括内核启动前会发生的每一件事情,探测设备,启动init 。如果你不十分有
把握的话,当你的屏幕的文本颜色由白变灰的时候,你就可以看到系统检测信息了 。
阅读完这章,你将了解到:
FreeBSD 的bootstrap 系统有哪些组件,它们如何互相影响 。.
在启动FreeBSD 时你可以给组件哪些选项来控制启动过程 。.
注意: 这章将只描述运行在Intel x86 系统上的启动过程 。
7.2 启动过程中的问题
打开电脑和启动操作系统似乎会引起一个两难的选择 。根据定义,电脑在操作系统启动
之前是不知道如何做事的 。这包括从磁盘运行程序 。所以如果电脑没有操作系统就不能运行
程序,那操作系统是如何启动的呢?
在x86 系统中,主要由基本输入输出系统(BIOS)来负责加载操作系统 。BIOS 首先检
查磁盘的主引导区(MBR),它是在磁盘的一个比较特殊的地方 。BIOS 加载和运行MBR,而
MBR 能完成加载操作系统以外的任务 。
如果你只有一个操作系统安装在电脑上,那标准的MBR 将起作用 。这个MBR 会搜索磁盘
上的启动slice,然后在这个slice 上运行代码来加载引导操作系统的余下的部分程序 。
第1 页FreeBSD 使用手册
如果你在磁盘上安装了多个操作系统,你可以安装一个不同的MBR,MBR 可以显示一个
不同操作系统的列表,允许你选择一个启动 。FreeBSD 使用这样的MBR,其他操作系统也会
提供其它的MBR 。
FreeBSD 的bootstrap 系统的其余部分被分成三个阶段 。第一个阶段是运行MBR,它只
知道把电脑带入一个特殊的状态,然后运行第二阶段 。第二阶段要执行的程序要多一点 。第
三阶段就完成加载操作系统的任务 。这个工作被分成三个阶段是因为PC 的标准限制了程序
的大小 。这一系列串起来的任务允许FreeBSD 提供一个比较灵活的加载程序 。
内核启动后,就会探测设备并对它们进行初始化,一旦内核启动过程完成,内核就把控
制权交给用户处理进程init,它可以确定磁盘是否处于可用状态 。Init 接着就启动用户级
资源配置来加载文件系统,设置网卡来激活网络,接着就启动所有的通常在FreeBSD 一运行
就启动的进程 。
7.3 MBR 启动步骤1、2 和3
7.3.1 MBR, /boot/boot0
FreeBSD MBR 是驻留在/boot/boot0 。这是MBR 的一个拷贝,因为真正的MBR 必须被放
置在磁盘的一个特殊部分,在FreeBSD 区域的外面 。boot0 非常简单,在主引导区的程序可
能只有512 个字节 。如果你已经安装了FreeBSD 的MBR,而且还安装了多个操作系统,你将
会在启动时看到一个比较熟悉的画面 。
例7-1. boot0 画面
F1 Dos
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2
第2 页FreeBSD 使用手册
其它操作系统,如Windows 95,会用自己的MBR 来改写已存在的MBR 。如果碰到这样的

推荐阅读