一、安装内核源码树
方法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"的形式呈现在当前目录中。
上图中的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
这个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目录以及源码根目录新生成的(部分)文件:
(3) 内核模块的安装、内核的安装,grub启动菜单的配置
sudo make modules_install # 安装内核模块 sudo make install # 安装内核:内核映像文件、内核符号表、内核配置文件、grub启动配置
完成内核的安装后可查看/boot/的文件列表,红色框选中的文件是新内核相关文件:
在重启之前,在Ubuntu 14.04.2下需要对grub做简单配置,因为在sudo make install更新grub配
置时,默认选择了新安装的内核,而且不显示grub菜单项,这意味着你无法选择启动的内核。此时,只
需要对grub配置作简单修改就好,如下图将配置项GRUB_HIDDEN_TIMEOUT注释掉
接着运行命令 sudo update-grub 更新grub的配置文件/boot/grub/grub.cfg,然后重启系统。
(4) 重启系统:
sudo reboot
(5) 重启系统后可查看当前的内核版本是不是自己编译的新的内核:
嗯,没错,这就是我花了1个小时40分钟左右(大家的机器应该比我的速度更快,我用的一台公司老
的笔记本)编译出的内核。
参考资料:
转载于:https://blog.51cto.com/4594296/1792768