Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2566189
  • 博文数量: 709
  • 博客积分: 12251
  • 博客等级: 上将
  • 技术积分: 7905
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-17 00:00
个人简介

实现有价值的IT服务

文章存档

2012年(7)

2011年(147)

2009年(3)

2008年(5)

2007年(74)

2006年(431)

2005年(42)

分类: LINUX

2006-03-02 17:40:05

为最佳性能而调优 Red Hat(1) 
  虽然您很可能已安装了 Linux,但为了完整起见,我们将讲述基础知识并且“从头开始”一步步“干净地”安装 Red Hat 7.3。
  以前用户在安装 Linux 时常常会犯这样或那样的错误;现在的 Linux 安装程序简化了安装过程,使安装过程就象小孩玩玩具那样简单。现
在您只需在几个设置屏幕中单击几下,提供一些基本信息,按要求放入所需的光盘。但是,在安装过程中,您需作出三个关键的选择,这些选
择可能影响今后系统的性能和易维护性:分区布局、底层文件系统和安装的软件包。
  
  对于 Linux 管理员来说,如何为硬盘驱动器分区是一个长期有争论的话题。简短的回答是不存在唯一“正确的”创建/分配分区的方法。
意见多种多样,一个极端是“创建单个‘根’分区并把所有的东西都装在其中”,另一个极端是“用于某个目的的每个文件系统应该驻留在它
自己的分区上”。多数有经验的管理员并不喜欢这两个极端,他们仅为某些专用的文件系统创建分区;下一页分区时应考虑的因素详细介绍了
这样一个布局。
  目前,多数分发版在安装时提供多个文件系统供选择:EXT2、EXT3、JFS、ReiserFS 等。选择哪个文件系统又是一个有争议的话题。这部
分的选择文件系统将讨论各种文件系统的优劣及选择。
  最后,在最初安装阶段中安装哪些软件包将直接影响管理员在系统维护上所花时间的多少。这个问题并不象前两个问题那样重要,但是事
先考虑机器的用途以及实现这个目标所需安装的软件包将减少今后的工作量。
  让我们首先来考虑分区。
  分区时应考虑的因素 第 3 页(共6 页)
  
  在决定怎样为硬盘驱动器分区时,您应该考虑以下三个重要问题:
  
  您必须有多少驱动器空间?
  您想把文件系统分成几个部分?
  您估计隔多久才升级或重新安装操作系统?
  显然,可用的空间决定了每个分区的大小。在考虑分几个区的时候,您喜欢单个文件系统还是多个小分区?如果您选择让 Red Hat 自动为
您的驱动器分区,那么 Red Hat 将创建一个较小的 /boot(25MB)分区并把剩余的硬盘驱动器的空间分配给 /。
  
  这种方法的缺点是如果您在使用了六个月后决定改变这个布局,那么您将不得不再次从新开始并从头开始安装。然而,如果系统被分区成
几个较小的分区,那么数据可被转移到另一个分区,然后原来的分区被删除并修改它的大小,再把数据转移回来。最后请注意,如果您的系统
将被用于开发而且在测试程序或配置操作系统时需要经常干净地重装系统,那么请选择多个分区。然后在您重新安装的时候,您只需格式化存
储特定于操作系统的文件的文件系统,您不必修改包含用户数据、源代码或其它类似数据的所有文件系统。
  
  以下是我建议的多分区布局,它并不很复杂,但有最大的灵活性(文件系统的大小是基于 20GB 的驱动器和 512MB RAM;请根据您的需要
和驱动器大小作些调整):
  
  /boot(25MB):
    hda1 swap(1000MB):
    hda2 /(3000MB):
    hda3 extended(剩余的驱动器空间):
    hda4 /var(3000MB):
    hda5 /usr/local(3000):
    hda6 /home(剩余的部分):
    hda7
  选择文件系统 第 4 页(共6 页)
  
  在为驱动器分区的同时,您还需决定每个分区所用的文件系统。
  
  当前的趋势是倾向于选择某种形式的日志记录文件系统,这主要是因为今天的硬盘驱动器的大小。完全检查(如果需要的话,还要修复)
一个较大的硬盘驱动器需要半个多小时,如果您的环境要求服务器每周 7 天、每天 24 小时都可用,那么日志记录文件系统可把时间减少到一
分钟以内。但是取决于您在和谁交谈,日志记录文件系统并不适合广大用户而且可能把数据毁坏到无法修复的地步(我的经验是,我已在我的
所有的机器上使用 EXT3 文件系统,在一年多的时间里从未遇到过问题。但是,常言道,您的历程可能有所不同(Your Mileage May
Vary,YMMV))。
  
  Red Hat 7.3 提供这些 Linux 文件系统类型:EXT2(非日志记录)、EXT3(日志记录)、VFAT(可直接从 Windows 系统中读取)、软件
