如何在 CentOS 7 上编译 Linux 内核
运行自定义编译的 Linux 内核总是有用的,特别是当您希望启用或禁用特定的内核功能时,这些功能在默认发行版提供的内核中不可用。
在本文中,我将解释如何从 CentOS 7 发行版中的源代码编译和使用最新的 Linux 内核(此处提供的说明也适用于 RHEL 和 Fedora )。
如果您不想完成这些复杂的设置,请按照我们的简单文章进行操作,该文章解释了如何使用第三方 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
就是这样。我希望这篇文章对大家有很大帮助。如果您在编译或安装内核时遇到任何问题或困难,请随时使用下面的评论表提出或发布您的问题。