Centos 下 Linux 内核编译

本贴最后更新于 599 天前,其中的信息可能已经事过境迁

前言

工作中为了测试 nvme over tcp,需要 linux 内核版本在 5.0(nvme tcp 模块仅支持 5.0 以上的版本)以上,故做此记录

硬件平台飞腾

系统平台 Centos 7.5

该系统在安装时,软件包选择 Development and Creative Workstation,勾选了 Additional Development Development Tools Platform Development 三个开发包

当前内核版本 4.14.0

下载 linux 内核源码

linux-5.1.tar.gz

解压内核源码

tar -zxvf linux-5.1.tar.gz -C /usr/src/kernels/

拷贝旧的配置文件到解压目录

cd /usr/src/kernels/linux-5.1/
cp /boot/config-4.14.0-49.el7a.aarch64 .config

更新配置文件

make oldconfig
如果对这些不是很了解,可以直接回车,直接回车为默认配置

通过 GUI 选择配置(可选)

make menuconfig
记的保存

查看 CPU 个数(可选)

mpstat -P ALL
07:30:37 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
07:30:37 PM  all    0.02    0.00    0.03    0.03    0.00    0.00    0.00    0.00    0.00   99.92
07:30:37 PM    0    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM    1    0.00    0.00    0.05    0.00    0.00    0.00    0.00    0.00    0.00   99.94
07:30:37 PM    2    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM    3    0.00    0.00    0.02    0.00    0.00    0.00    0.00    0.00    0.00   99.97
07:30:37 PM    4    0.01    0.00    0.14    0.01    0.00    0.00    0.00    0.00    0.00   99.84
07:30:37 PM    5    0.01    0.00    0.08    0.02    0.00    0.00    0.00    0.00    0.00   99.89
07:30:37 PM    6    0.33    0.00    0.05    0.02    0.00    0.00    0.00    0.00    0.00   99.60
07:30:37 PM    7    0.01    0.00    0.01    0.02    0.00    0.00    0.00    0.00    0.00   99.96
07:30:37 PM    8    0.01    0.00    0.19    0.01    0.00    0.00    0.00    0.00    0.00   99.79
07:30:37 PM    9    0.01    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.97
07:30:37 PM   10    0.00    0.00    0.01    0.02    0.00    0.00    0.00    0.00    0.00   99.97
07:30:37 PM   11    0.00    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.97
07:30:37 PM   12    0.01    0.00    0.02    0.03    0.00    0.00    0.00    0.00    0.00   99.94
07:30:37 PM   13    0.01    0.00    0.01    0.04    0.00    0.00    0.00    0.00    0.00   99.94
07:30:37 PM   14    0.01    0.00    0.01    0.02    0.00    0.00    0.00    0.00    0.00   99.95
07:30:37 PM   15    0.01    0.00    0.01    0.02    0.00    0.00    0.00    0.00    0.00   99.95
07:30:37 PM   16    0.00    0.00    0.26    0.00    0.00    0.00    0.00    0.00    0.00   99.74
07:30:37 PM   17    0.01    0.00    0.18    0.00    0.00    0.00    0.00    0.00    0.00   99.81
07:30:37 PM   18    0.00    0.00    0.08    0.00    0.00    0.00    0.00    0.00    0.00   99.92
07:30:37 PM   19    0.01    0.00    0.04    0.00    0.00    0.00    0.00    0.00    0.00   99.95
07:30:37 PM   20    0.00    0.00    0.02    0.27    0.00    0.00    0.00    0.00    0.00   99.70
07:30:37 PM   21    0.00    0.00    0.02    0.33    0.00    0.00    0.00    0.00    0.00   99.64
07:30:37 PM   22    0.01    0.00    0.02    0.28    0.00    0.00    0.00    0.00    0.00   99.69
07:30:37 PM   23    0.00    0.00    0.02    0.25    0.00    0.00    0.00    0.00    0.00   99.73
07:30:37 PM   24    0.08    0.00    0.02    0.00    0.00    0.00    0.00    0.00    0.00   99.89
07:30:37 PM   25    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   26    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   27    0.31    0.00    0.08    0.17    0.00    0.00    0.00    0.00    0.00   99.44
07:30:37 PM   28    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   29    0.00    0.00    0.11    0.01    0.00    0.00    0.00    0.00    0.00   99.87
07:30:37 PM   30    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   31    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   32    0.01    0.00    0.06    0.00    0.00    0.00    0.00    0.00    0.00   99.93
07:30:37 PM   33    0.01    0.00    0.03    0.00    0.00    0.00    0.00    0.00    0.00   99.96
07:30:37 PM   34    0.01    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.97
07:30:37 PM   35    0.01    0.00    0.04    0.00    0.00    0.00    0.00    0.00    0.00   99.94
07:30:37 PM   36    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   37    0.01    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.97
07:30:37 PM   38    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   39    0.00    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   40    0.00    0.00    0.01    0.08    0.00    0.00    0.00    0.00    0.00   99.91
07:30:37 PM   41    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   42    0.00    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   43    0.08    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.90
07:30:37 PM   44    0.01    0.00    0.01    0.16    0.00    0.00    0.00    0.00    0.00   99.82
07:30:37 PM   45    0.01    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   46    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   47    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   48    0.01    0.00    0.08    0.00    0.00    0.00    0.00    0.00    0.00   99.91
07:30:37 PM   49    0.01    0.00    0.04    0.00    0.00    0.00    0.00    0.00    0.00   99.95
07:30:37 PM   50    0.01    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   51    0.00    0.00    0.01    0.13    0.00    0.00    0.00    0.00    0.00   99.86
07:30:37 PM   52    0.02    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.96
07:30:37 PM   53    0.01    0.00    0.02    0.00    0.00    0.00    0.00    0.00    0.00   99.97
07:30:37 PM   54    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   55    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   56    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.98
07:30:37 PM   57    0.01    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   58    0.01    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   59    0.00    0.00    0.01    0.00    0.00    0.00    0.00    0.00    0.00   99.99
07:30:37 PM   60    0.03    0.00    0.04    0.03    0.00    0.00    0.00    0.00    0.00   99.90
07:30:37 PM   61    0.02    0.00    0.03    0.00    0.00    0.00    0.00    0.00    0.00   99.95
07:30:37 PM   62    0.01    0.00    0.05    0.01    0.00    0.00    0.00    0.00    0.00   99.94
07:30:37 PM   63    0.00    0.00    0.01    0.01    0.00    0.00    0.00    0.00    0.00   99.98