RAID 和 swap。
  
  如前所述,文件系统的选择取决于个人经验、系统(双重引导还是单个 OS)和机器的用途。注意您完全可以混用和匹配文件系统。例如,
由于 ReiserFS 文件系统所附带的元数据的数量,ReiserFS 只能被安装到不少于 50 MB 的分区。所以,在前一页的分区布局示例中使用
Reiser 意味着需要更大的 /boot 分区或使用 EXT2 格式。
  
  为了安装不包括在 Red Hat 中的其它日志记录文件系统(例如 ReiserFS 或 JFS),您可以收集和配置所需的东西,但这超出了本教程的
讨论范围。如果您有文件系统方面的问题,请访问 Red Hat Web 站点;他们通常为给定的分发版提供详细的安装说明书。请参阅参考资料部分
中的链接。
  
  软件包的选择 第 5 页(共6 页)
  
  选择软件包的要点是仅安装您想用的软件包。安装从不使用的软件包的代价如下:
  
  它们占用了宝贵的磁盘空间,而这完全没有必要(当然,考虑到目前 100 GB 硬盘驱动器的价格,宝贵是一个相对的词)。
  许多服务器相关的程序的运行方式是“服务”(请参阅各种日常维护部分了解这个主题的更多信息),被激活的这些服务可能为黑客提供
了一条的攻击系统的途径。
  安装和运行不需要的服务消耗系统资源。
  总的来说,Red Hat 7.3 在安装软件包时为您提供了三种方式(前几个版本所提供的选项略有不同)。第一个软件包选择屏幕让您选择是
升级系统还是干净安装。如果选择升级,那么 Red Hat 将在整个硬盘驱动器中搜索以前安装过的版本,然后升级合适的软件包。
  
  如果您选择后者,那么您可以选择一个软件包“组”(group);也就是,workstation(工作站)、laptop(膝上型电脑)、server(服
务器)或 custom(定制)。每个选项将安装预先配置的一组软件包,使系统适合于某种用途。显然,没有必要解释 workstation、laptop 和
server;custom 提供更详尽的认证选项(NIS、LDAP 或 SMB),还在后续的安装过程中提供较长的软件包选项列表。
  
  您还是应该根据自己的需求来选择,但是请参考一个专家的两个建议,这个专家已安装了几百次 Linux 并总结了经验:(1)尽量重新安
装;升级系统将使系统更复杂,所带来的问题可能比所解决的问题还要多;(2)仅当您有特别需求时才选择定制安装,在一般情况下作粗略地
选择,即使用所提供的软件包组(workstation、laptop 或 server),然后再挑选软件包。后面的挑选没用的软件包将详细讲述如何删除不再
使用的软件包。
  
  安装补遗 第 6 页(共6 页)
 
  Red Hat 的安装过程是比较简单和安全的,在大于 95% 的情况下能象它的广告所描述的那样正常运行。如果发生不幸的 5% 情况,请参考
下面的提示:
  
  如果问题可能和硬件有关,请查询有关供应商的站点,获取更新的驱动程序。随着企业对基于 Linux 的系统的需求不断增加,更多的供应
商将经常更新他们所提供的驱动程序。
  搜索 Google,寻求问题的解决方案。无论遇上什么问题,几乎可以肯定地说其它人已遇到过类似的问题并且可能已找到了解决方案。
  因特网上有成千上万个邮件列表。请搜索和您的问题相关的邮件列表(例如网络、硬件等)。Linux 社区中有很多人愿意提供支持。如果
您准备公布寻求帮助的消息,请您一定要包括尽可能详细的信息(您的配置、具体问题和错误消息)。请访问 Red Hat Web 站点,获取一组公
司支持的邮件列表(请参阅参考资料)。
  如果您购买了零售的 Red Hat 副本,请花点时间阅读其中的文档。总的来说,文档写得不错,还包括太多的安装选项的注解和排除故障的
窍门。在 Red Hat 的 Web 站点的 Support and Docs 部分还有选择得体的一组支持文档和实用指南(请参阅参考资料)。
  假定您的安装已成功完成而且您可以登录系统,请花些时间查看系统并作全面测试,以确保一切都象广告中所说的那样。如果在这个阶段
