看这张图片就知道,我们本文的内容就是教大家如何编译 Linux 内核。Linux 作为一个开源的操作系统,受很多用户和企业的青睐,并且用户可以自己进行修改内核,从而实现增加系统的调用,也可以帮助我们更深入的理解操作系统内核的实质。编译内核其实算是比较麻烦的,这个过程比较复杂,有比较耗费时间,如果中间环节出现问题就需要重新开始,很麻烦。因此决定出一个关于编译内核的文章给大家参考,帮助大家更快掌握。
很早的时候,在升级 Linux 内核这块让很多用户都比较恐慌吧,因为升级内核很麻烦,花费的时间和精力也很大。而现在安装内核也可以通过 apt
这样的方式来进行。编译内核现在已经变得比之前容易很多,而且懂得编译内核也是比较重要和有用的,所以就让我们通过实验来体验一下内核编译的过程。
环境:Ubuntu 16.04 Server。在执行 sudo apt upgrade
这个指令之后,可以知道当前系统安装的内核版本为 4.4.0-121,本文的目标是升级内核版本到 4.17,那么下面就让我们开始实验吧。
下载内核
这里首先需要做的第一件事情就是下载内核源码,既然要编译内核,没有源码怎么编译呢。可以在 kernel.org 里面进行下载需要的内核,找到之后,使用 wget
命令进行下载:
wget https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz
这里需要注意的是,首先我们编译内核,需要先安装一些编译所需要的环境,同样也可以通过命令来完成,还需要注意的是编译内核需要保证系统的空间足够:
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
解压源码
上一步中我们已经下载了所需要的内核文件,那么现在来进行解压操作:
tar xvzf linux-4.17-rc2.tar.gz
cd linux-4.17-rc2
配置内核
在正式开始编译内核前,我们需要确认的一个问题是要考虑配置都包含哪些模块。其实这里也有一个简单的方式来搞定,如下:
cp /boot/config-$(uname -r) .config
现在我们已经有了配置文件了,接下来需要输入 make menuconfig
。这个命令会打开一个配置工具的界面,它的作用就是让你遍历每一个可用的模块,并且你可以选择禁用或者启用哪些你不需要或者需要的模块。
这里如果你已经遍历好了整个配置的列表,那么下一步就是准备开始进行编译了。
编译内核
到这里,我们就可以进行实际的内核编译了。这里使用 make
命令进行编译操作。
make
make
命令执行完之后,下一步就是需要使用命令安装之前那些启用的模块:
make modules_install
这个命令的执行时间要比 make
的时间长很多,所以我们需要等待比较久,之后这个命令输出完毕,就可以执行安装内核的命令:
sudo make install
同样的,这块也会耗费我们较多的时间,其实这里 make install
会比上一步执行 make modules_install
这个命令花费的时间更多。在漫长的等待过程中,一旦 make install
命令执行完成,那么就可以将内核启用来作为引导,可以使用这个命令实现:
sudo update-initramfs -c -k 4.17-rc2
这里的版本号提醒大家记得替换为刚才编译完成的内核版本号,当上述命令执行完毕后,可以使用这个命令来更新 grub:
sudo update-grub
到这里,已经可以重启当前的系统并且选择新编译的内核进行使用了。编译内核是一项很耗费时间的事情,虽然有时候花费很多还不一定能够编译成功,但还是建议大家如果有兴趣都可以去尝试下,这也是一项很重要的技能。