在编译linux内核时首先要安装一些tools,如:gcc,make,make-kpkg等;
安装软件包有:build-essential,kernel-package,qt库等
1)build-essential :里面有gcc,make等;
2)kernel-package:里面有make-kpkg等;
3)qt库:主要是为了用make xconfig图形界面配置,需安装libqt3-headers,libqt3-mt-dev
4)libncurses5-dev:主要是为了用make menuconfig;
5)qtk库:主要用于make gconfig;
对于3,4,5一般选择其中一个就行,我是选择make xconfig来配置内核;
安装方法:
sudo apt-get install build-essential 安装build-essential
sudo apt-get install kernel-package 安装kernel-package
sudo apt-get install libncurses5-dev 安装libncurses5-dev
sudo apt-get install libqt3-headers libqt3-mt-dev libqt3-mt libqt3-compat-headers
二)源码准备1)下载 linux的源代码:http://www.kernel.org/ 下载full版本
三) 进入Linux内核源码所在的目录(cd Linux内核),解压该内核代码到/usr/src下:
sudo tar -xjvf linux-2.6.33.1.tar.bz2 -C /usr/src
四) 进入Linux内核源码解压后的目录/usr/src/linux-2.6.33.1
sudo make mrproper 净化解压后的源代码sudo make menuconfig 对内核选项进行配置
五) 编译内核
1)传统方式
sudo make dep 建立模块间的依赖信息sudo make clean 删除配置时留下的一些不用的文件
sudo make bzImage 编译内核,内核较小时可以用make zImage
sudo make modules_install 安装内核模块
sudo make install 安装内核
1、配置内核
最常用的配置内核的方法是“make menuconfig”。“make config”太简陋,“make xconfig”虽然更加直观,但需要庞大的qt类库支持,menuconfig 应该是最佳的折中。
2、编译内核和模块
依次执行“make”、“make modules”、“make modules_install”、“make install”,如果前面的配置没有问题的话,耐心等待一段时间就可以得到 编译好的内核和模块了。
3、生成initramfs并配置Grub
经过第二个步骤的“make install”,kbuild系统会把生成的内核镜像拷贝到INSTALL_PATH路径下(默认这个路径是/boot),但这时并不能使 用,我们必须配置手动Grub才可以。另外,很多发行版会使用initramfs来做引导之用(还有部分发行版采用initrd),我们还需要为我们的新内 核手动生成initramfs镜像(请参考制作initramfs/initrd镜像)。
编译的另外方法
如果您是Ubuntu/Debian的用户,可以使用make-kpkg简化这个流程,而且还能带来其他额外的好处。
在Ubuntu下,安装kernel-package这个包之后,就可以使用make-kpkg了。
sudo apt-get install kernel-package
相关命令:
$sudo make-kpkg clean 这条命令好像不要超级权限,很多资料上说要,不过这不是原则问题。
$sudo make-kpkg --initrd --append-to-version=t61 kernel_image kernel_headers
上述命令中的t61可以用自己喜欢的字符代替
在此我修改为:$sudo make-kpkg --initrd --append-to-version=qinmy1 kernel_image kernel_headers
a、--initrd选项会让make-kpkg自动帮我们生成initramfs;
b、--revision会给生成的deb文件加上一个版本信息。这个参数只是影响到文件名,如果不指定,默认会是“10.00.Custom”;
c、--append-to-version也是一种版本信息,它不仅出现在deb安装包的文件名里,也会影响到kernel的名称,比如下例中,内核更新完成之后, 用“uname -r”察看会得到“2.6.36-20110107”;
d、kernel_image表示生成内核和默认模块的安装包,另外您也可以加上kernel_headers,这样make-kpkg会再生成一个内核头文件的安装包。
如果:
sudo make-kpkg --initrd --revision wwang.001 --append-to-version -20110107 kernel_image
编译过程执行完毕之后,会在上层目录里生成一个deb安装包,本例中生成的安装包的文件名是“linux-image-2.6.36-20110107_wwang.001_i386.deb”。
编译过程执行完毕之后,会在上层目录里生成一个deb安装包。
六) 内核安装:
之后我们就可以用dpkg命令或者在文件浏览器中双击安装了,安装完毕之后,直接重启就可以选择进入新的内核
cd .. 返回上级目录
sudo dpkg -i linux-image-(按tab键) 文件名很长,如果不用tab自动补足是不可能的。