出现了大问题,您可以容易地重新安装,以解决问题。这样做的目的是获得一个可靠的稳定的系统,并从这个“可依赖的”系统为起点,一步
步优化。
  
  在下一部分优化已安装的软件包并使其更安全中,我们将开始优化过程,首先使用您的发行商发布的错误修正或升级来更新所有重要的软
件包。

 
=======================================================
为最佳性能而调优 Red Hat(2) 
保持系统的完整性
  
  这部分将详细描述更新和优化 Linux 系统的下一个逻辑步骤:更新已安装的软件包(需使用分发版被发布后发布的勘误表和错误修正)和
删除所有已安装的但没用的软件包。虽然这里讨论的细节仅和 Red Hat 有关,但是所有的分发版都有类似的软件包管理和更新机制。请访问供
应商的站点了解更多信息。
  
  更新和挑选 Linux 软件包的过程包括两个不同的任务:
  
  删除所有不再需要的软件包
  使用勘误表、错误修正和所需的改进功能来更新所有的剩余的软件包。
  显然,您无需更新将被删除的软件包,所以您先完成哪一步并不重要。
  
  使用勘误表和错误修正的原因是很明显的。系统的完整性和可靠性直接和所安装的程序成正比。删除所有没用的软件包的原因已被提及 —
没有理由把从不使用的程序塞进系统,也没有理由运行没人需要的服务,因为这将消耗系统资源。
  
  Red Hat 的安装、维护和管理程序的系统被称为 Red Hat 软件包管理器(Red Hat Package Manager,RPM)。一旦您掌握了一些基本命令
,您就能容易地使用它(Linux 中还有一些图形界面的前端工具;但是在本教程中,我们只讲命令行工具,因为所有的分发版中都有命令行工
具)。
  
  第一步是确定系统中实际已安装的软件包。在 RPM 数据库中查询(query,[q])所有已安装的软件包的命令是:
  
  [tom@thor tom] # rpm -qa
  
  结果列表将飞快地滚动,所以更好的办法是把查询的结果重定向到文本文件,您可以在文本编辑器中打开这个文件,也可以把这个文件打
印出来,以供参考。
  
  [tom@thor tom] # rpm -qa > package-list
  
  挑选没用的软件包将详细讲述如何删除不必要的软件包。
  
  当您获得在 Red Hat 软件包管理器中生成的软件包列表后,剩余的步骤就变得很清楚。每次选择一个将被删除的软件包,使用以下命令把
它从系统中删除。请注意,为了删除或安装软件包,您在登录时使用的用户名必须是 root:
  
  [root@thor root] # rpm -e package-name
  
  与删除不必要的软件包相对的是添加所需的软件包,这些软件包并不被包括在 Red Hat 的缺省软件包组中。一个很好的例子是 Lynx 文本
浏览器,在命令行和 GUI 桌面之间,有的管理员更喜欢前者,对于他们来说,Lynx 是必不可少的。
  
  安装软件包的方法(或者从 Red Hat CD,或者从其它来源,例如 rpmfind.net,请参阅参考资料)同样很简单。如果您使用 Red Hat CD
作为软件包的来源,那么请按照以下过程来安装:
  
  [root@thor root] # mount /dev/cdrom
  [root@thor root] # cd /mnt/cdrom/RedHat/RPMS
  [root@thor root] # rpm -ivh package-name
  
  当然,来自外面的 RPM 必须先被下载,然后使用上面的 rpm -ivh ... 命令来安装。如果您想查看 rpm 的全部选项的列表,请在命令提
示符后输入 man rpm 。
  
  当您已删除没用的软件包后,下一步是上网,请访问 Red Hat 勘误表页面,在可用的更新列表中搜索。从技术上说,有三个不同的更新页
面:安全性警告页面、错误修正页面和改进页面。它们之间的区别在于更新的重要性或级别。安全性警告方面的更新直接影响到程序能否安全
地运行;安全性更新页面是必须经常访问的页面,对于使用直接连接到因特网的系统的用户来说更是如此。错误修正页面 — 如其名称所示 —
包括纠正程序“错误”的软件包更新。最后,改进页面有一个软件包列表,这些软件包在程序被改进后已经被更新过。请根据您的分发版的版
本选择正确的勘误表页面,因为有的更新只适用于某个发布版。
  
  您还记得在 Red Hat 软件包管理器中讲过的 rpm -qa 列表吗?现在是生成新的列表的时候了,生成后您就可以比较勘误表上的软件包和
