39.6. 校验引导装载程序

kernel RPM 软件包配置引导装载程序来引导刚刚安装的内核(除了 IBM eServer iSeries 系统以外),但是它并不配置引导装载程序默认引导新内核。

确认一下引导装载程序已被配置成引导新内核总是值得提倡的。这是至关重要的一步。如果引导装载程序被配置得不正确,系统就不会正确引导红帽企业 Linux。若这种情况发生了,使用你从前创建的引导盘来引导你的系统,然后再试图配置你的引导装载程序。

39.6.1. x86 系统

x86 系统可以使用 GRUB 或 LILO 作为引导装载程序。只有一个例外 — AMD64 系统不能使用 LILO。所有 x86 系统的默认引导装载程序都是 GRUB。

39.6.1.1. GRUB

如果你选择了 GRUB 作为引导装载程序,请确认 /boot/grub/grub.conf 文件中包含的 title 部分与你刚刚安装的 kernel 软件包的版本相同(如果你安装了 kernel-smpkernel-bigmem 软件包,它们也会有各自的部分):

# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda2
#          initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title 红帽企业 Linux (2.4.21-1.1931.2.399.ent)
        root (hd0,0)
        kernel /vmlinuz-2.4.21-1.1931.2.399.ent ro root=LABEL=/
        initrd /initrd-2.4.21-1.1931.2.399.ent.img
title 红帽企业 Linux (2.4.20-2.30.ent)
        root (hd0,0)
        kernel /vmlinuz-2.4.20-2.30.ent ro root=LABEL=/
        initrd /initrd-2.4.20-2.30.ent.img

如果你创建了单独的 /boot/ 分区,到内核与 initrd 映像的路径是相对于 /boot/ 分区而言的。

注意,默认引导项目没有被设置为新内核。要配置 GRUB 来默认引导新内核,把 default 变量的值改成包含新内核的 title 部分的号码。这个号码从 0 开始。例如,如果新内核是第一个 title 部分,把 default 设置为 0

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。

39.6.1.2. LILO

如果你选择了 LILO 作为引导装载程序,请确认 /etc/lilo.conf 文件中包含的 image 部分与你刚刚安装的 kernel 软件包的版本相同(如果你安装了 kernel-smpkernel-bigmem 软件包,它们也会有各自的部分):

注意,默认引导项目没有被设置为新内核。要配置 LILO 来默认引导新内核,把 default 变量的值改成包含新内核的 image 部分中的 label 的值。以根用户身份运行 /sbin/lilo 命令来启用改变。运行后,其输出会与如下相似:

Added 2.4.21-1.1931.2.399.ent *
Added linux

2.4.21-1.1931.2.399.ent 后面的 * 意味着那部分中的内核是 LILO 会默认引导的内核。

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。

39.6.2. Itanium 系统

Itanium 系统使用 ELILO 作为引导装载程序,该程序使用 /boot/efi/EFI/redhat/elilo.conf 作为配置文件。请确认该文件中包含的 image 部分与你刚刚安装的 kernel 软件包的版本相同:

prompt
timeout=50
default=old

image=vmlinuz-2.4.21-1.1931.2.399.ent
        label=linux
        initrd=initrd-2.4.21-1.1931.2.399.ent.img
        read-only
        append="root=LABEL=/"
image=vmlinuz-2.4.20-2.30.ent
        label=old
        initrd=initrd-2.4.20-2.30.ent.img
        read-only
        append="root=LABEL=/"

注意,默认引导项目没有被设置为新内核。要配置 ELILO 来默认引导新内核,把 default 变量的值改成包含新内核的 image 部分中的 label 的值。

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。

39.6.3. IBM S/390 和 IBM eServer zSeries 系统

IBM S/390 和 IBM eServer zSeries 系统使用 z/IPL 作为引导装载程序。该程序使用 /etc/zipl.conf 作为配置文件。请确认该文件中包含一个带有和刚安装的内核版本相同的版本部分:

[defaultboot]
default=old
target=/boot/
[linux]
        image=/boot/vmlinuz-2.4.21-1.1931.2.399.ent
        ramdisk=/boot/initrd-2.4.21-1.1931.2.399.ent.img
        parameters="root=LABEL=/"
[old]
        image=/boot/vmlinuz-2.4.20-2.30.ent
        ramdisk=/boot/initrd-2.4.20-2.30.ent.img
        parameters="root=LABEL=/"

注意,默认引导项目没有被设置为新内核。要配置 z/IPL 来默认引导新内核,把 default 变量的值改成包含新内核部分的名称。每个部分的第一行在括号内包含名称。

修改了配置文件后,作为根用户运行以下命令来启用改变:

/sbin/zipl

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。

39.6.4. IBM eServer iSeries 系统

/boot/vmlinitrd-<kernel-version> 文件在你升级内核的时候被安装。不过,你必须使用 dd 命令配置系统来引导新内核:

  1. 作为根用户,使用 cat /proc/iSeries/mf/side 命令来判定默认的边(A、B、或 C)。

  2. 作为根用户,使用以下命令(这里的 <kernel-version> 是新内核的版本,<side> 是前一个命令返回的边):

    dd if=/boot/vmlinitrd-<kernel-version> of=/proc/iSeries/mf/<side>/vmlinux bs=8k

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。

39.6.5. IBM eServer pSeries 系统

IBM eServer pSeries 系统使用 YABOOT 作为引导装载程序,该程序使用 /etc/aboot.conf 作为配置文件。请确认该文件包含的 image 部分和刚刚安装的 kernel 软件包是同一版本:

boot=/dev/sda1
init-message=Welcome to 红帽企业 Linux!
Hit <TAB> for boot options
 
partition=2
timeout=30
install=/usr/lib/yaboot/yaboot
delay=10
nonvram

image=/vmlinux--2.4.20-2.30.ent
        label=old
        read-only
        initrd=/initrd--2.4.20-2.30.ent.img
        append="root=LABEL=/"
 
image=/vmlinux-2.4.21-1.1931.2.399.ent
        label=linux
        read-only
        initrd=/initrd-2.4.21-1.1931.2.399.ent.img
        append="root=LABEL=/"

注意,默认引导项目没有被设置为新内核。在第一个映像中的内核被默认引导。要把默认引导的内核该成新内核,把新内核的映像实例移到列表首位,或添加一个 default 指令,并把这个指令设置 为包含新内核的映像实例的 label

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。