实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell

 

阿里云现在提供的云服务器很好用的,用来编译内核性能也不错。本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行。

如果不是root用户可以使用su命令切换到root用户。

 

注:使用xshell的时候最好把这一项给关闭了(工具——选项——高级)

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

 

 

一、环境准备

1.准备linux源码和补丁,可以在官网(http://www.kernel.org)上下载,这里我们下载4.5版本。

不过阿里提供了http://mirrors.aliyun.com/,也可以在这里面下载,速度更快。下载镜像的命令如下:

cd /tmp
wget http://mirrors.aliyun.com/linux-kernel/v4.x/linux-4.5.tar.xz
wget http://mirrors.aliyun.com/linux-kernel/v4.x/patch-4.5.xz

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

2.准备安装需要的环境

首先需要执行apt-get update来更新软件源,然后安装需要的环境:

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

3.解压缩内核

把压缩包解压:

xz -d linux-4.5.tar.xz

解压后得到linux-4.5.tar,

运行tar –xvf linux-4.5.tar解压得到目录linux-4.5。

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

把内核目录linux-4.5和补丁patch-4.5.xz都复制到/usr/src,然后进入/usr/src


cp linux-4.5 /usr/src –rf
cp patch-4.5.xz /usr/src
cd /usr/src

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

二、准备编译

1.打内核补丁

xz -d patch-4.5.xz | patch -p1

执行后没有任何提示说明执行正确

 

2.编译配置

看以前的内核版本号,把里面的.config文件复制到linux-4.5文件夹中:

在上面的图片中,我的内核文件夹是linux-headers-3.13.0-32-generic,我需要将这个文件夹中的.config文件复制到linux-4.5目录中。

cp linux-headers-3.13.0-32-generic/.config linux-4.5/ 

 

cd linux-4.5

然后执行make menuconfig,

 

选择load→OK→Save→OK→EXIT→EXIT:

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

 

三、编译内核

编译内核有两步,比较耗时间:一般在1-3个小时左右可以完成。

 

1.编译启动映像

make bzImage -jN

在这里的N是你的CPU的核数*2,比如我是单核CPU,那么我应该执行make bzImage -j2指令;如果我是双核CPU,我应该执行make bzImage -j4。

如果嫌麻烦也可以直接运行make bzImage。

 

这里可能会出现两个错误:

fatal error: openssl/opensslv.h: No such file or directory 

这是因为没有安装openssl的,需要先安装openssl: apt-get install libssl-dev

bc: not found。需要安装bc:apt-get install bc

安装对应依赖后再运行。

 

2.编译模块

make modules -jN 这里的N也跟上面是一样的

也可以直接运行 make modules。

 

四、安装内核

安装内核的过程就快的很多了,这跟你下了软件安装包 安装软件 是一个道理。

先安装模块

make modules_install

再安装内核

make install

 

五、更改启动grub

grub就是管理ubuntu系统启动的一个程序,我们编译好的内核要运行就要修改对应的grub,其实很简单。

mkinitramfs 4.5.0 -o /boot/initrd.img-4.5.0
update-grub2

update-grub2命令会帮我们自动修改grub,

修改后的grub内容如下:可以看见内核版本已经被改成了4.5.0

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

 

 

现在内核已经编译好了,重启服务器,使用uname -a命令查看自己的系统版本:

系统版本已经是linux 4.5!

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程