已安装的软件包,了解勘误表上的哪些软件包更新。
  
  下一步,我们将学习如何升级软件包。
  
  当您下载完所需的软件包后(请参阅更新已安装的软件包),请输入:
  
  [root@thor root] # rpm -Uvh package-name
  
  来安装这些软件包。请注意,通过提供不带版本信息的软件包名称,您可以“成组地”安装相关软件包。例如,许多程序有一个核心软件
包、一个客户机软件包和一个服务器软件包(LDAP、Samba 等)。安装所有所需的 Samba 软件包的命令是 rpm -Uvh samba 。请注意,在勘误
表上单击软件包后将出现软件包页面,这个页面包括这个更新的说明、所有相关的依赖性和完整的安装说明。
  
  下一步,我们将学习如何完成各种日常维护工作:关闭所有非必需的服务、清除用户和组文件、关闭一些虚拟控制台和 X-Window 的一些
相关配置。
============================================
为最佳性能而调优 Red Hat(3) 
系统服务管理 第 1 页(共6 页)
  
  在完成软件包维护和升级后,我们应当把目光转向系统本身,进行进一步的清理。如果您只完成这部分中的个别步骤,那么它们产生的效
果不会很显著。但是如果您完成所有的步骤,那么您的系统将变成优化的易于维护的系统。
  
  系统服务是程序,它们通常的形式是守护程序,它们在后端的预先分配的 TCP/IP 端口上侦听请求。当用户连接到 Web 服务器的时候,在
端口 80(缺省值)上侦听的 Apache 守护程序将响应服务请求。如果请求是有效的,那么 Apache 将作出响应并把所请求的 Web 页面返回给
客户机,然后 Apache 将再次“休眠”,直到接收的下一个请求。是的,休眠的服务并不需要太多的系统资源,但是如果您的系统并不是被配
置成 Web 服务器,那么为什么要运行 Apache?如果您从不使用 NFS,那么为什么要激活 portmapper 守护程序?本教程信奉“越少越好”的
理念,对于某个系统来说,没有理由运行那些不是特别需要的服务。
  
  取消系统服务
  
  在 Red Hat 系统中,控制哪些服务在启动时运行的方法是以 root 用户的身份登录(或通过输入 su - 来获得完全的 root 环境)再输入

  
  [root@thor root] # setup
  
  这将调用一个基于光标的管理设置程序。下一步,在提供的列表中选择 System services。向下滚动各条目,不选择所有不必要的服务。
如果您想查看结果,请重新引导系统,然后查看 netstat -lnp --ip 命令的输出。以下是“以前”(标准的系统安装)和“以后”(关闭所有
没用的服务,只剩下 SSH 守护程序在运行):
  
  [root@thor root]# netstat -lnp --ip
  Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN 669/rpc.statd
  tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 641/portmap
  tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 831/sshd
  tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 906/sendmail: accep
  udp 0 0 0.0.0.0:32768 0.0.0.0:* 669/rpc.statd
  udp 0 0 0.0.0.0:111 0.0.0.0:* 641/portmap
  
  [after]
  [root@thor root]# netstat -lnp --ip
  Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 712/sshd
  [root@thor root]#
  
  请注意:与其使用“-a”(all,全部)选项,不如使用“-l”选项,因为我们只关心在套接字上侦听的守护程序。
  
  减少虚拟控制台
  
  虚拟控制台使您能够作为同一个用户或不同的用户多次登录到系统中去。启动新的控制台或登录会话的方法是同时按 、
和一个功能键(F1 - F6)。管理员通常这样使用多个虚拟控制台:以 root 用户的身份完成任务,同时在他们原来的登录会话中仍是普通用户
。这当然很好,但有多少人需要同时访问六个虚拟控制台(别忘了,虚拟控制台类似于系统服务;它们在被激活之前一直使用系统服务保持活
动状态)?减少可用的虚拟控制台的数量的方法是打开 /etc/inittab 并把引用 /sbin/mingetty ttyx 的一行或多行改为注释。以下是该文件
经过编辑后的输出:
  
  # Run gettys in standard runlevels
  1:2345:respawn:/sbin/mingetty tty1
  2:2345:respawn:/sbin/mingetty tty2
  3:2345:respawn:/sbin/mingetty tty3
  #4:2345:respawn:/sbin/mingetty tty4
  #5:2345:respawn:/sbin/mingetty tty5
  #6:2345:respawn:/sbin/mingetty tty6
  
  禁止 X 自动启动
  
  多数管理员喜欢从命令行完成各种日常的任务。然而,多数商业的 Linux 分发版在系统初始化后缺省地启动 X-Window 管理器。如果您在
