在 MBR 或引导管理器中的代码有时也称作引导过程的 阶段0。 这节将讨论两种引导管理器: boot0 和 LILO。
boot0 引导管理器:. 由 FreeBSD 的安装程序, 或 boot0cfg(8) 基于
/boot/boot0
所安装的 MBR。
默认基于 /boot/boot0
。
由于分区表和 MBR 末尾的 0x55AA
标识信息占用的空间, boot0 的尺寸和功能限制在 446
个字节长能表达的范围内。 如果安装了
boot0 以及多个操作系统,
在开机时就可以看到类似下面的提示信息:
如果在装好 FreeBSD 之后安装一些其它的操作系统, 特别是 Windows®, 它们可能会覆盖现有的 MBR。 如果发生了这种情况, 或者希望以 FreeBSD 的 MBR 覆盖现有的 MBR, 可以使用下面的命令:
#
fdisk -B -b /boot/boot0 device
其中, device
是引导系统的磁盘,
例如 ad0
通常是第一个
IDE 磁盘, ad2
是第二个 IDE 控制器上的第一个
IDE 磁盘, 或者,
da0
通常是第一个 SCSI 磁盘。
如果需要自行配置 MBR, 请参阅
boot0cfg(8)。
LILO 引导管理器:. 安装这个引导管理器, 并用它来引导
FreeBSD, 可以启动到 Linux 环境, 并在配置文件
/etc/lilo.conf
中加入以下设置:
other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD
在以上的设置中, 需要按 Linux 的表示方法来指明 FreeBSD 所在的磁盘和分区。
将其中的 X
改为 Linux 驱动器字母,
并把 Y
改为 Linux 主分区编号。
如果使用的是 SCSI
磁盘, 还需要把 /dev/hd
改为
/dev/sd
。
如果两个操作系统位于同一磁盘上, 则可省略
loader=/boot/chain.b
这行。
现在您可以执行 /sbin/lilo -v
来令修改生效。 请检查屏幕上显示的信息, 以确认修改无误。
概念上, 第一、 第二阶段属于同一个程序, 位于磁盘上的同一区域。
由于空间限制, 它们被人为分成了两部分, 但总是由安装程序或
bsdlabel(8) 从事先组装好的
/boot/boot
中同时安装。
它们位于文件系统之外, 位于引导分区的第一个磁道, 从第一个第一扇区开始。
这个位置是 boot0 (Section 13.3.1, “引导管理器”) 或任何其他引导管理器寻找下一阶段的引导程序,
从而继续引导进程时所查找的地方。 所需使用的扇区数目可以很容易地通过
/boot/boot
的大小来确定。
boot1
非常简单,
因为它最大也不能超过 512 字节。 因此, 它只具备识别保存分区信息的
FreeBSD bsdlabel, 以及寻找并执行
boot2
的能力。
boot2
稍微复杂一些,
它能够从 FreeBSD 文件系统中查找文件,
并提供简单的界面供用户选择希望运行的内核或引导加载器。
boot2
运行的引导加载器
loader(8) 在功能方面就强大多了,
它能提供完整的引导配置能力。
您可以用 bsdlabel(8) 来替换目前安装的
boot1
和
boot2
:
#
bsdlabel -B diskslice
其中, diskslice
是用于引导的磁盘和分区,
例如 ad0s1
表示第一个 IDE
磁盘上的第一个分区。
如果在指定设备名时只用到了磁盘的名字, 例如
ad0
, 而没有指定磁盘分区,
则 bsdlabel(8) 会将磁盘视为 FreeBSD
“独享的” (dangerously dedicated)。
基于一些技术原因, 您可能并不希望如此。 因此, 请在按下
Return 之前仔细确认
bsdlabel(8) 的
diskslice
参数。
引导加载器 (loader) 是三个阶段中的最后阶段,
它是直接放在文件系统之中的, 通常是
/boot/loader
文件。
引导加载器的设计初衷是希望提供使用命令与系统交互的配置方式, 这是通过配合强大解释器的内建命令集来实现的。
在初始化过程中, 引导加载器会探测控制台和磁盘, 并找到用于引导系统的磁盘。 接着, 它据此设置一系列环境变量, 并启动解释器, 用于执行脚本或来自用户的交互式命令。
接下来, 引导加载器会载入
/boot/loader.rc
, 后者默认会读取
/boot/defaults/loader.conf
来将一系列变量设为适当的默认值, 接着读取
/boot/loader.conf
来应用适用于本机的变量值。
接着, loader.rc
根据这些变量进行操作,
加载选定的的模块和内核。
最后, 引导加载器会进行 10 秒倒计时等待用户按键, 如果没有被按键打断, 则会启动内核。 如果用户通过按键打断这个过程, 则会得到一个命令提示符, 供用户使用引导加载器的命令集来修改变量、 卸载全部模块、 加载模块, 最终启动或重启系统。
这些是最常用的引导加载器命令。 对所有可用命令的解释请参见 loader(8)。
seconds
倒数 seconds 秒, 如果在这段时间之内没有按键, 就继续启动内核。 它会显示一个倒数计时器, 缺省情况下是倒计时 10 秒。
立即用指定的 options 作为选项启动名字是 kernelname 的内核。 在命令行中指定内核的名字只有在先前执行过 unload 命令时才有效; 否则, 系统会继续使用之前已经载入的内核。
基于变量对各种模块进行自动配置 (和引导内核时发生的一样), 主要是
kernel
。 在修改这些变量之前应首先
unload
。
显示来自
/boot/loader.help
的帮助信息。
如果指定的主题参数 topic 是 index
,
则系统会列出所有可用的主题。
filename
…读取并处理给定的名为 filename 的文件。 这个文件会读入内存并逐行解释, 这个过程中如果发生错误, 则会终止 include 命令。
filename
加载名为 filename 的内核、 内核模块, 或指定类型
type 的文件。 在 filename
后面的内容则被视为参数传给文件。
列出位于指定 path 路径的文件, 如果没有指定则列出根目录的内容。
在指定
-l
时, 则会同时列出文件尺寸。
列出所有可以用于加载模块的设备。
如果指定了 -v
选项,
则会显示更多的细节信息。
显示已经加载的模块。
如果指定了 -v
选项,
则会显示更多的细节信息。
filename
显示名为 filename 的文件, 并在每次输出了
LINES
行时暂停。
立即重启系统。
variable
, set
variable
=value
设置引导加载器的环境变量。
卸载所有先前载入的模块。
以下是一些常见的引导加载器用法:
引导画面可以用来代替常规的引导信息。 这样, 引导时的探测设备以及启动服务等信息就隐藏在其后, 直到需要命令行或图形界面登录时为止。
FreeBSD 系统提供了两种基本的环境。 第一种是默认的传统虚拟控制台命令行环境。 在系统完成引导之后, 在控制台上会给出登录提示符。 第二种环境是在 Chapter 6, X Window 系统 中描述的图形界面环境。 请参阅这章内容了解图形显示管理器以及图形登录管理器。
引导画面功能支持 256 色的位图
(.bmp
)、 ZSoft
PCX (.pcx
), 以及
TheDraw (.bin
) 文件格式。
这些图片的分辨率必须是 320 x 200 像素或更少,
才能在标准 VGA 适配器上使用。
要使用更大, 但尺寸不超过
1024 x 768 像素分辨率的图像, 则需要在系统引导时加载
VESA 模块。 如果使用定制内核,
可以根据 Chapter 9, 配置FreeBSD的内核 的介绍将内核配置选项
VESA
加入。 加载 VESA
支持, 将会为系统提供可以填满整个显示屏的引导画面的能力。
在启动的时, 引导画面就会显示在屏幕上, 在启动过程中的任何时候, 都可以通过按任意键来关闭它。
引导画面同时也作为屏保来使用。 当一段时间无人操作计算机之后,
系统就会显示出引导画面, 并周期性地从明亮至暗淡变换。
以引导画面作为屏保可以通过在
/etc/rc.conf
中的
saver=
选项来控制。
系统内建的屏保列表可以在联机手册 splash(4) 中找到。
saver=
选项仅适用于虚拟控制台。
对图形显示管理器无效。
需要说明的是, 即使启用了引导画面, 一部分引导加载器的提示信息, 包括启动系统时的倒计时提示, 也仍然会在开机时显示出来。
引导画面的一些示例可以在 http://artwork.freebsdgr.org 下载。 如果安装了 sysutils/bsd-splash-changer port, 系统会在每次启动时从一组引导画面中随机挑选一个来显示。
引导画面图像 (.bmp
)、
(.pcx
) 或 .bin
文件必须放置在系统启动所用的根文件系统上, 例如
例如 /boot
目录中。
如果希望以默认的显示分辨率 (256 色, 320x200 像素或更少), 编辑
/boot/loader.conf
并在其中增加下列设置:
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp
"
如果需要使用更高、 最大至 1024x768 像素的分辨率, 编辑
/boot/loader.conf
并在其中增加下列设置:
vesa_load="YES"
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp
"
以上这些设置假设
/boot/splash.bmp
是希望使用的启动画面文件。 当需要使用 PCX
文件的时候, 添加下列设置, 根据分辨率的高低适当增加
vesa_load="YES"
。
splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.pcx
"
从 FreeBSD 8.3 开始, 新增了对采用 TheDraw 格式的 ASCII 艺术引导画面的支持。
splash_txt="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bin
"
文件名并不必拘泥于前面例子中的 “splash”。
它可以是任何名称, 只要是系统支持的类型即可, 例如
splash_640x400.bmp
或
blue_wave.pcx
。
其它一些您可能会感兴趣的 loader.conf
选项包括:
beastie_disable="YES"
这将关闭显示启动选项菜单, 但是倒数记时仍然会出现。 即是在启动菜单选项被禁用的时候, 在倒数记时段键入相应的启动选项仍然有效。
loader_logo="beastie"
这将替换启动选项菜单右侧默认显示的 “FreeBSD” 为彩色的小魔鬼标志, 就像以往的发行版那样。
请参阅联机手册 splash(4)、 loader.conf(5) 以及 vga(4) 以获取更多详细信息。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.