定制Linux内核详解
--------------------------------------------------------------------------------
ChinaByte授权转载
作者:俞良军(仙人掌工作室)
概述
在大多数情况下各种Linux发行版默认提供的内核都运行得非常好,但有些时候我们必须重新构造和定制内核,例如:
系统中加入了当前内核不支持的或者尚未启用相应功能的硬件。
需要使用某些操作系统功能或软件,默认情况下它们的内核支持被关闭。此时,我们需要构造一个启用了相应内核支持的新内核。
为节省磁盘空间而使用较小的内核映象。如果系统的磁盘空间非常紧张,构造新内核并使其只支持那些确实需要用到的功能能够节省出一份可观的空间。
为了安装新的软件或添加新的功能,这些软件和功能需要修改内核才能正常工作。
为了使用最新、最好的内核。各个主要发行版中由供应商提供的内核往往明显地落后于最前沿的技术,而且很遗憾地,它们的更新也很不及时,这就要求我们自己构造Linux内核。
好在自己构造和定制Linux内核并不是非常复杂,下面我们依次介绍它的各个步骤。
准备工作
在构造新内核之前我们必须做好必要的准备工作。首先必须有一个开发环境(如C编译器等);另外还必须安装内核头和内核本身的源代码,前者通常是默认安装的,而后者往往是不安装的。
在Red Hat系统上,我们可以用rpm命令确定内核头和内核的源代码是否已经安装:
# rpm --query -a | grep kernel
kernel-source
kernel-headers
上例的输出表明这两种源代码都已经安装到了系统上。如果内核源代码还没有安装,则可以用包含源代码RPM的CD进行安装,安装命令如下所示:
rpm --install /cdlocation/SRPMS/kernel-source-2.2.X.i386.rpm
这里的cdlocation是/dev/cdrom的装配点(mount point),而X则是内核版本号的一部分。如果系统属于另外的体系,则i386也应该用相应的后缀替代。
另外,内核源代码也可以从Internet下载,然后只要按通常的方式解开tar文件即可。
安装好的源代码通常可以在名为/usr/src/linux-2.2.x目录下面找到。按照惯例,/usr/src/linux目录是一个指向内核源代码的符号链接。通常这个链接是在安装源代码RPM时自动创建的,不过有些时候需要手工创建(或将链接目标从原来的内核源代码目录修改过来)。
构造新内核的第一步是进入内核源代码目录树的顶级目录:
# cd /usr/src/linux
如果需要为内核源代码追加补丁,请执行类如下面的命令:
# zcat /patch-location/patchN.gz | patch -p0 -e
这里的N是补丁编号。一般我们只有在新增从Intenet下载的软件时才需要补丁。
下一步是保存现有的配置文件并彻底地清理一下内核源代码:
# cp .config .config.save
# make mrproper
如果这是第一次从这份源代码构造内核,.config文件可能不存在(下面有更多关于它的讨论)。
配置内核
接下来是定义新内核的特征,指定内核应当提供对哪些硬件和软件的支持。这一个步骤是半自动的,可以用三种方法来完成,具体由make命令的参数决定:
# make config --或--
# make menuconfig --或--
# make xconfig
所有这三个命令都会在当前目录创建.config文件。.config文件指定了数量庞大的系统配置选项,这些选项控制着内核行为及其软/硬件支持的各个方面。make config命令通过一系列字符界面提示用户设定选项,它的缺点在于:如果我们在某个选项的界面过去之后再想改变这个选项,就必须从头开始才能改变它。
图1:make xonfig提供配置内核的图形用户界面
make menuconfig和make xconfig分别通过字符界面和基于X的图形界面完成同一任务。图1显示的是make xconfig的主菜单。
--------------------------------------------------------------------------------
ChinaByte授权转载
作者:俞良军(仙人掌工作室)
概述
在大多数情况下各种Linux发行版默认提供的内核都运行得非常好,但有些时候我们必须重新构造和定制内核,例如:
系统中加入了当前内核不支持的或者尚未启用相应功能的硬件。
需要使用某些操作系统功能或软件,默认情况下它们的内核支持被关闭。此时,我们需要构造一个启用了相应内核支持的新内核。
为节省磁盘空间而使用较小的内核映象。如果系统的磁盘空间非常紧张,构造新内核并使其只支持那些确实需要用到的功能能够节省出一份可观的空间。
为了安装新的软件或添加新的功能,这些软件和功能需要修改内核才能正常工作。
为了使用最新、最好的内核。各个主要发行版中由供应商提供的内核往往明显地落后于最前沿的技术,而且很遗憾地,它们的更新也很不及时,这就要求我们自己构造Linux内核。
好在自己构造和定制Linux内核并不是非常复杂,下面我们依次介绍它的各个步骤。
准备工作
在构造新内核之前我们必须做好必要的准备工作。首先必须有一个开发环境(如C编译器等);另外还必须安装内核头和内核本身的源代码,前者通常是默认安装的,而后者往往是不安装的。
在Red Hat系统上,我们可以用rpm命令确定内核头和内核的源代码是否已经安装:
# rpm --query -a | grep kernel
kernel-source
kernel-headers
上例的输出表明这两种源代码都已经安装到了系统上。如果内核源代码还没有安装,则可以用包含源代码RPM的CD进行安装,安装命令如下所示:
rpm --install /cdlocation/SRPMS/kernel-source-2.2.X.i386.rpm
这里的cdlocation是/dev/cdrom的装配点(mount point),而X则是内核版本号的一部分。如果系统属于另外的体系,则i386也应该用相应的后缀替代。
另外,内核源代码也可以从Internet下载,然后只要按通常的方式解开tar文件即可。
安装好的源代码通常可以在名为/usr/src/linux-2.2.x目录下面找到。按照惯例,/usr/src/linux目录是一个指向内核源代码的符号链接。通常这个链接是在安装源代码RPM时自动创建的,不过有些时候需要手工创建(或将链接目标从原来的内核源代码目录修改过来)。
构造新内核的第一步是进入内核源代码目录树的顶级目录:
# cd /usr/src/linux
如果需要为内核源代码追加补丁,请执行类如下面的命令:
# zcat /patch-location/patchN.gz | patch -p0 -e
这里的N是补丁编号。一般我们只有在新增从Intenet下载的软件时才需要补丁。
下一步是保存现有的配置文件并彻底地清理一下内核源代码:
# cp .config .config.save
# make mrproper
如果这是第一次从这份源代码构造内核,.config文件可能不存在(下面有更多关于它的讨论)。
配置内核
接下来是定义新内核的特征,指定内核应当提供对哪些硬件和软件的支持。这一个步骤是半自动的,可以用三种方法来完成,具体由make命令的参数决定:
# make config --或--
# make menuconfig --或--
# make xconfig
所有这三个命令都会在当前目录创建.config文件。.config文件指定了数量庞大的系统配置选项,这些选项控制着内核行为及其软/硬件支持的各个方面。make config命令通过一系列字符界面提示用户设定选项,它的缺点在于:如果我们在某个选项的界面过去之后再想改变这个选项,就必须从头开始才能改变它。
图1:make xonfig提供配置内核的图形用户界面
make menuconfig和make xconfig分别通过字符界面和基于X的图形界面完成同一任务。图1显示的是make xconfig的主菜单。