Linux内核升级手册Linux内核升级手册第2页/共8页目录目录..............................................................................................................21准备工作........................................................................................31.1下载内核.........................................................................................................31.2内核解压.........................................................................................................32配置...............................................................................................42.1配置新途径.....................................................................................................42.2配置技巧.........................................................................................................43编译和安装内核.............................................................................53.1生成依赖.........................................................................................................53.2编译内核映像..................................................................................................53.3编译和安装模块..............................................................................................54启动配置........................................................................................64.1LILO入门......................................................................................................64.2启用内核的方案..............................................................................................64.3为修改lilo配置文件作准备.............................................................................64.4修改lilo配置文件...........................................................................................74.5执行lilo...........................................................................................................74.6启动配置详解..................................................................................................8Linux内核升级手册第3页/共8页1准备工作1.1下载内核如果您只是想编译一个您已安装内核的新版本(例如,实现SMP支持),那不需要下载任何代码--跳过此章节继续下一章节。您可以在找到内核代码。当您进入到那后,您将发现内核的源代码按内核版本(v2.2、v2.3等),被组织到多个不同的目录中。在每个目录中,您将发现文件被冠以linux-x.y.z.tar.gz和linux-x.y.z.tar.bz2。这些就是Linux内核的源代码。您也将看到冠以patch-x.y.z.gz和patch-x.y.z.bz2的文件。这些是用来更新前面完整的内核源代码的补丁包。如果您希望编译一个新的内核版本,您将需要下载这些linux文件的其中之一。1.2内核解压如果您已从kernel.org下载一个新的内核,现在是要将其解压的时候了。首先,使用命令cd/usr/src进入内核源代码目录。如果这里有一个存在的linux目录,将其改名为linux.old(mvlinuxlinux.old,以root权限)。现在,可以解压新的内核包了。仍然在/usr/src目录下,如果您下载的源代码是以tar.gz为后缀的,则输入tarxzvf/path/to/my/kernel-x.y.z.tar.gz或者如果你下载的源代码是以tar.gz2为后缀的,则输入cat/path/to/my/kernel-x.y.z.tar.bz2|bzip2-d|tarxvf-。在输入完此命令后,您下载的内核源代码会被释放到一个新的linux目录下。注意:整个内核源代码通常将在硬盘上占用超过50兆空间!Linux内核升级手册第4页/共8页2配置在您编译内核前,您需要配置它,配置是您精确控制在新内核中启用(禁止)哪些内核功能的机会。您也将控制哪些会被编译到内核的二进制映像(在启动时被载入)而哪些被编译到需要时载入的内核模块文件。老式配置内核的方法是极为痛苦的过程,并涉及到进入/usr/src/linux目录并输入makeconfig命令。请放弃这种配置内核的方式,除非您想在命令行上回答几百个(对!几百个)“yes/no”的问题。2.1配置新途径我们是现代人类,我们不用再输入makeconfig,而是输入makemenuconfig或者makexconfig。如果您想要配置您的内核,使用上述选择之一。如果您输入makemenuconfig,您将使用一个漂亮的基于文本的彩色菜单系统来配置内核。如果您输入makexconfig,您将使用一个更漂亮的基于X-Window的GUI界面来配置内核的各种选项。这里有一个使用makemenuconfig的屏幕截图:当使用makemenuconfig时,在左面出现一个的选项能被编译成为一个模块。当选项被选中,按下空格键来循环选择选项是被选中或未选中,()表示将被编译成内核映像而()表示将被编译成模块。2.2配置技巧在这里有极其多的内核选项,而且我们无法在此一一解释,所以请利用内核内置的帮助功能。基本上每个选项都至少有一些描述,而且每个通常都有一行如果您不知道这个选项的含义,输入Y。(或者N)。这些提示在您不知道一个特定选项的含义时能帮助您。要使用帮助,选中您有疑问的选项然后按?键。Linux内核升级手册第5页/共8页3编译和安装内核3.1生成依赖一旦您的内核配置完毕,就可开始编译它了。在我们能编译它前,我们需要生成依赖(dependency)信息并清除任何老的编译结果。这可以通过在/usr/src/linux下输入makedep;makeclean完成。3.2编译内核映像现在是编译真正的二进制内核映像时候了。输入makebzImage。过几分钟后,编译会结束而且您在/usr/src/linux/arch/i386/boot(x86PC内核)目录下找到bzImage文件。我们将待会告诉您如何安装这个新内核,但是现在我们要看看模块编译了。3.3编译和安装模块现在我们有了bzImage,下面要编译模块了。即使您在配置内核时没有使用任何模块,也不要跳过此步骤--在编译完bzImage后立刻编译模块是个好习惯。而且,如果您真的没有模块需要编译,这个步骤也非常快就结束了。输入makemodules;makemodules_install。这将导致模块被编译而且被安装到/usr/lib/目录下。祝贺您!您的内核已经被编译完成了,您的内核模块也编译完成并被安装。现在是要重新配置LILO,这样您能使用新的内核。Linux内核升级手册第6页/共8页4启动配置4.1LILO入门现在是最后来重新配置LILO的时候了,它将负责载入新的内核。LILO是最流行的Linux引导工具,而且为所有的主流Linux发行商所采用。您要作的第一件事是察看您的/etc/lilo.conf文件。它将包含一行看似image=/vmlinuz的语句。该语句告诉LILO到何处找到内核。4.2启用内核的方案要配置LILO来使用新的内核,您有两种选择。第一个是覆盖您现有的内核--除非您手头上有一些紧急启动措施如还有此内核的引导盘,这很危险的方法。更为安全的选择是配置LILO是得它能从新的或旧的内核引导。LILO可配置成从新内核缺省启动,但仍提供一种方法让您遇上问题时能选择旧的内核来启动。这是推荐的作法,也是我们将随后介绍的方法。4.3为修改lilo配置文件作准备您的lilo.conf文件有可能看起来如下:boot=/dev/hdadelay=20vga=normalroot=/dev/hda1read-onlyimage=/vmlinuzlabel=linux要在您的lilo.conf文件中增添新的项目,参见下列步骤:首先,拷贝/usr/src/linux/arch/i386/boot/bzImage到您的根(root)分区上的一个文Linux内核升级手册第7页/共8页件,例如/vmlinuz2。一旦拷贝完毕,复制您lilo.conf文件的最后三行并将它们添加到该文件的最后.4.4修改lilo配置文件现在,您的lilo.conf文件应该看起来如下:boot=/dev/hdadelay=20vga=normalroot=/dev/hda1read-onlyimage=/vmlinuzlabel=linuximage=/vmlinuzlabel=linux首先,将第一个image=行改为image=/vmlinuz2。其次,将第二个label=行改为label=oldlinux。然后,确定在文件的开始有一行delay=20--如果没有,增添一行。如果它已经存在,将数字至少设为20。4.5执行lilo您最后的lilo.conf文件将看起来如下:boot=/dev/hdadelay=20vga=normalroot=/dev/hda1read-onlyimage=/vmlinuz2label=linuximage=/vmlinuzLinux内核升级手册第8页/共8页label=oldlinux作完这些修改后,您将需要以root身份运行lilo。这非常重要!如果您不执行此步,启动的过程无法继续。运行lilo将给lilo一个机会来更新它的启动映射。4.6启动配置详解现在我们详细地解释一下我们所作的改动。这个lilo.conf文件可以用来允