Ubuntu下编译Linux内核

1.俗话说,工欲善其事,必先利其器。在编译内核前,需要配置一下编译环境,在终端输入:

sudo apt-get install build-essential kernel-package libncurses5-dev 

其中,build-essential 是安装gcc编译器和make环境。

kernel-package是内核编译有关的。

libncurses5-dev是为了能配置内核,与 make menuconfig 命令有关。

2.下载源代码:去内核源码网  http://www.kernel.org/ 下载自己想编译的内核源代码,我下载的是最新的,linux-3.3.4.tar.bz2,尝尝鲜啊!

3.将其拷贝到主文件夹下面,接着  ctrl+alt+t 打开终端,执行以下命令:

mkdir src && tar -jxf linux-3.3.4.tar.bz2 -C src/

意思就是在主文件夹下新建一个名为src的文件夹,并将源代码解压到src文件夹内。

4.为了进入到src/linux-3.3.4 目录,执行以下命令:cd  /src/linux-3.3.4  

这样一来,我们的工作目录就变成src/linux-3.3.4了,以后所有的命令都是在这个目录下执行的。

5.配置内核文件比较繁琐,一般我们都会利用系统已经存在的内核配置文件,执行以下命令:

cp /boot/config-uname -r ./.config 

由于这个文件是隐藏的,所以当你执行完这条语句,去查看这个文件的时候,是看不到的,但它确实存在,而且还很重要。

注:如果你不是第一次编译,建议你首先执行这样一条语句: make mrproper 

其含义是将上一次编译的.o和.config等相关文件删除掉。然后在copy已存在的config文件。这个顺序不能颠倒。如果颠倒了,新copy的config文件就会被删除掉喔。

6. 配置内核。如果对内核的配置不熟,建议执行第5步,如果很熟系,第五步可以忽略。

执行一下命令:make menuconfig

此时,会弹出如下的界面:

最后两项是 Load an Alternate Configuration File 和 Save an Alternate Configuration File 

我们进入Load an Alternate Configuration File,会出现这样的画面:

保持默认直接ok就行,这样就利用了刚才复制过的config文件。保存退出就行了。

7.开始编译内核:

make bzImage         //编译大内核,如果你想编译小内核,可以这样 make zImage

make modules         //编译模块

make install modules_install   //将内核与模块相关的文件复制到系统位置

注意:这个过程要花费1-2个小时。

8.在linux-2.6版本及以后,系统会为我们自动生成image文件,所以我们只需要查看是否生成了相应的模块就行了。

进入boot文件夹,看到系统已经有了config-3.3.4 ,initrd.img-3.3.4, System.map-3.3.4,vmlinuz-3.3.4  ,这说明内核已经生成完毕。如图所示:

9.还有一项,看看引导程序是否为我们添加了引导项。执行以下命令:sudo gedit /boot/grub/grub.cfg  

如图,系统自动为我们添加了引导项,如果没有,需要自己仿照已存在的项添加。这里就不多说了。

10. reboot 重启之后就可已选择进入相应的内核了。注意:原来系统的内核仍然存在,依然可用。