本文按步骤介绍如何重新生成、发布新的Linux内核,此操作步骤仅供参考,更详细的操作 方法请参考Linux的操作手册。 1) 获取Linux的内核源码 Linux内核源码的获得,可以从Linux发布光盘中得到,不同Linux的提供商其内核文件的格 式也不同,Red Hat的内核源码格式为kernel-source-2.2.14-5.rpm,SuSe Linux的格式为 lx_source-2.2.1-SuSe-12.i386.rpm。如果选择标准的安装方式,内核源码会安装在/usr/src/linux-2.2.x, 也可以直接从发布的光盘中安装。 注意,大多数Linux的发布光盘中内核源码并不是最新的,可以从kernel.org下载最新的内核源码。 2) 解开源码包,源码一般会解压到/usr/src目录下,可使用命令如下: tar.gz文件:tar zxvf linux.2.2.16.tar.gz,或者 gzip -dc linux-2.2.16.tar.gz | tar xvf - bzip’ed的文件: tar xlvf linux-2.2.16.tar.bz2,或者 bzip2 -dc linux-2.2.16.tar.bz2 | tar xvf - 解开后会产生目录名为linux的新目录,并包含新的内核,可以将此目录转移到相对应的目录, 以区分不同的内核版本,如下: mv linux linux-2.2.16 ln -s linux-2.2.16 linux 3) 编译生成新的内核 a) 创建内核配置文件 首先进入到以上新建立的内核目录,并创建内核编译的配置文件,如下: make menuconfig 以上命令将调一配置菜单项,注意这需要安装ncurses,如下图:

在X 界面下,也可以使用命令 make xconfig 调用图形界面,与make menuconfig功能相同,使用此命令,需要tcl的支持,如下图:

不管使用那种方式,都会看到不同内容格式的列表,在每一个不同的列表项中都有三个不 同的选项:Y(yes),N(no)和M(module),分别代表不同的内容: Yes:选择特定的选项,并编译到内核中 No:不选择特定的选项 Module:支持特定的选项,并编译成模块的方式,此模块支持选定的功能项,而不是将功 能模块编译到内核,系统会创建单独的文件,在需要时在调入到内存。此选项的优点在于 可以尽量减少内核的大小,避免随着系统硬件支持的增多,内核相应的加大。使用模块方 式使用硬件,应当注意硬件的类型,比如,类似于声卡、网卡、打印机等可以使用模块方 式,对一些必需的硬件,应当编译连接到系统内核中。
b) 依赖性检查 生成内核配置文件后,需要检查编译过程中的依赖的文件和头文件的一致性,使用命令 make dep,这将花费一些时间 c) 清除旧的目标文件 使用命令make clean,这一步不是必需的 d) 编译模块 使用make modules,根据生成的配置文件,编译不同的模块 e) 安装编译好的模块 使用make modules_install,此命令将使用最新编译好的模块,并存放到/lib/modules目录 下。如果编译的内核和运行的系统版本一致,需要将旧的模块移走,不然下次系统启动 时系统会产生模块依赖性的错误,操作如下: mv /lib/modules/2.2.16 /lib/modules/2.2.16.old f) 编译内核 使用命令make bzImage编译Linux内核,使用时间取决于处理器的处理速度和选择编译的 配置文件。注意,bzImage不是bzimage,此命令将生成一个压缩的内核文件,可以减少 内核文件的大小,系统在引导时自动解压内核介质,不需要做特殊的配置。
对以上的操作,也可以使用如下命令顺序完成: make dep clean modules modules_install bzImage 在编译模块和内核的过程中,可以使用Control-C中止编译过程,如果继续进行可以运 行make modules或者make bzImage,编译将从上次的断点开始。但是,如果修改了配 置,则需要重新运行make dep,所有的编译从开始进行。 新编译生成的内核文件存放为usr/src/linux/arch/i386/boot的bzImage,在不同架构的机器 上编译生成内核,i386会被相应的架构名称代替。
4) 使用新生成的内核 对新创建的内核,首先应当测试是否可以使用,而不是简单的替换掉旧的内核。可以使 用lilo测试新的内核: 编辑/etc/lilo.conf配置文件,增加新的引导介质选项,格式如下 image = /vmlinuz label = linux root = /dev/hda1 增加新的引导项,替换image = /vmlinuz如下: image = /usr/src/linux/arch/i386/boot/bzImage 修改标示项为: label = new 保存/etc/lilo.conf文件,重新启动机器,选择新增加的引导项,检查新生成的内核是否正确, 如果系统引导、系统驱动操作正常,可以安装使用新的内核。 5) 使用新生成的内核 进入/usr/src/linux目录下,运行命令make install,此命令将安装新的/vmlinuz,并安装新的系 统映射。以上操作完成后,可以修改/etc/lilo.conf文件,删除新增加的测试项。
原文链接:http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2811265A26000
本文被浏览次 |