编译

make -j32
-j32 为使用 32 个线程进行编译,该数字不要超过 CPU 核数

编译遇到的问题

会报 target certs/centos.pem', needed by certs/x509_certificate_list'. Stop 这个错误,解决办法是注释掉 .config 中的 CONFIG_SYSTEM_TRUSTED_KEYS="certs/centos.pem"

安装

make modules_install
make install

更新 grub 引导文件

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

查看引导信息

# cat /boot/grub2/grub.cfg |grep menuentry
if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
menuentry 'CentOS Linux (5.1.0) 7 (AltArch)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.1.0-advanced-0eb378dd-485f-476f-acd3-c23ec50a13c1' {
menuentry 'CentOS Linux (4.14.0-49.el7a.aarch64) 7 (AltArch)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.14.0-49.el7a.aarch64-advanced-0eb378dd-485f-476f-acd3-c23ec50a13c1' {
menuentry 'CentOS Linux (0-rescue-a545817b95184b4bbd1060b9474bb752) 7 (AltArch)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-a545817b95184b4bbd1060b9474bb752-advanced-0eb378dd-485f-476f-acd3-c23ec50a13c1' {

设置默认引导

grub2-set-default 'CentOS Linux (5.1.0) 7 (AltArch)'

设置默认引导始终为第 1 位

vim /etc/default/grub
修改 GRUB_DEFAULT 值为 1,GRUB_DEFAULT=1

确认引导是否正常

grub2-editenv list
若显示值为刚刚设置的默认引导则为正常

重启

reboot

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    843 引用 • 910 回帖 • 228 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    234 引用 • 223 回帖 • 349 关注
  • 内核
    6 引用 • 11 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...