内核优化是Linux管理员进阶的必经之路。特别是某些专业需求的服务器,内核经过定制优化后,可以提升30%-40%性能。内核优化之前要根据需求来定
制,再就是准备好后悔药,优化后出现问题的几率很高,特别是生产系统出了问题就麻烦大了。下面是个定制内核的例子,LZ借鉴下吧。
A.1.建构筹备
在建构定制内核之前,最重要的步骤是确定你有一张可运行的紧急引导盘,以防万一出错。要制作一个将会使用当前运行的内核来引导的引导盘,执行以下命令: / in/mkbootdisk `uname -r`
制作了磁盘后,请测试它以确定它能够引导系统。
要重新编译内核,你必须安装了 kernel-source 软件包。启用命令: rpm -q kernel-source
来判定它是否被安装。如果它没有被安装,从 Red Hat Linux 光盘、Red Hat FTP 站点( ,其镜像列表位于 )或 Red Hat 网络中安装它。 关于安装 RPM 软件包的详情,请参阅 第 V 部分 。
A.2.建构内核
本节的说明应用于建构定制的模块化内核。要建构单一化内核,请参阅第 A.3 节来获得关于建构和安装单一化内核的各方面的解释。
注记:这个例子使用 2.4.20-2.47.1 作为内核版本(内核版本可能会有所不同)。要判定内核版本,键入 uname -r 命令,然后用返回的内核版本来代替 2.4.20-2.47.1。
要建构用于 x86 体系的内核,遵循以下步骤(已根用户身份执行):
打开一个 shell 提示,改换到目录 /usr/src/linux-2.4 下。从此以后的命令都必须在该目录下执行。
你应该明确建构内核所使用的源码树的状况,这一点至关重要。因此,建议你从命令 make mrproper
开始着手。它会删除所有的配置文件,以及散落在源码树周围的从前建构的版本遗迹。如果你已有一个存在的配置文件
/usr/src/linux-2.4/.config ,在运行这项命令前把它备份到另一个目录中,命令运行后再把它复制回来。
推荐你从默认 Red Hat Linux 内核的配置着手。其步骤是,把系统体系的配置文件从
/usr/src/linux-2.4/configs/ 目录中复制到 /usr/src/linux-2.4/.config
目录中。如果系统的内存大于 4GB,复制包含 bigmem 的文件。
下一步,定制设置。如果 X 窗口系统可用,建议的方法是使用 make xconfig 命令来运行 Linux Kernel Configuration 。
注记: 要使用 make xconfig 命令所启动的图形化工具,你必须安装提供了 wish 命令的 tk 软件包。 关于安装 RPM 软件包的详情,请参阅 第 V 部分 。
图 A-1. 配置内核组件的类别
如图 A-1所示,点击一个类别来选择它。在每个类别中包含的是组件。选择组件旁的 y (是)、 m (模块)、或 n (否)来把它编译入内核、编译成内核模块、或不编译它。要进一步了解某组件,点击它旁边的 help 按钮。
点击 Main Menu 来返回到类别列表。
完成了配置后,点击主菜单中的 Save and Exit 按钮来创建配置文件 /usr/src/linux-2.4/.config 并退出 Linux Kernel Configuration 程序。
即便没有对设置进行任何改变,在继续前你也需要运行 make xconfig 命令(或其它内核配置方法)。
其它可用的内核配置方法包括:
make config — 互动文本程序。组件以线形格式出现,并被一个一个地回答。这种方法不需要运行 X 窗口系统,而且不允许你改变对前面问题的回答。
make menuconfig — 文本模式、菜单驱动的程序。组件以类别菜单的格式被显示; 使用和文本模式 Red Hat Linux 安装程序所用的同样方法来选择想要的组件。双态切换和要包括的项目相对应的标签:
(内建)、 [ ] (排除)、 M (模块)、或 (具备模块能力)。这种方法不需要 X 窗口系统。
make oldconfig — 这是一个非互动的脚本。它设置配置文件来包含默认的设置。如果系统使用的是默认 Red Hat Linux
内核,它会为用于该体系的 Red Hat Linux
包括的内核创建一个配置文件。这能够帮助你按照已知的工作默认值来设置内核,然后关闭你不想使用的功能。
注记:要使用 kmod 和内核模块,在配置中对 kmod su ort 和 module version (CONFIG_MODVERSIO ) su ort 回答 Yes 。
创建了 /usr/src/linux-2.4/.config 文件后,使用 make dep 命令来正确设置依赖关系。
使用 make clean 命令来准备要建构的源码树。
推荐你给定制内核添加一个修改版本号码,因此现存内核不会被覆盖。此处描述的方法是从意味事件中恢复的最简易方法。 关于其它可能性,请参阅 或 /usr/src/linux-2.4 中的 Makefile 的详情。
按照默认设置, /usr/src/linux-2.4/Makefile 在以 EXTRAVERSION 开头的行的结尾处包括 custom 这个词。后补这个词会允许系统同时拥有原有的工作内核和新内核(版本 2.4.20-2.47.1custom)。
如果系统包含不止一个定制的内核,区别它们的好办法是在后面添加日期(或其它标识符号)。
使用 make bzImage 来建构内核。
建构使用 make modules 所配置的模块。
使用 make modules_i tall 命令来安装内核模块(即便事实上什么也没有建构)。请留心命令中的下划线( _ )。
这会把内核模块安装入 /lib/modules/ KERNELVERSION /kernel/drivers 目录( KERNELVERSION
是 Makefile 中指定的版本)。在这个例子里是
/lib/modules/2.4.20-2.47.1custom/kernel/drivers/ 。
使用 make i tall 来把新内核和相关文件复制到正确的目录中。
除了在 /boot 目录中安装内核文件,这个命令还执行 / in/new-kernel-pkg 脚本。该脚本会建构一个新的 initrd 映像,并在引导装载程序的配置文件中添加一个新项目。
如果系统有一个 SCSI 适配器,而 SCSI 驱动程序被作为模块编译了;或在建构内核时把 ext3 支持作为模块(Red Hat Linux 的默认设置)编译入,你就需要 initrd 映像。
即便 initrd 映像和引导装载程序被修改了,你也应该校验这些修改的正确性,并确定使用定制的内核版本而不是 2.4.20-2.47.1。关于校验这些修改的信息,请参阅 第 30.5 节 和 第 30.6 节 。
A.3.建构单一化内核
要建构单一化内核,除了几个例外以外,其步骤和和建构模块化内核相同。
当配置内核时,不要把一切都编译成模块。换一句话说,只对问题回答 Yes 或 No 。还有,你应该对 kmod su ort 和 module version (CONFIG_MODVERSIO ) su ort 回答 No 。
省略下面几个步骤: make modules make modules_i tall
在 grub.conf 文件中的 kernel 行后补 nomodules 或编辑 lilo.conf 来包括 a end=nomodules 行。
阅读(674) | 评论(0) | 转发(0) |