红联Linux门户
Linux帮助

RedHat Linux 9升级内核

发布时间:2005-09-13 22:33:51来源:红联作者:yo
为了确保内核的完整性和对它所支持的硬件的兼容性,Red Hat Linux 内核由 Red Hat 内核小组定制建构。在内核被 Red Hat 发行之前,它一定要通过一系列严格的质量保证测试。

Red Hat Linux 内核使用 RPM 格式打包,因而它们易于升级和校验。例如,由 Red Hat, Inc. 发行的 kernel RPM 软件包被安装后, initrd 映像会被创建;这样,在你安装了不同的内核后,你就没必要使用 mkinitrd 命令。如果你安装了 GRUB 或 LILO 的话,它还会修改引导装载程序的配置文件来包括这个新内核。

本章仅讨论在 x86 系统上升级内核的必要步骤。

警告: 建构你自行定制的内核是不被 Red Hat Linux 安装支持组支持的。关于从源码中建构定制内核的详情,请参阅 附录 A 。


30.1. 2.4 版本的内核
Red Hat Linux 随带定制的 2.4 内核,它包括以下功能:

内核源码的目录是 /usr/src/linux-2.4/ ,而不是 /usr/src/linux/ 。

对 ext3 文件系统的支持。

对多重处理器(SMP)的支持。

对 USB 的支持。

对 IEEE 1394 设备(又称 FireWire ?)的初步支持。

30.2. 准备升级
在你升级内核之前,你应该先采取几项预防措施。第一步是确定你有一张适用于你的系统的可运行的引导盘以防万一出现问题。如果引导装载程序没有被正确配置来引导新内核,除非你有引导盘,否则就无法引导系统。

要创建引导盘,在 shell 提示下登录为根用户,然后键入以下命令:

/sbin/mkbootdisk `uname -r`
窍门:请参考 mkbootdisk 的说明书页(man)来阅读更多选项。


在继续前,使用引导盘来重新引导你的机器以校验该软盘的可运行性。

但愿你不必使用引导盘,但是你应该把它存放在一个安全的地方以防万一。

要判定你已安装了哪些内核软件包,在 shell 提示下执行下面的命令:

rpm -qa | grep kernel

依据你执行的安装类型而定(你的版本号码和软件包可能不同),该命令的输出会包括某些或全部在下面列出的软件包:

kernel-2.4.20-2.47.1
kernel-debug-2.4.20-2.47.1
kernel-source-2.4.20-2.47.1
kernel-doc-2.4.20-2.47.1
kernel-pcmcia-cs-3.1.31-13
kernel-smp-2.4.20-2.47.1

从输出中,你可以判定你需要下载哪些软件包来执行内核升级。对于单处理器系统而言,只有 kernel 软件包是必需的。

如果你的计算机不只有一个处理器,你需要包括支持多处理器的 kernel-smp 软件包。强烈建议你仍安装 kernel 软件包,以防万一多处理器内核不能在你的系统中正确运行。

如果你的计算机的内存超过了 4GB,你必须安装 kernel-bigmem 软件包才能使系统使用多于 4GB 的内存。强烈建议你仍旧安装 kernel 软件包以用于调试。 kernel-bigmem 软件包仅为 i686 体系建构。

如果你需要 PCMCIA 支持(例如在便携电脑上), kernel-pcmcia-cs 软件包就必不可少。

除非你想重新编译内核,或把系统用于内核开发,你不需要 kernel-source 软件包。

kernel-doc 软件包包括内核开发文档,它不是必需的。如果你的系统被用于内核开发,则推荐你安装它。

kernel-util 软件包包括能够用来控制内核或系统硬件的工具程序,它也不是必需的。

Red Hat 建构的内核为不同的 x86 版本做了优化。选项有:用于 AMD Athlon ? 和 AMD Duron ? 系统的 athlon ;用于 Intel ? Pentium ? II、 Intel ? Pentium ? III、和 Intel ? Pentium ? 4 系统的 i686 ;用于 Intel ? Pentium ? 和 AMD K6 ? 系统的 i586 。如果你不知道你的 x86 系统的版本,使用为 i386 版本建构的内核;它是为所有基于 x86 的系统建构的。

RPM 软件包的 x86 版本被包括在文件名中。例如: kernel-2.4.20-2.47.1.athlon.rpm 是为AMD Athlon ? 和 AMD Duron ? 系统优化的, kernel-2.4.20-2.47.1.i686.rpm 是为 Intel ? Pentium ? II、 Intel ? Pentium ? III、和 Intel ? Pentium ? 4 系统优化的。在你判定了软件包之后,你需要升级 内核,为 kernel 、 kernel-smp 、和 kernel-bigmem 软件包选择正确的体系。其它软件包使用 i386 版本。

30.3. 下载升级了的内核
要判定是否有可用于你的系统的升级内核,方法有好几种。

进入 http://www.redhat.com/apps/support/errata/ 网站,选择你使用的 Red Hat Linux 版本,然后查看它的勘误。内核勘误通常在 安全顾问(Security Advisories) 部分下。从勘误列表中 点击内核勘误来查看它的详细勘误报告。在勘误报告中,有一个需要的 RPM 列表,以及从 Red Hat FTP 站点下载它们的链接。你还可以从 Red Hat FTP 的 镜像站点中下载它们。镜像站点的列表在 http://www.redhat.com/download/mirror.html 中。

使用 Red Hat 网络来下载内核 RPM 软件包并安装它们。Red Hat 网络能够下载最新的内核、升级系统上的内核、如果必要,创建初始 RAM 映像,并配置引导装载程序来载入新内核。要获取更多信息,请参阅 http://www.redhat.com/docs/manuals/RHNetwork/ 上的 Red Hat 网络 User Reference Guide 。

