网站搜索

如何在 CentOS 7 上编译 Linux 内核


运行自定义编译的 Linux 内核总是有用的,特别是当您希望启用或禁用特定的内核功能时,这些功能在默认发行版提供的内核中不可用。

在本文中,我将解释如何从 CentOS 7 发行版中的源代码编译和使用最新的 Linux 内核(此处提供的说明也适用于 RHELFedora )。

如果您不想完成这些复杂的设置,请按照我们的简单文章进行操作,该文章解释了如何使用第三方 RPM 存储库在 CentOS 7 上安装或升级到内核。

安装内核编译所需的包

首先,请确保更新您的软件包存储库,安装编译内核所需的开发工具,并使用以下 yum 命令安装 ncurses 库。

yum update
yum install -y ncurses-devel make gcc bc bison flex elfutils-libelf-devel openssl-devel grub2

在CentOS 7中编译并安装内核

使用 /usr/src/ 目录下的 wget 命令下载最新的内核 4.17 源代码,或者您也可以访问 kernel.org 下载最新的内核。

cd /usr/src/
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.11.tar.xz

使用以下命令提取存档文件并更改目录。

tar -xvf linux-4.17.11.tar.xz
cd linux-4.17.11/

在 CentOS 7 中配置内核

必须在 CentOS 7 环境中使用以下必需的配置选项正确配置内核。

CONFIG_KVM_GUEST=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_BLK_DEV_SD
CONFIG_SCSI_VIRTIO=y
CONFIG_VIRTIO_NET=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y

我强烈建议您将正在运行的内核配置 (.config) 从 /boot 目录复制到新内核 linux-4.17.11 目录。

cp -v /boot/config-3.10.0-693.5.2.el7.x86_64 /usr/src/linux-4.17.11/.config

现在运行 make menuconfig 命令来配置 Linux 内核。执行以下命令后,将出现一个包含所有菜单的弹出窗口。您可以在此处启用或禁用某些内核功能。如果您不熟悉这些菜单,只需按 ESC 键即可退出。

cd /usr/src/linux-4.17.11/
make menuconfig

设置内核配置选项后,单击保存保存配置界面并退出菜单。

在CentOS 7中编译内核

在开始内核编译之前,请确保您的系统文件系统上有超过25GB的可用空间。要确认,您可以使用 df 命令检查文件系统可用空间,如图所示。

df -h

现在使用以下命令编译并安装内核和模块(可能需要几个小时)。编译过程将文件放置在 /boot 目录下,并在 grub.conf 文件中创建一个新的内核条目。

make bzImage
make modules
make
make install
make modules_install

编译完成后,重新启动系统并验证新安装的内核。

uname -sr

就是这样。我希望这篇文章对大家有很大帮助。如果您在编译或安装内核时遇到任何问题或困难,请随时使用下面的评论表提出或发布您的问题。