Ubuntu 16.04 上进行linux4.4.4 内核编译和安装(可升级可降级)

带你在 Ubuntu 16.04 服务器上走过linux 4.4.4 内核编译之旅。

 

1、安装需要的环境

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

 

2、下载内核

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.4.tar.xz 

 

3、解压源码

xz -d linux-4.4.4.tar.xz && tar -xvf linux-4.4.4.tar

使用命令 cd linux-4.4.4 进入新生成的文件夹

 

4、配置内核

在正式编译内核之前,我们首先必须配置需要包含哪些模块。实际上,有一些非常简单的方式来配置。使用一个命令,你能拷贝当前内核的配置文件,然后使用可靠的 menuconfig 命令来做任何必要的更改。使用如下命令来完成:

cp /boot/config-$(uname -r) .config

现在你有一个配置文件了,输入命令 make menuconfig。该命令将打开一个配置工具(图 1),它可以让你遍历每个可用模块,然后启用或者禁用你需要或者不需要的模块。

 

Ubuntu 16.04 上进行linux4.4.4 内核编译和安装(可升级可降级)

图 1: 运行中的 make menuconfig

很有可能你会禁用掉内核中的一个重要部分,所以在 menuconfig 期间小心地一步步进行。如果你对某个选项不确定,不要去管它。或者更好的方法是使用我们拷贝的当前运行的内核的配置文件(因为我们知道它可以工作)。一旦你已经遍历了整个配置列表(它非常长),你就准备好开始编译了。

 

5、编译和安装

现在是时候去实际地编译内核了。第一步是使用 make 命令去编译。调用 make 命令然后回答必要的问题(图 2)。这些问题取决于你将升级的现有内核以及升级后的内核。相信我,将会有非常多的问题要回答,因此你得预留大量的时间。

Ubuntu 16.04 上进行linux4.4.4 内核编译和安装(可升级可降级)

图 2: 回答 make 命令的问题

回答了长篇累牍的问题之后,你就可以用如下的命令安装那些之前启用的模块:

make modules_install

又来了,这个命令将耗费一些时间,所以要么坐下来看着编译输出,或者去做些其他事(因为编译期间不需要你的输入)。

现在我们使用这个命令来安装内核:

sudo make install

 

6、启用内核作为引导

一旦 make install 命令完成了,就是时候将新安装的内核启用来作为引导。

grep menuentry /boot/grub/grub.cfg

Ubuntu 16.04 上进行linux4.4.4 内核编译和安装(可升级可降级)

vi /etc/default/grub

如果你升级的版本比当前内核版本高的话,默认新安装的内核就是第一顺序启动的,只需重启系统就行了,否则,则需要修改配置文件,具体如下:

Ubuntu 16.04 上进行linux4.4.4 内核编译和安装(可升级可降级)

将GRUB_DEFAULT=0修改为

GRUB_DEFAULT="gnulinux-advanced-c86d02d0-0771-4ad6-874f-ff31e6cf83b0>gnulinux-4.4.4-advanced-c86d02d0-0771-4ad6-874f-ff31e6cf83b0",保存退出。(内容值参考 grep menuentry /boot/grub/grub.cfg,已经用红框选出)。

 

若上面修改了配置文件,则需执行sudo update-grub命令,更新grub配置。

之后,sudo reboot,验证是否生效。

不出意外的话重启系统后启用的就是新的内核了,执行以下命令查看一下

uname -r