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),它可以让你遍历每个可用模块,然后启用或者禁用你需要或者不需要的模块。
图 1: 运行中的 make menuconfig
很有可能你会禁用掉内核中的一个重要部分,所以在 menuconfig 期间小心地一步步进行。如果你对某个选项不确定,不要去管它。或者更好的方法是使用我们拷贝的当前运行的内核的配置文件(因为我们知道它可以工作)。一旦你已经遍历了整个配置列表(它非常长),你就准备好开始编译了。
5、编译和安装
现在是时候去实际地编译内核了。第一步是使用 make 命令去编译。调用 make 命令然后回答必要的问题(图 2)。这些问题取决于你将升级的现有内核以及升级后的内核。相信我,将会有非常多的问题要回答,因此你得预留大量的时间。
图 2: 回答 make 命令的问题
回答了长篇累牍的问题之后,你就可以用如下的命令安装那些之前启用的模块:
make modules_install
又来了,这个命令将耗费一些时间,所以要么坐下来看着编译输出,或者去做些其他事(因为编译期间不需要你的输入)。
现在我们使用这个命令来安装内核:
sudo make install
6、启用内核作为引导
一旦 make install 命令完成了,就是时候将新安装的内核启用来作为引导。
grep menuentry /boot/grub/grub.cfg
vi /etc/default/grub
如果你升级的版本比当前内核版本高的话,默认新安装的内核就是第一顺序启动的,只需重启系统就行了,否则,则需要修改配置文件,具体如下:
将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