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

2008-02-23 08:02:03来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

目录
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。如果碰到这样的
事,或你想替换FreeBSD 的MBR,你可以使用下面的命令:
# fdisk -B -b /boot/boot0 device
这儿的device是你用来启动的设备,如第一个IDE 磁盘ad0,在第二个IDE 控制器上的
第一个磁盘,在第一个SCSI 磁盘da0 等等。
7.3.2 步骤1, /boot/boot1, 步骤2, /boot/boot2
Boot1 可以在引导分区的引导扇区上找到,它无论是在boot0 上,或是在MBR 上的其它
程序都能找到这样的程序继续启动进程。
Boot1 是非常简单的,它也可能只有512 字节,只是表明了FreeBSD 的存储有磁盘分区
信息的磁盘标签(Disklabel),找到它之后,就会执行boot2。
Boot2 稍微有点复杂,它记录着FreeBSD 的文件系统以便于在它上面找到文件,另外它
也提供了一个选择可运行的内核或引导程序的简单接口。Loader 还要复杂一点,它提供了
一个易于使用的启动配置信息,通常boot2 之后就是运行它了,但以前它可以直接运行内核。
例7-2. boot2 画面
>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:
如果你需要替换已安装的boot1 和boot2,可以使用disklabel。
# disklabel -B diskslice
diskslice是启动系统的磁盘和slice 的地方, 如ad0s1,在第一个IDE 磁盘的第一个
slice 上。
危险的模式:如果你使用了刚才的磁盘名称,如ad0,在disklabel 命令中,你将创建
一个危险的磁盘,没有slices。这可能不是你想要做的,所以确定你在键入RETURN 之前,
第3 页FreeBSD 使用手册
你已反复检查了命令disklabel。
7.3.3 步骤3,/boot/loader
引导程序loader 是三步中的最后一步,它可能在/boot/loader。Loader 有一个非常友
好的配置方法,使用一个易于使用的内建命令,通过一个强大的接口来备份。
7.3.3.1 Loader 的执行过程
初始化过程中,引导程序探测到一个控制台和一些磁盘,计算出从哪个磁盘启动。因此,
它可以设置成可变化的,然后解释程序就开始启动,命令就会被解释执行。
最后,默认情况下启动程序停顿10 秒钟(当然你可以按任意键继续),然后启动内核。
如果进程被打断了,用户可以使用命令来调整参数,卸载或装载模块,最后启动或重新启动。
一个更深入的技术讨论,你可以阅读loader 的联机手册。
7.3.3.2 Loader 内建命令
这些命令集包括:
autoboot seconds
在规定的时间内不被打断的话,继续启动内核。如果显示一个倒计时,默认的时间
是10 秒钟。
boot [-options] [kernelname]

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD handbook中文版 10 安全

下一篇:FreeBSD handbook中文版 6 配置与调整