一、安装内核源码树

 

方法1:使用dpkg-dev + apt-get source安装内核源码树

        在下载内核源码之前,先安装dpkg-dev,其中包含你在Debian上生成源代码时需要的开发工具套

件。不仅如此,dpkg-dev中还包含在用来解压Debian源码包并自动打补丁的工具dpgk-source。

sudo apt-get install dpkg-dev

然后,运行以下命令下载完整的内核源码:

apt-get source linux-p_w_picpath-$(uname -r)

伴随着完整内核源码(linux_x.x.xx.orig.tar.xz)的还有一些可用的内核补丁(linux_x.xx.x-xx.xxx.diff.gz)

和源码控制文件(linux_x.xx.x-xx.xxx.dsc),这些都将被下载并存储到当前目录。在.dsc文件中会指出

如何给内核源码打补丁。

当下载完成,以上的命令将会自动调用工具dpkg-source将下载的内核源码解压到当前的目录中,与此

同时根据.dsc文件来下补丁。

最终完整的内核源码树将会以"linux-x.xx.x"的形式呈现在当前目录中。

wKiom1dtXsaS1gD3AABxlm11s0w844.png

上图中的linux-3.13.0为打过补丁后的内核源码树。

 

方法2:使用git安装内核源码树

        首先安装git(用于从git仓库获取源码)和lsb_release(用于查询Ubuntu的codename):

sudo apt-get install git
sudo apt-get install lsb_release

然后下载内核源码树到本地:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-$(lsb_release -c | cut -f2).git

wKioL1dvV2WCJhW8AADZ2Tajb-0728.png

这个git仓库的速度不是很给力,还是方法1的比较快,至少我这里这样的。

最终会产生一个名为ubuntu-$(lsb_release -c)的目录,在我这里是ubuntu-trusty。


方法3:使用apt-get install

sudo apt-get install linux-source

完成后,源码会在目录/usr/src下。


二、编译内核源码树

 

(1) 安装编译内核必须的开发包

sudo apt-get build-dep linux-p_w_picpath-$(uname -r)

(2) 内核的配置、编译。

       我选择使用git下载的代码来编译,理由是我的代码变动可以通git反映出来。

切换到目录ubuntu-trusty,依次运行下面的命令:

cp /boot/config-3.13.0-24-generic .config # 拷贝内核当前的配置文件
sudo make oldconfig # 在内核当前配置文件上做简单修改(一些不同于当前配置或没有的配置项)
sudo make -j8 # -j8参数可以加速编译,数字根据你自己电脑cpu的情况做出修改

完成编译后查看x86架构的boot目录以及源码根目录新生成的(部分)文件:

wKioL1dvkrvClwUzAAIRfvpHMLk805.png

 

wKiom1dvktDj0TLLAAIpk_vXNN8703.png

 

(3) 内核模块的安装、内核的安装,grub启动菜单的配置

sudo make modules_install # 安装内核模块
sudo make install # 安装内核:内核映像文件、内核符号表、内核配置文件、grub启动配置

完成内核的安装后可查看/boot/的文件列表,红色框选中的文件是新内核相关文件:

wKioL1dvkt_jszgrAAEZJ3GCa9g614.png

      在重启之前,在Ubuntu 14.04.2下需要对grub做简单配置,因为在sudo make install更新grub配

置时,默认选择了新安装的内核,而且不显示grub菜单项,这意味着你无法选择启动的内核。此时,只

需要对grub配置作简单修改就好,如下图将配置项GRUB_HIDDEN_TIMEOUT注释掉

wKiom1dvVRfDjEhZAACYZK7rUIs306.png

接着运行命令 sudo update-grub 更新grub的配置文件/boot/grub/grub.cfg,然后重启系统。

 

(4) 重启系统:

sudo reboot

(5) 重启系统后可查看当前的内核版本是不是自己编译的新的内核:

wKioL1dvWRSw3ciNAAASq7Cz6bE440.png

嗯,没错,这就是我花了1个小时40分钟左右(大家的机器应该比我的速度更快,我用的一台公司老

的笔记本)编译出的内核。

 

参考资料:

http://ask.xmodulo.com/install-full-kernel-source-debian-ubuntu.html
http://www.gnu.org/software/grub/grub-documentation.html