|
这个工具将所有的内核配置选项按照它们所关联的系统功能分成一系列的组。图2显示的是General Setup组的窗口。窗口中的每一项都可以设置成分别表示启用或禁止的y、n(即Yes或No)。此外,make xconfig为所有的选项都提供了帮助,图2显示了PCI Quirks的帮助。帮助窗口不仅简明地说明了选项的含义,而且还给出设置建议,这对缺乏经验的管理员来说是很有用的。
图2:make xconfig的General Setup窗口及其帮助功能
每个窗口的底部都有Next和Prev按钮,通过这两个按钮我们无需返回主菜单即可直接访问下一组或上一组选项。此外,通过Main Menu按钮可以关闭当前窗口返回主菜单。
图3显示了两个设置SCSI支持选项的窗口。左边窗口的几个选项确定内核是否支持SCSI设备,在这里我们启用了所有设备类型的SCSI支持。
图3:make xconfig中的SCSI设备设置
图3显示的大多数选项都有三个可选择的值,即在“y”、“n”之外加上了“m”。m是module的缩写,它表示该选项所代表的功能应该启用,但不是直接编译到内核映象里面,而是由可装载模块提供。注意使用m选项时,Loadable Module Support选项组中的模块支持也应当启用(该选项通常默认启用)。
图3右边的窗口显示的是各种可支持SCSI适配器的配置选项。这个窗口通过左边窗口最下面的选项按钮,即SCSI low-level drivers按钮打开。
本例启用了对Adaptec AIC7系列适配器的以模块形式提供的支持,图中以红色表示。选中该选项之后,下面的四个选项也允许设置(用亮蓝色表示),这些选项用于指定AIC7特有的配置。
按照要求正确设置所有配置选项之后,我们可以用主菜单右下角的按钮来结束配置过程。Save and Exit和Quit Without Saving这两个按钮都可退出配置工具,但前者保存配置结果,后者不保存。Load Configuration from File按钮用于从文件读取配置信息,Store Configuration to File按钮用于将配置结果保存到文件。注意为了让新内核按照这里的配置结果进行构造,如果我们把配置结果保存到其他文件,还需要再保存到/usr/src/linux/.config文件(Save and Exit按钮自动将结果保存到.config文件)。
接下来我们要做的是执行下面两个make命令:
# make dep # make clean
第一个命令创建一些文件,这些文件描述了内核构造过程中各个部分之间的依赖关系;第二个命令在实际编译内核之前从源代码目录树中清除所有不需要的文件(包括此前各步操作所创建的文件)。
构造内核
现在我们可以正式构造内核了。完成这一任务的典型命令为:
# make bzImage
该命令将生成一个用bzip压缩的内核执行文件。
如果增加或改动了任何内核模块,或者这是第一次从当前版本的源代码构造内核,接下来还必须构造模块执行文件:
# make modules
这一过程完成后,如果当前正在使用的内核版本和新构造内核的版本相同,我们必须决定是否备份原来的内核模块。备份可以通过改变模块目录的名字实现,命令如下所示:
# mv /lib/modules/2.2.x /lib/modules/2.2.x.save
和前面一样,这里的x也用于补足内核版本号。
接下来是安装这些模块:
# make modules_install
不管事实上是否存在新的模块,每次构造启用模块支持的内核时都必须执行这一步骤,这是因为它还要执行其它启用模块支持所必不可少的操作。
接下来就可以安装新内核:
# cp /boot/vmlinuz /boot/ vmlinuz.save #mv arch/i386/boot/bzImage / boot/new_vmlinuz
首先我们备份了原来的内核,然后把新构造的内核映象移到/boot目录,命名为new_vmlinuz。使用这种方法,我们为可能出现的无效新内核采取了双重保护:原来的内核以及它的一份拷贝。
现在将这个新的内核登记到/etc/lilo.conf。一种简便方法是拷贝现有的登记条目,然后修改label=和image=这两行,最后运行lilo命令安装新的配置。
运行新内核
接下来就可以重新启动试验新的内核了。不要忘了在lilo提示时输入新内核的名称。如果系统能够正常地启动,接着对系统的所有功能进行测试。
一旦确认新内核可以作为默认内核使用,删除原来的内核文件(不是原内核的备份!),把新内核拷贝或者移动到/boot/vmlinuz(或者,如果这个文件是一个符号链接,修改该链接使其指向新内核),然后再编辑/etc/lilo.conf,删除启动新内核的内容(现在新内核已经成了默认内核),加入启动备份的稳定原内核的内容(仅仅是为了预防万一)。最后再运行lilo安装新的配置。
定制内核应注意的问题
谈到由Linux发行版原来提供的内核,有几个问题我们必须加以注意。大多数时候,发行版的创建者会修改标准的内核源代码。例如,它们会在自己的发行版中提供一些要求修改内核的软件。虽然这些软件往往是很有用的,但它同时也意味着在下面两种特殊的情况下我们可能会遇到问题:
在内核代码已经被发行版提供者修改的环境下试图从标准的源代码构造新内核。在这种情况下,我们需要手工地把发行版所依赖的补丁安装到用于构造内核的源代码(一个常见的例子是knfsd NFS服务器软件所需要的补丁)。
需要安装新的软件,这些软件将对内核代码作重大的修改。在这种情况下,新软件所提供的补丁会假定修改是在标准的内核代码上进行,在发行版供应商修改过的内核上安装补丁可能会失败。此时,我们必须自己检查问题所在(这需要相当丰富的编程经验)或联系发行版供应商以获得帮助。
|
|