调节和维护内核
本单元涵盖的主题:
 支持的体系结构
 内核模块
 内核参数
 内核升级

支持的体系结构和内核识别
作为用户程序和系统硬件之间的接口,内核在确保 Red Hat Enterprise Linux 应用到广泛的物理和虚拟硬件环境中发挥了重要的作用。
Red Hat Enterprise Linux 6 支持的体系结构
● Intel 和 AMD 64 位 x86-64
● Intel 和 AMD 32 位 x86
● IBM POWER ( 64 位 POWER6 或更高版本)
● IBM System z (系统 z9 或更高版本)
Red Hat Enterprise Linux 6 和虚拟化
● 在 Red Hat Enterprise Linux 5 和 6 ( x86-64 )中的 KVM
● 在 red Hat Enterprise Linux 5 ( x86 和 x86-64 ,半虚拟化和完全虚拟化)中的 Xen
● VMware ESX Server 和 VMware ESXi Server
● Microsoft Windows Server 2008 Hyper-V
Red Hat Enterprise Linux 6 支持硬件分区
● IBM POWER 和 System z
● Fujitsu PRIMEQUEST
3
Red Hat Enterprise Linux 6 支持公共云
● Amazon EC2 ( http://www.redhat.com/solutions/cloud/amazon/)
● IBM ( http://www.ibm.com/ibm/cloud/ )
● Savvis ( http://www.savvis.com/)
系统限制支持的系统限制取决于体系结构和实施的产品系列和产品版本。 URL http://www.redhat.com/rhel/compare 会随新版本的发布和新硬件资格的取得更新。
识别运行内核
1. cat /etc/redhat-release 安装的 Red Hat Enterprise Linux 版本
2. uname -r 当前运行的内核版本
3. yum list installed kernel\*
4. uname -m 或 arch
安装的内核版本
当前运行所在处理器体系结构
有时,内核会发出日志消息。这些消息记录在 /var/log/messages 文件中,标记为 kernel 服务。

管理内核模块
内核模块是可被动态链接到 Linux 内核的对象文件、可执行代码,同时可以运行来扩展其功能或者提供设备驱动程序。动态可加载的内核模块非常有用,因为它们可让 Linux 仅加载特定配置中特定系统上所需的内核组件,这节省了内存空间以及系统资源的使用。它们还能使内核进行扩展,而无需对其重新编译和重新引导系统。
模块加载和卸载
● 在引导时加载的核心内核映像位于 /boot/vmlinuz-VERSION.
● 虽然可以安装多个内核,但是只有一个是当前运行的内核。若要更改内核,必须重新引导系统。
● 每个内核都包含一组动态加载的模块,这些模块与该内核兼容,保留在 /lib/modules/VERSION/ 中。
● 通常,根据需要加载和卸载模块,无需用户(或管理员)交互。
● 可以使用 lsmod 列出当前加载的模块。
● 有时,可能需要使用 modprobe MODULENAME 手动加载模块。
● 可以使用 modprobe -r MODULENAME 删除不再使用的模块。
示例:
# modprobe -l | grep nf_conntrack_ftp
# modprobe nf_conntrack_ftp
# lsmod | grep nf_conntrack_ftp
# modprobe -r nf_conntrack_ftp
模块参数

许多模块接受参数,您可以在加载模块时指定这些参数。
modinfo 命令可以列出模块支持的参数。
在 modprobe 命令行中以 name=value 对形式指定的参数。
# modprobe ecryptfs ecryptfs_verbosity=1

通过在 /etc/modprobe.d/local.conf 配置文件中配置选项可以自动应用参数:
options ecryptfs ecryptfs_verbosity=1
示例:

$ modinfo nf_conntrack_ftp
filename:       /lib/modules/2.6.32-71.el6.x86_64/kernel/net/netfilter/nf_conntrack_ftp.ko
alias:          nfct-helper-ftp
alias:          ip_conntrack_ftp
description:    ftp connection tracking helper
author:         Rusty Russell <rusty@rustcorp.com.au>
license:        GPL
srcversion:     BCE75C1712FB8C7DF825917
depends:        nf_conntrack
vermagic:       2.6.32-71.el6.x86_64 SMP mod_unload modversions
parm:           ports:array of ushort
parm:           loose:bool


指定内核引导参数
内核命令行参数
● 可以通过将命令行参数传输到内核,来对内核进行配置。
● 可以在 /proc/cmdline 中检查用于启动当前内核的命令行。

bootparam(7) 手册中介绍了许多(并非全部)内核命令行选项。在文件 /usr/share/doc/kernel-doc-2.6.32-*/Documentation/kernel-parameters.txt 中的 kernel-doc 包中还介绍了一些其他参数。
● 命令行选项在引导加载器的配置文件 /boot/grub/grub.conf 中指定。
● 内核无法识别的任何内容都作为环境变量或参数传输到第一个进程。
示例:
1. 列出 /dev 目录中的环回设备: ls /dev/loop*
2. 将参数 max_loop=32 添加到 /boot/grub/grub.conf 中的内核命令行。
3. 重新引导服务器。
4. 确认内核是通过修改的命令行引导的。
5. 列出 /dev 目录中的环回设备: ls /dev/loop*

内核升级
1. 那个命令执行内核更新? yum update
2. 新内核要安装,而非更新。因为内核包拥有的每个文件都已定版,或位于定版的目录中,所以 RPM 需要安装并行版本。
3. 默认情况下,更新内核时, yum 将一直保持共安装 3 个版本,而自动删除所有较早的版本。
4. 若要使用新内核,必须重新引导计算机。
5. 尽管计算机将自动重新引导到升级的内核,但您仍可从 GRUB 引导加载器的菜单中选择较早的内核。
6. 如果手动删除内核,则不仅必须指定包名称(内核),还必须指定版本号。