Centos 下 Linux 内核编译

前言

工作中为了测试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

留下你的脚步
推荐阅读