编译程序或编辑配置文件,那么启动 X-Window 管理器将消耗大量系统资源。禁用 X-Window 管理器的方法是编辑 /etc/inittab 文件,找到
内容是 id:5:initdefault 的那一行,再把它改为 id:3:initdefault。系统启动后将提供命令行登录,当您需要运行窗口管理器的时候,只要
输入 startx 就可以了,很容易。
  
  与我们讨论的窗口管理器相关的是桌面环境,通过使用最新版本的 binutils(在写本教程的时候,最新的是 2.12.x)和 gcc 3.x 编译器
来重新编译桌面环境能大大提高性能。2.12.x 版本的 binutils 使编译器能利用 combreloc 功能来构建程序,combreloc 允许预先链接重定
位的代码:在 C++ 代码、Qt 和 KDE 中,重定位的代码有广泛的应用。然而,这样大的任务肯定不适合神经脆弱的人。根据不同的机器,需要
花四到五小时才能完成对 Qt 和 KDE 的编译。对于有耐心和所需的毅力的人来说,最终的结果是运行速度明显提高的较大的可执行文件。
  
  请搜索 KDE 的一个新闻组,了解这个过程的更多细节(和告诫)(请参阅参考资料)。
  
  优化硬盘驱动器
  
  如果您的系统中有一个 IDE 硬盘驱动器而且您所运行的内核比较旧(一般来说,较新的 2.4.x 内核能优化硬盘驱动器的性能设置而无需
另外的配置),那么您应当考虑使用 /sbin/hdparm 程序。但是,请注意,不恰当地使用 hdparm 至少会降低硬盘驱动器的性能,在最坏的情
况下可能破坏驱动器本身。用户需承担使用 hdparm 的风险,所以请仔细阅读它的手册页( man hdparm )。
  
  hdparm 的一些常用选项如下:
  /sbin/hdparm -c1 /dev/hda 或 hdb 或 hdc 等 :启用 PCI 总线上的 32 位 I/O。
  /sbin/hdparm -d1 /dev/hda :启用 DMA。
  /sbin/hdparm -d1 -X66 /dev/hda :启用 UltraDMA 转移。
  获取系统中当前硬盘驱动器的设置列表的方法是(作为 root)输入: /sbin/hdparm /dev/hda
  当您把一切优化到最佳状态后,请把各种命令添加到 /etc/rc.d/rc.local 文件中去,使这些命令在每次系统引导时自动运行。
  
  配置 TCP/IP 资源
  对于多数人来说,配置 TCP/IP 栈是邪恶的魔术,但是如果您运行高负载的 Web 服务器,那么有选择地更改 Red Hat 的一些缺省值能明
显提高系统响应速度。TCP/IP 配置值被存储在 /proc/sys/net/ipv4 目录中,通常可以是某个值或用“0”(关)和“1”(开)来分别表示禁
用和启用。在写本教程的时候,Red Hat 发行的 Red Hat 7.3 的缺省值如下:
  
  tcp_fin_timeout 180
  tcp_keepalive_time 7200
  tcp_window_scaling 1
  tcp_sack 1
  tcp_timestamps 1
  在下面的设置中,更改某些值能增加服务器可处理的 TCP/IP 连接的数量,缩短服务器在终止失效连接前的等待时间,禁用一些不必要的
IP 扩展。把这些设置添加到 /etc/sysctl.conf 文件,然后重新启动网络守护程序( /etc/rc.d/init.d/network restart )。
  
  # Decrease the time default value for tcp_fin_timeout connection
  net.ipv4.tcp_fin_timeout = 30
  # Decrease the time default value for tcp_keepalive_time connection
  net.ipv4.tcp_keepalive_time = 1800
  # Turn off tcp_window_scaling
  net.ipv4.tcp_window_scaling = 0
  # Turn off the tcp_sack
  net.ipv4.tcp_sack = 0
  #Turn off tcp_timestamps
  net.ipv4.tcp_timestamps = 0
=====================================
为最佳性能而调优 Red Hat(4) 
为什么定制内核?
  
  任何 Linux 系统的核心是内核本身。这部分讲述编译定制的内核、为什么要定制内核、构建内核的两个基本方法、编译内核的步骤以及应
该知晓的各种选项。
  
  一般来说,Linux 的长期用户很少在他们的系统中使用标准内核。这并不是因为多数分发版提供的内核存在严重错误 — 实际上,Red Hat
