Ubuntu 14.04.2安装内核源码树以及编译

1. 前言

限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。

2. 安装内核源码树

方法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文件来下补丁。
Ubuntu 14.04.2安装内核源码树以及编译_第1张图片
上图中的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

Ubuntu 14.04.2安装内核源码树以及编译_第2张图片
个git仓库的速度不是很给力,还是方法1的比较快,至少我这里这样的。最终会产生一个名为ubuntu-$(lsb_release -c)的目录,在我这里是ubuntu-trusty

方法3:使用apt-get install

sudo apt-get install linux-source

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

3. 编译内核源码树

(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目录以及源码根目录新生成的(部分)文件:
Ubuntu 14.04.2安装内核源码树以及编译_第3张图片
Ubuntu 14.04.2安装内核源码树以及编译_第4张图片
(3) 内核模块的安装、内核的安装,grub启动菜单的配置

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

完成内核的安装后可查看/boot/的文件列表,红色框选中的文件是新内核相关文件:
Ubuntu 14.04.2安装内核源码树以及编译_第5张图片
在重启之前,在Ubuntu 14.04.2下需要对grub做简单配置,因为在sudo make install更新grub配置时,默认选择了新安装的内核,而且不显示grub菜单项,这意味着你无法选择启动的内核。此时,只需要对grub配置作简单修改就好,如下图将配置项GRUB_HIDDEN_TIMEOUT注释掉:
Ubuntu 14.04.2安装内核源码树以及编译_第6张图片
接着运行命令 sudo update-grub 更新grub的配置文件/boot/grub/grub.cfg,然后重启系统。
(4) 重启系统

sudo reboot

(5) 重启系统后,可查看当前的内核版本是不是自己编译的新的内核
在这里插入图片描述
嗯,没错,这就是我花了1个小时40分钟左右(大家的机器应该比我的速度更快,我用的一台公司老的笔记本)编译出的内核。

4. 后记

本篇从我几年前在51CTO写的一篇博客(原地址)搬迁过来。
参考资料:
install-full-kernel-source-debian-ubuntu
grub doc

你可能感兴趣的:(#,Linux基础,ubuntu,linux)