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

This site uses Akismet to reduce spam. Learn how your comment data is processed.