在他们的产品中提供的内核是稳定的而且“做工精良”,这是妇孺皆知的。问题是,多数主流发行商编译的内核需在尽可能多的体系结构和系
统中稳定运行。所以,几乎可以肯定地说,适合于广大用户的内核并不是为您的系统和需求而优化的。
  
  编译定制内核的一些常见理由是:
  
  越少越好:一般来说,为某个系统编译的内核要比标准内核运行得快而且在日常操作中更稳定。
  定制的内核往往使用更少的内存。这将减少 I/O 开销(内存中的内核代码从不被转移到交换区),释放系统资源,供其它进程使用。
  在标准内核被发布后,定制内核使您能够利用改进的代码、新的驱动程序和错误修正。
  当您从内核中除去没用的驱动程序和功能后,新内核自然要比标准内核更安全。
  把重要的功能和驱动程序构建到内核中去而不是把它们作为模块装入,这样做能提高系统的响应速度。
  很多人不愿编译内核的主要原因很可能是以为编译过程很复杂(或者说可怕)。希望通过学习这部分内容能使您认识到编译过程并不复杂

  两种思路……
  
  在编译内核时有两种基本的思路:基于模块的和单块的。
  
  在单块的内核中,所有的系统服务、功能和驱动程序都被直接构建到内核中。
  在与之相对的基于模块的内核中,只有一些关键组件才被构建到内核中,其余的组件将在需要的时候作为模块被装入。
  正如 Linux 中的许多其它作法那样,常用的定制方法是两种方法并用。关键的服务和驱动程序被编译到内核中去,较少用到的组件被构建
成模块。一般的规律是,为某一个系统构建的内核往往更少使用模块。为多个系统构建的内核往往更多地使用模块。
  
  内核编译概述,
  
  只要您仔细地完成某些步骤,构建内核并不象有些人想象的那样困难。简而言之,构建的步骤如下:
  
  决定构建内核。
  下载所需的源代码 tarball 并将它移到 /usr/src。
  “cd”至 /usr/src。
  为安全起见,删除当前内核源代码的现有的符号链接(symbolic link)( rm -rf /usr/src/linux )。当前内核软件包被解压到名为
/usr/src/linux-kernel-version 的目录,但一些旧的软件包仍按旧的约定被解压到 /usr/src/linux — 这将覆盖现有的 Linux 源代码树。
  解压源代码软件包( tar xvzf linux-kernel-version )。
  再次创建先前删除的符号链接( ln -sf /usr/src/linux-kernel-version linux )。
  “cd”至 /usr/src/linux。
  输入 make mrproper 。这个命令将清理源代码树并删除所有旧的目标文件。现有的 .config 文件也将被删除(.config 保存着编译选项
),所以,如果您想保存该文件中的设置,请把该文件复制到安全的位置,等 make 进程完成后再把它复制到 /usr/src/linux。
  下一页将完成定制过程。
  
  内核编译概述
  
  在前一页,我们已开始构建内核的过程:下载和解压源代码,清理源代码树。在这页中我们将完成构建内核的过程。
  
  根据您偏爱的界面,输入 make config、make menuconfig、make xconfig 或 make oldconfig。make config 是基于控制台的配置过程;
make menuconfig 提供基于光标的菜单配置界面;make xconfig 是基于 X-Window 的界面;如果您想用现有的内核配置来构建新的内核而且您
只想看到新内核树中存在的新选项,请使用 make oldconfig。
  当您作出合适的配置选择后,请输入 make dep ; make clean 。
  为了实际构建内核,请输入 make bzImage 或 make install。前一个命令构建内核映象但并不把它安装到 /boot 目录;后一个命令构建
并安装内核映象。
  如果内核编译时有错误,请输入 make modules && make modules_install。这两个命令将构建并安装所有基于模块的组件。
  最后,把新的内核复制到 /boot(如果您使用了 make bzImage 命令)。如果您运行的是 Red Hat 的分发版,那么您还得更新
System.map 和 initrd 映象。别忘了在引导装入程序的配置中加入新的内容,这样做的目的是为了在内核引导失败的情况下使用户仍然能够回
到系统中,作出合适的修改。
  Red Hat 提供一个综合的实用指南,该指南详细描述了如何编译内核(请参阅参考资料)。对于初次构建 Linux 内核的人来说,这个指南
值得一读。
  
  配置窍门和提示
  
  构建优化的 Linux 内核的最重要的步骤是前面提到的 make configure/menuconfig/xconf/oldconfig 过程。在这个过程中,您选择把哪
些系统、服务和驱动程序包括在内核中,哪些东西被构建成模块。在这个过程中,最常见的问题是“在配置中包括哪些东西、不包括哪些东西
?”和“哪些组件被构建到内核中去、哪些组件被构建成模块?”
  
  对第一个问题的简短回答是“只包括您所需的并使系统按您的要求运行的东西”(别忘了,越少越好)。对于第二个问题,回答是“摸着
