tag

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

留下你的脚步
推荐阅读