3.1.2. 第二阶段:引载加载程序
引导加载程序是启动过程的第二阶段,由 BIOS 启动。引导加载程序将系统内核映像和 initrd 映像加载到内存并将控制权交给它们。initrd 映像是根文件系统映像,其支持程度依赖于所使用的引导加载程序。
Debian 系统通常使用 Linux 内核作为其默认的系统内核。当前 2.6/3.x 版本 Linux 内核的 initrd 镜像从技术上说是 initramfs(初始化 RAM 文件系统)镜像。基本的 initrd 镜像是 root 文件系统中各个文件使用 cpio 压缩得到的。 内核可以在启动流程中非常早的阶段,在加载基本的 initrd 镜像之前即更新微码。 以未压缩 cpio 格式存储微码二进制文件的 initrd 镜像和基本 initrd 镜像两部分可以联合组成一个 initrd 镜像,从而帮助实现上述功能。
提示 | |
---|---|
您可以使用 lsinitramfs(8) 和 unmkinitramfs(8) 这两个工具检查 initrd 镜像文件的内容,它们由 |
Debian 系统默认将 PC 平台的 GRUB 引导加载程序的第一阶段代码安装在 MBR 中。可用的引导加载程序和配置选项如下。
表 3.1. 引导加载程序列表
软件包 | 流行度 | 大小 | initrd | 引导加载程序 | 说明 |
---|---|---|---|---|---|
grub-legacy | V:0, I:2 | 729 | 支持 | 传统 GRUB | 可智能识别磁盘分区和文件系统(例如 vfat、ext3…)。 |
grub-pc | V:27, I:825 | 532 | 支持 | GRUB 第 2 版 | 可智能识别磁盘分区和文件系统(例如 vfat、ext4…)。(默认安装) |
grub-rescue-pc | V:0, I:1 | 6286 | 支持 | GRUB 第 2 版 | 此为 GRUB 第 2 版的可引导修复映像(CD 和软盘)(PC / BIOS 版本) |
lilo | V:0, I:3 | 693 | 支持 | Lilo | 依赖于数据在硬盘上的扇区位置。(较老) |
syslinux | V:4, I:54 | 344 | 支持 | Isolinux | 可识别 ISO9660 文件系统。引导 CD 使用此项。 |
syslinux | V:4, I:54 | 344 | 支持 | Syslinux | 可识别 MSDOS 文件系统(FAT)。引导软盘使用此项。 |
loadlin | V:0, I:1 | 83 | 支持 | Loadlin | 新系统从 FreeDOS 或 MSDOS 中启动。 |
mbr | V:0, I:9 | 49 | 不支持 | Neil Turton 的 MBR | 此为取代 MSDOS MBR 的自由软件。只可识别硬盘分区。 |
警告 | |
---|---|
假如没有从 |
传统 GRUB 的菜单配置文件位于 /boot/grub/menu.lst
。例如,文件中有如下的配置条目。
title Debian GNU/Linux
root (hd0,2)
kernel /vmlinuz root=/dev/hda3 ro
initrd /initrd.img
GRUB 第 2 版的菜单配置文件位于 /boot/grub/grub.cfg
。此文件由 /usr/sbin/update-grub
根据 “/etc/grub.d/*
“ 中的模板及 “/etc/default/grub
“ 中的设置自动生成。例如,文件中有如下的配置条目。
menuentry "Debian GNU/Linux" {
set root=(hd0,3)
linux /vmlinuz root=/dev/hda3
initrd /initrd.img
}
这些示例中,GRUB 参数的含义如下。
表 3.2. GRUB 参数的含义
GRUB 参数 | 说明 |
---|---|
root | 使用主磁盘的第 3 个分区,在传统 GRUB 中将此参数设置为 “(hd0,2) “,在 GRUB 第 2 版中将此参数设置为 “(hd0,3) “ |
kernel | 使用位于 “/vmlinuz “ 的内核,同时将 “root=/dev/hda3 ro “ 作为参数传递给内核 |
initrd | 使用位于 “/initrd.img “ 的 initrd/initramfs 映像 |
注意 | |
---|---|
传统 GRUB 使用的分区号为 Linux 内核及各种实用工具使用的分区号减 1。GRUB 第 2 版修复了这个问题。 |
提示 | |
---|---|
在标识一个块设备时,可能需要使用 UUID(参见第 9.5.3 节 “使用 UUID 访问分区”)而不是类似 “ |
提示 | |
---|---|
如果使用了 GRUB,内核的启动参数可以在 |
提示 | |
---|---|
通过使用链式引导技术,你可以在一个引导装载程序中启动另一个引导装载程序。 |
参见 “info grub
” 及 grub-install(8)。