石子过河”,这有点令人费解。甚至有经验的管理员也未必能够在第一次配置后就能使系统达到最佳性能。如果编译过程失败或者您得到的是
无法引导的内核,那么请使用引导装入程序的备用选项,返回系统后仔细检查配置;试试另一组选项。
  
  第二个问题(哪些组件被构建到内核中去、哪些组件被构建成模块?)的回答取决于您将怎样使用系统。还有经验。例如,如果 Maestro3
声音驱动程序被编译到内核中去,那么该驱动程序无法在某些 Dell 笔记本电脑上运行 — 出于某些原因,应该以模块的形式装入这个驱动程
序。在其它使用主流硬件的系统中,您可以把任何需要的东西构建到内核中去。在这里,系统配置和经验常常决定了您的选择。
  
  内核配置中的重要选项
  
  为了使初学者熟悉内核配置的过程,下几页将讲述值得注意的一些重要选项,这些选项可能提高或降低系统性能。
  
  在我们开始以前,请注意,在使用 menuconfig 和 xconfig 配置界面的时候,您可以获得大多数选项的描述,方法是选择您有问题的选项
,用 Tab 键选中 help 按钮,再按 Enter 键。
  
  还有,不同版本的内核的配置选项是不相同的。如果您在内核中没有看到某个选项而您需要这个功能,那么您有两种选择:试试另一个内
核,或者查找合适的 diff 文件,然后手工修补内核。如果您想了解如何使用补丁,请参阅前面提及的 Kernel-HOWTO 文件(请参阅参考资料
)。
  
  内核配置选项:代码成熟程度和级别选项
  
  第一个需要注意的选项是列表中的第一个菜单项:Code maturity level options。除非您选择“Prompt for development and/or
incomplete code/drivers”,否则您将无法看到许多内核配置选项。
  
  General setup 和 Loadable module support 中的缺省值适合于大多数系统。
  
  在 Processor type and features 中,请注意内核编译的目标处理器的类型(缺省值是 Pentium 3/Celeron)。SMP 是缺省值;如果您在
为单处理器系统构建内核,请您取消选择这个选项。当前的内核为“Preempible Kernel”提供支持。请选择这个选项。该功能的描述中说:“
在响应实时或交互式事件时,通过使优先级较低的进程失效(即便它在内核模式中执行系统调用),减少内核的等待时间。即使在系统负载不
大的时候,该功能也能使应用程序运行地更稳定。”
  
  内核配置选项:电源管理选项
  
  在列表的下面,下一个值得注意的菜单组是 Power management options。一般来说,膝上型电脑的用户至少需要某种形式的电源管理,但
在这方面,BIOS 在与操作系统交互时常常会出现问题,这一点是众所周知的。除非您确信您的系统完全支持 ACPI,请使用简单的 APM。除了
少数一些笔记本电脑,启用 ACPI 将使所构建的内核在引导时遇到麻烦。对于台式机用户和服务器管理员来说,设置电源管理就象设置“个人
偏爱”那样无关紧要。
  
  Bus options 包括对各种总线拓扑结构的支持,例如 PCI、EISA、MCA 和 PCI 热插拔支持。除了一个值得注意的选项外,其它缺省值已被
合适地设好。如果您准备使用 PCMCIA 网络或无线卡并计划使用 pcmcia-cs 驱动程序代码而不是 Linux 内核提供的驱动程序,那么请在
Network device support 菜单中禁用 PCMCIA/Cardbus 支持选项但启用 PCMCIA network device support。
  
  内核配置选项:设备支持选项
  
  配置菜单上的大多数设备支持选项不需要特别的说明:如果您需要某个选项的支持,请选择它;否则就别选它。需要特别说明的是
Network device support。目前的 2.5.x 开发内核在缺省情况下启用一小部分设备,但一些旧的内核缺省地启用许多设备(作为模块)。仔细
地查看每个选项,不选所有今后用不到的选项。建议您把一个或两个 EtherExpressPro/100 选项构建到内核中去,因为许多一般的网卡支持这
种芯片组,而且准备一个备用网络设备选项是不错的主意。
  
  Filesystems 菜单是另一个需要仔细选择的菜单。如果您选择 ReiserFS 或 EXT3 文件系统,那么必须启用相关的支持并把它构建到内核
