RHEL / CentOS 7 编译核心


现在 Linux 发行版内建的核心功能都很完善, 一般上用内建的核心即可, 但如果需要使用新版本 kernel 的功能, 那便需要重新编译 kernel 了。以下文章会示范如何在 RHEL 及 CentOS 7 编译核心。

在编译核心前, 需要先安装编译核心所需的开发工具, 这个步骤可以用 yum 安装:

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

现在可以下载最新版的 kernel, 以下网址可以取得 kernel 的下载连结:

https://cdn.kernel.org/pub/linux/kernel/v4.x/

目现最新版是 4.7.12, 用 wget 下载:

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

解压 kernel 压缩档:

# tar -xvf linux-4.17.12.tar.xz
# cd linux-4.17.12/

现在可以设定 kernel, 如果不知从何入手, 最简单的方法是用现在使用中 kernel 的设定, 这个设定档在 /boot 目录下, 以 “config-” 开头并加上版本, 例如 config-3.10.0-862.6.3.el7.x86_64.

将目前使用的核心设定档, 复制到新版核心目录下, 并改名为 .config

# cp -v /boot/config-3.10.0-862.6.3.el7.x86_64 /usr/local/src/linux-4.17.12/.config

执行 menuconfig 指令:

# cd /usr/local/src/linux-4.17.12/
# make menuconfig

执行后会弹出图型接口的选单, 设定后按 “Save” 及 “Exit”.

在开始编译前, 需要确定 /boot 有足够的空间, 因为编译的档案会放在 /boot 下面, 执行以下指令开始编译:

# make bzImage
# make modules
# make
# make install
# make modules_install

编译完成后, 执行以下指令更新 GRUB:

# grub2-mkconfig -o /boot/grub2/grub.cfg

如果是 UEFI 系统, 需要执行以下指令:

# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

完成后重新启动系统.

Leave a Reply