你想要简单了解编译内核的过程你需要启用或者禁用内核中特定的选项,因为它们没有出现在标准选项里你想要启用标准内核中可能没有添加的硬件支持你使用的发行版需要你编译内核你是一个学生,而编译内核是你的任务不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的 Linux 内核(那是很久以前了),然后尝试从它启动,我从中(系统马上就崩溃了,然后不断地尝试和失败)感受到一种特定的兴奋。
我们要做的第一件事是下载内核源码。在Kernel.org找到你要下载的所需内核的URL。找到URL之后,使用如下命令(我以 4.17 RC2 内核为例) 来下载源码文件:
https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz
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
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
务必注意:你将需要至少 128GB 的本地可用磁盘空间来完成内核的编译过程。因此你必须确保有足够的空间。
在新下载的内核所在的文件夹下,使用该命令来解压内核:
tar xvzf linux-4.17-rc2.tar.gz
tar xvzf linux-4.17-rc2.tar.gz
使用命令 cd linux-4.17-rc2 进入新生成的文件夹。
在正式编译内核之前,我们首先必须配置需要包含哪些模块。实际上,有一些非常简单的方式来配置。使用一个命令,你能拷贝当前内核的配置文件,然后使用可靠的 menuconfig 命令来做任何必要的更改。使用如下命令来完成:
cp /boot/config-$(uname -r) .config
cp /boot/config-$(uname -r) .config
现在你有一个配置文件了,输入命令 make menuconfig。该命令将打开一个配置工具(图 1),它可以让你遍历每个可用模块,然后启用或者禁用你需要或者不需要的模块。
menuconfig
很有可能你会禁用掉内核中的一个重要部分,所以在 menuconfig 期间小心地一步步进行。如果你对某个选项不确定,不要去管它。或者更好的方法是使用我们拷贝的当前运行的内核的配置文件(因为我们知道它可以工作)。一旦你已经遍历了整个配置列表(它非常长),你就准备好开始编译了。
回答了长篇累牍的问题之后,你就可以用如下的命令安装那些之前启用的模块:
make modules_install
make modules_install
又来了,这个命令将耗费一些时间,所以要么坐下来看着编译输出,或者去做些其他事(因为编译期间不需要你的输入)。可能的情况是,你想要去进行别的任务(除非你真的喜欢看着终端界面上飞舞而过的输出)。
现在我们使用这个命令来安装内核:
sudo make install
sudo make install
又一次,另一个将要耗费大量可观时间的命令。事实上,make install 命令将比 make modules_install 命令花费更多的时间。去享用午餐,配置一个路由器,将 Linux 安装在一些服务器上,或者小睡一会吧。
一旦 make install 命令完成了,就是时候将内核启用来作为引导。使用这个命令来实现:
sudo update-initramfs -c -k 4.17-rc2
sudo update-initramfs -c -k 4.17-rc2
当然,你需要将上述内核版本号替换成你编译完的。当命令执行完毕后,使用如下命令来更新 grub:
sudo update-grub
sudo update-grub
现在你可以重启系统并且选择新安装的内核了。