中去;否则,您的系统将无法引导(在系统初始化时,Linux 必须能访问分区上的文件系统)。建议您选择 EXT2 选项。它所包含的代码相对
较少,在出现问题时,内核中的 EXT2 支持可能有用。如果您准备通过 Samba 连接到 Windows 共享文件系统,那么请在
Filesystems-->Network files systems 菜单中选择 SMB 选择(请参阅参考资料,其中有一个 samba.org 主页的链接)。
  
  内核配置选项:声音驱动程序选项
  
  最后,请注意您在 Sound 中选择的选项。众所周知,Linux 的声音驱动程序中存在较多的错误。选择正确的驱动程序能使您顺利得到正常
运行的设备而不必为配置问题伤透脑筋。
  
  构建定制的 Linux 内核并不象火箭科技那样复杂,但确实需要一些耐心和不懈的努力。最终,您的勇气将得到回报。
 
====================================================
为最佳性能而调优 Red Hat(5) 
 
总结
  
  优化标准的 Red Hat 系统并不难,也不费时;您只需理解组成该分发版的底层组件并利用 Linux 的本身的配置功能来优化那些组件。
  
  本教程主要讲述了以下四个方面的内容:
  
  安装问题
  删除、安装和更新程序软件包
  为提高硬件性能和软件性能而优化系统
  构建定制的内核的所需步骤
  
  参考资料
  
  由于 Red Hat 已经很流行,所以在 Web 上有大量关于这些主题的信息:性能调优、分区选择、文件系统选择、一般的系统管理和构建定
制的内核。以下是一些参考资料,供您浏览。当您在为看上去难以理解的问题寻找答案的时候,别忘了 Google 的功能。
  
  仅和 Red Hat 有关的信息:
  
  当然,Red Hat Web 站点有关于 Red Hat 的所有信息。该站点有产品资源和支持文档、该公司支持的邮件列表、Red Hat 勘误表页面和当
前硬件兼容性列表。
  Securing and Optimizing Linux (Red Hat Edition - A Hands on Guide) 是一个开放源代码、在线书项目,作者是 Gerhard Mourani。
其中一些内容有点过时,但是多数概念在多个版本发布中都有用。
  Linux 文档编制计划(Linux Documentation Project,LDP)
  
  Linux 文档编制计划是全面提供一般 Linux 文档的最佳站点之一,恰巧的是,该计划接受了 Red Hat 的大量赞助。LDP 包括成千上万的
实用指南、指南和常见问题解答,甚至还有一个可搜索的手册页列表。如果您在这里找不到所需的信息,那么这些信息一定还没被写出来。
  
  更多参考资料
  
  内核源代码和文档
  
  Linux 内核源代码被存储在 kernel.org。索引页面的上部是所有的当前内核列表(开发和稳定),还有所有重要的 changelog 文档的链
接,这些 changelog 包含每个内核发布中的更新和错误修正的详细信息。
  Kerneltrap.org 是关于 Linux 内核的最新信息的来源。
  Kernel Cousins 被描述为“试图跟踪各种开发者邮件列表的活动。通过总结进行的讨论,所提供的信息要比一般的新闻服务所提供的信息
更为详细。”
  如果您想了解关于内核编译的详细信息,请参阅全面的内核实用指南。
  文件系统信息
  
  如果您想了解当前文件系统的更多信息,请访问以下各支持 Web 站点:
  
  在 developerWorks,您可以找到 JFS for Linux 的白皮书、常见问题解答、手册页、实用程序、源代码和安装文档。
  您可以在 namesys.com 找到 ReiserFS 文件系统 的类似参考资料。
  到处都有 EXT3 文件系统的信息。Red Hat 写了 EXT3 的白皮书,Daniel Robbins 写了两篇有关 EXT3 的 developerWorks 文章,写得不
错;第一篇是 Introducing ext3,第二篇是 Surprises in ext3。
  Daniel 的 Advanced filesystem implementor's guide 是一本讲述文件系统问题和选择的好书,建议您从第 1 部分开始阅读并读完全书
(总共是 11 部分)。
  其它参考资料
  
  请了解另一种安装 Red Hat 软件包的方法。
  如果您想了解 Qt 和 KDE 的有关信息,请访问 kde.org 的 Qt 和 KDE 邮件列表。
  请访问 samba.org,了解有关 Samba 的各种参考资料。另外,请访问 developerWorks,阅读 Daniel Robbins 的 Samba 系列:第 1 部
分是关于基本概念;第 2 部分是关于设置;第 3 部分是关于配置。
  
  您的反馈
  
  我们期待着您对本教程的反馈。您也可以通过 直接与作者联系。
  
  您对这篇文章的看法如何?
阅读(1255) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~