如果你从 Red Hat Linux 的勘误网页上下载了 RPM 软件包,或只使用了 Red Hat 网络来下载软件包,继续阅读 第 30.4 节 。如果你使用了 Red Hat 网络来下载并安装更新了的内核,遵循 第 30.5 节 和 第 30.6 节 中的说明。只不过,不要把内核改成默认引导项,因为 Red Hat 网络会自动把默认内核改成最新版本。

30.4. 执行升级
检索到所有必要的软件包后,你就可以开始升级现存内核了。在 shell 提示下登录为根用户,转换到包含内核 RPM 软件包的目录中,遵循以下步骤:

重要:强烈建议你保留旧内核,以防万一新内核出现问题。


使用 rpm 命令的 -i 选项来保留就内核。如果你使用了 -U 选项来升级 kernel 软件包,它会覆盖当前安装了的内核。该命令为(内核版本和 x86 版本会有所不同):

rpm -ivh kernel-2.4.20-2.47.1.i386.rpm

如果系统是多处理器系统,还需安装 kernel-smp 软件包(内核版本和 x86 版本会有所不同):

rpm -ivh kernel-smp-2.4.20-2.47.1.i386.rpm

如果系统是基于 i686 的,并包含超过 4GB 的内存,还需安装为 i686 体系建构的 kernel-bigmem 软件包(内核版本和 x86 版本会有所不同):

rpm -ivh kernel-bigmem-2.4.20-2.47.1.i686.rpm

如果你打算升级 kernel-source 、 kernel-docs 、或 kernel-utils 软件包,你可能不需要保留老版本。使用下面的命令来升级这些软件包(版本会有所不同):

rpm -Uvh kernel-source-2.4.20-2.47.1.i386.rpm
rpm -Uvh kernel-docs-2.4.20-2.47.1.i386.rpm
rpm -Uvh kernel-utils-2.4.20-2.47.1.i386.rpm

如果系统需要 PCMCIA 支持(例如便携电脑),你还需要安装 kernel-pcmcia-cs 并保留老版本。如果你使用了 -i 选项,它可能会返回冲突,因为老内核需要该软件包来引导带有 PCMCIA 支持的系统。要绕过这个问题,使用 --force 选项,如下所示(版本会有所不同):

rpm -ivh --force kernel-pcmcia-cs-3.1.24-2.i386.rpm

下一步是校验初始 RAM 磁盘映像是否被创建。详情请参阅 第 30.5 节 。

30.5. 校验初始 RAM 磁盘映像
如果系统使用 ext3 文件系统或 SCSI 控制器,你就需要初始 RAM 磁盘。初始 RAM 磁盘的目的是允许模块化的内核在它能够进入模块通常驻留的设备之前具备进入内核需要从该设备引导的模块的能力。

初始 RAM 磁盘通过使用 mkinitrd 命令来创建。然而,如果内核及其相关文件是从 Red Hat, Inc. 发行的 RPM 软件包中安装或升级的话,这个步骤会被自动执行;因此,它不必被手工进行。要校验它是否被创建了,使用 ls -l /boot 命令来确定 initrd-2.4.20-2.47.1.img 文件被创建了(版本应该匹配刚刚安装了的内核的版本)。

下一步是校验引导装载程序已被配置来引导新内核。详情请参阅 第 30.6 节 。

30.6. 校验引导装载程序
如果你安装了 GRUB 或 LILO 引导装载程序, kernel RPM 软件包配置它们来引导刚刚安装的内核,但是它并不配置引导装载程序默认引导新内核。

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

30.6.1. GRUB
如果你选择了 GRUB 作为引导装载程序,请确认 /boot/grub/grub.conf 文件中包含的 title 部分中的版本与你刚刚安装的 kernel 软件包的版本相同(如果你安装了 kernel-smp 和/或 kernel-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=3
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-2.47.1)
root (hd0,0)
kernel /vmlinuz-2.4.20-2.47.1 ro root=LABEL=/
initrd /initrd-2.4.20-2.47.1.img
title Red Hat Linux (2.4.20-2.30)
root (hd0,0)
kernel /vmlinuz-2.4.20-2.30 ro root=LABEL=/
initrd /initrd-2.4.20-2.30.img

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

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

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

30.6.2. LILO
如果你选择了 LILO 作为引导装载程序,请确认 /etc/lilo.conf 文件中包含的 image 部分中的版本与你刚刚安装的 kernel 软件包的版本相同(如果你安装了 kernel-smp 和/或 kernel-bigmem ,你也会看到这个部分):


prompt
timeout=50
default=2.4.20-2.30
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image=/boot/vmlinuz-2.4.20-2.47.1
label=2.4.20-2.47.1
initrd=/boot/initrd-2.4.20-2.47.1.img
read-only
append="root=LABEL=/"

image=/boot/vmlinuz-2.4.20-2.30
label=2.4.20-2.30
initrd=/boot/initrd-2.4.20-2.30.img
read-only
append="root=LABEL=/"


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

Added 2.4.20-2.47.1 * Added linux

2.4.20-2.47.1 后面的 * 意味着那部分中的内核是 LILO 会默认引导的内核。

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

共有 3 条评论

  1. cxm88 于 2007-06-18 14:18:12发表:

    好像9带的就2.4嘛

  2. jo_say 于 2006-10-03 13:43:56发表:

    挺好的 顶!

  3. 2 于 2005-10-01 11:12:57发表:

    不错,支持你下