用户操作
[即时聊天] [发私信] [加为好友]
文档ID:CSDN_document
547851次访问,排名81,好友0人,关注者4人。
CSDN_document的文章
原创 211 篇
翻译 0 篇
转载 0 篇
评论 334 篇
最近评论
bluehouse1985:Linux 环境下的多核调试
— Intel + Totalview 强强联合!
目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Total……
bluehouse1985:Linux 环境下的多核调试
— Intel + Totalview 强强联合!
目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Total……
bluehouse1985:Linux 环境下的多核调试
— Intel + Totalview 强强联合!
目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Total……
bluehouse1985:Linux 环境下的多核调试
— Intel + Totalview 强强联合!
目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Total……
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
文章分类
收藏
    相册
    AMT
    BEA
    CA
    Eclipse
    Eicon
    eMag
    SAP
    windows
    电子政务
    开源
    内核
    人物
    用友
    综合
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Linux配置与编译内核收藏

    新一篇: “Web标准”技术调查 | 旧一篇: 升级RH9.0到2.6.5内核全过程

         

    编置内核包含两大项内容,即配置内核和编译内核。这两项工作需要经常查看内核的文档,至少要查看Readme文件和Documentation目录下的Changes文件。它们对内核进行了描述,比如升级内核可能出现的问题和内核对系统中工具的版本要求等。Linux内核的编制方法下面将做具体说明。
                                 
    下载与解压
       
    首先需要将内核源码下载到/usr/src/目录下面。如果压缩格式是gzip,那么执行如下命令:

     

    #tar xzvf linux-2.4.23.tar.gz


    如果是bzip2格式,则执行如下命令:


    #tar xjvf linux-2.4.23.tar.bz2


    这时会建立Linux-2.4.23内核源代码树。进入该目录,并确保今后的所有操作都在这个目录下完成。

    配置内核
    有了要编译配置的内核,先来介绍怎么样配置内核。具体的步骤分为一下几步:
    1.在开始配置内核之前,首先需要通过下面的命令清除所有的临时文件、中间件和配置文件。对于一个刚从网上下载的内核来说,它肯定是干净的,这么做只会多此一举。但是这是一个良好习惯,而且不会有坏结果。

    #make mrproper


    2. 然后要了解自己系统的硬件配置情况,比如CPU的类型、主办芯片、显卡和声卡的型号等。
    3. 配置内核选项,用到的命令是:

    #make <config_opt>

    用到的配置工具有:
    config 基于交互式的文本配置界面。每个问题以线形格式出现,并被一个一个地回答,而且一旦作出了回答就不能再修改了。
    oldconfig config相似,但是使用原有的配置文件,而且只会提问有关新内核特性的问题,对于内核升级很方便。
    menuconfig 一个文本模式、选单驱动的配置界面。
    xconfig 基于Tcl/TkX图形配置界面。
    现在开始配置内核,使用的工具为menuconfig。在命令行模式下执行下面的命令:

    #make menuconfig


    在闪过几行字之后就出现了如图1所示的界面。



    1 内核配置界面

    使用方向键在各选项间移动;使用“Enter”键进入下一层选单;每个选项上的高亮字母是键盘快捷方式,使用它可以快速地到达想要设置的选单项。在括号中按“y”将这个项目编译进内核中,按“m”编译为模块,按“n”为不选择(按空格键也可在编译进内核、编译为模块和不编译三者间进行切换),按“h”将显示这个选项的帮助信息,按“Esc”键将返回到上层选单。
       
    注意,如果“make menuconfig”命令失败,很可能是ncurses库没有安装。
       
    内核的配置选项很多,这里就主要选项进行简要说明,使大家能根据自己的情况,进行内核定制。如果某些项把握不准,可以参考documentation/Configure.help文件,也可搜索整个系统,并查看相关的选项都在哪些文件中出现了。接下来就是个选项的配置说明情况。
       
    Loadable module support(可加载模块支持)。其中“Enable loadable module support”选项可让内核支持模块;“Module unloading”选项可以让用户卸载不再使用的模块,如果不选的话用户将不能卸载任何模块(注意,有些模块一旦加载就不能卸载,与是否选择了此选项无关);“Module versioning supportEXPERIMENTAL选项允许用户可以使用其它版本内核中编译的模块,不过并不可靠,所以一般不选择它;“Automatic kernel module loading”选项允许内核自动调用“modprobe”命令来加载需要的模块。
      
    模块是一小段代码,编译后可在系统内核运行时被动态地加入内核,从而为内核增加一些特性或对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以缩小内核的体积。在运行时可以使用“modprobe”命令把模块加载到内核中去(在不需要时还可以卸载它)。
       
    Set version infomation on all symbols for modulesCONFIG_MODVERSIONS)是有关内核模块版本控制的选项。如果用户打算开发内核模块代码(包括当前内核源码树中之外的任何模块代码),就开启这个设置。一般的用户可以关闭。
       
    Pentium-III/CeleronCoppermine))Processor family用来选择CPU类型。它允许内核使用高级处理器内部的特殊指令。当然,如果用户的CPU80386,就没必要选择P4。但是如果实在不知该怎么选择,就选386。这时如果用户使用高级的CPU,内核的运行速度会比它应有的速度慢,但至少它能够运行。建议使用Help/proc/cpuinfo获得更多的帮助。
       
    High Memory Support CONFIG_NOHIGHMEM)使内核支持大内存。通常情况下内核只支持1GB内存(实际情况是896MB,它与vmalloc()的实现有关,这超出了我们的讨论范围)。如果用户的内存数量超过了896MB,请选择内核对4GB内存的支持,甚至64GB内存的支持。
       
    Symmetric multi-processing supportCONFIG_SMP)使内核支持多处理器。如果用户有多于一个CPU,那么一定要选这项。
       
    Maximum number of CPUs2-32)用以选择处理器数量。对于单CPU用户来说,选多少都没有意义。
       
    General setup表示通用配置。这里可设置内核对虚拟内存的支持和为System V的进程提供通信机制;通过“Sysctl support”选项可以动态地更改一些核心参数与变量,而不需要重新启动系统。
       
    File systems(文件系统)。这里的内容很多,建议在缺省的基础上进行修改。一般需要DOS FAT(FAT16FAT32)VFAT,EXT3NTFSISO9660(标准光盘使用的文件系统)支持。
       
    介绍完这些内核配置的主要选项,用户在根据自己的要求配置好内核之后,接下来就要编译内核。
       
    Power management options (ACPIAPM)是高级电源管理。要注意ACPIAPM不能同时使用。如果同时配置了这两者,那么在系统启动时,若发现一个可工作的ACPI设备,那么APM将被关闭,ACPI会被加载。
       
    如果想让Linux支持高级电源管理,例如软关机、系统休眠等,需要选择“Power Management support”选项;“Software SuspendEXPERIMENTAL选项可以挂起计算机(类似Windows XP中的休眠),这个功能不需要高级电源管理的支持;“Processor”选项可让处理器在空闲时节省电能,应该选上;“Thermal Zone”选项在系统温度过高时,及时调整系统的工作状态,以保护CPU(需要硬件的支持)。
       
    Bus optionsPCIPCMCIAEISAMCAISA)用以设置系统总线。根据主板参数自己进行选择。针对PCI总线的是“PCI support”选项,下面还有ISAEISA子项,一般都是需要的;“Support for hot-pluggable devices”选项是对热插拔设备的支持;“PCMCIA/CardBus support”选项支持PCMCIA
       
    Executable file formats表示可执行文件格式,一般全要选上。
       
    Device Drivers用来选择设备驱动程序。声卡、显卡、网卡和电视卡等驱动都在这里选择。其中“Plug and Play support”选项支持即插即用;“Block devices”选项支持块设备;“SCSI device support”选项支持SCSI 设备;“Multi-device supportRAID and LVM选项支持RAID和逻辑卷;“Networking support”选项支持网络,包括网络协议和网络设备,协议中肯定要“TCP/IP”项,根据自己的网卡选择相应的设备;ISDN上网必需选“ISDN subsystem”选项;“Sound”选项是声卡驱动,有两种选择,一种是ALSA驱动,一种是Open Sound System驱动,选择支持自己声卡的那种,将之编译进内核;“USB Support”选项该项很重要,平常用的优盘就是一种USB设备;对USB而言,至少需要“Support for USB”“USB device filesystem”“ECHI HCDUSB 2.0support”“UCHI HCDmost Intel and VIAsupport”“USB Audio support”“USB MIDI support”“USB Mass Storage support”选项。
       
    执行了“make ”之后,系统会在include/linux目录下生成一个autoconf.h文件。例如,在配置内核选项时选择支持NTFS文件系统,并把它编译进了内核,那么在.config中就会生成“CONFIG_NTFS_FS=y”这项,相应的在include/linux/autoconf.h中会生成“#define CONFIG_NTFS_FS 1”这项。因此所有与NTFS文件系统相关的C源文件都会包含include/config/ntfs/fs.h这个头文件。
       
    新的2.6.0内核中增加了两个GUI配置工具,要使用xconfig必需先安装Qt库(一般发行版的光盘里都有),要使用gconfig就要先安装Gtk库。
       
    在启动配置工具时,2.6.0内核会读取当前的系统配置,从而保持与当前配置相同的选项。这个特性是为方便以后的升级工作,在内核特性变化不大的情况下可以直接以当前的选项为基础,省去了逐项配置的麻烦。有两种方法可以让2.6.0内核以默认选项来启动配置工具,一种是将当前的配置文件/boot/config-XXX删除;另一种是在执行配置工具前先执行“make defconfig”命令。
        
    除此之外,还为make添加了几个新选项,是allyesconfigallnoconfigallmodconfig。它们是为内核开发人员与测试人员准备的。
       
    用户根据自己的要求配置好内核之后,接下来就要编译内核。

        
    编译内核
       
    编译内核的软件环境是kbuild系统,它泛指构建一个完整并能够运行的Linux内核所需要的一切资源。这些资源包括构建程序、脚本、中间件、配置文件和Makefile。现在就讲解内核的编译过程,具体步骤如下:
       
    1.“make dep”“make depend”
      
    kbuild调用中间件scripts/mkdep来生成