关于内核

内核进行的是应用软件和计算机硬件的交互工作
Centos内核版本升级 - 图1
内核进行的是应用软件和计算机硬件的交互工作在计算机科学中,内核(英语:kernel)又称核心,是一个计算机程序,用来管理软件发出的数据I/O(输入与输出)要求,将这些要求转译为数据处理的指令,交由中央处理器(CPU)及计算机中其他电子组件进行处理,是现代操作系统中最基本的部分。
它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并由内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的。所以内核通常提供一种硬件抽象的方法,来完成这些操作。通过进程间通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及IO设备)。

1、Centos 6.x系统

1.1 安装elrepo

  1. yum update -y
  2. # 导入公钥
  3. rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  4. # 安装6版本的ELRepo
  5. rpm -Uvh elrepo-release-6-8.el6.elrepo.noarch.rpm
  6. # 安装新版本内核
  7. yum --enablerepo=elrepo-kernel install kernel-lt -y

目前centos6版本中仅提供有kernel-lt 版本内核,最新内核为 4.4.17(截至20190121)
https://elrepo.org/linux/kernel/el6/x86_64/RPMS/
image.png

1.2 启用新版本内核

  1. cp /etc/grub.conf{,.bak}
  2. vim /etc/grub.conf
  3. 将其中的default修改为0

image.png

1.3 修改完成后重启服务器

  1. reboot

2、Centos 7.x系统

2.1 安装elrepo

  1. yum update -y
  2. # 导入公钥
  3. rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  4. # 安装7.x版本的ELRepo
  5. rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
  6. # 安装新版本内核
  7. yum --enablerepo=elrepo-kernel install kernel-lt -y

目前为cetnos 7.x提供了ml和lt两个版本的内核,可以根据需求进行选择:
https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
image.png

2.2 修改grub文件

Centos7.x 内核升级完毕后,需要修改内核的启动顺序:

  1. vim /etc/default/grub
  2. GRUB_TIMEOUT=5
  3. GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
  4. GRUB_DEFAULT=saved #把这里的saved改成0
  5. GRUB_DISABLE_SUBMENU=true
  6. GRUB_TERMINAL_OUTPUT="console"
  7. GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0"
  8. GRUB_DISABLE_RECOVERY="true"

接下来还需要运行grub2-mkconfig命令来重新创建内核配置,命令是grub2-mkconfig -o /boot/grub2/grub.cfg,如下:

  1. grub2-mkconfig -o /boot/grub2/grub.cfg
  2. Generating grub configuration file ...
  3. Found linux image: /boot/vmlinuz-4.17.171-1.el7.elrepo.x86_64
  4. Found initrd image: /boot/initramfs-4.17.171-1.el7.elrepo.x86_64.img
  5. Found linux image: /boot/vmlinuz-3.10.0-693.2.2.el7.x86_64
  6. Found initrd image: /boot/initramfs-3.10.0-693.2.2.el7.x86_64.img
  7. Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
  8. Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
  9. Found linux image: /boot/vmlinuz-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa
  10. Found initrd image: /boot/initramfs-0-rescue-f0f31005fb5a436d88e3c6cbf54e25aa.img
  11. done

2.3 修改完成后重启服务器

  1. reboot

2.4 关于两个内核版本的说明

  1. ELRepo有两种类型的Linux内核包,kernel-ltkernel-ml 他们之间有什么区别?
  2. kernel-ml软件包是根据Linux Kernel Archives的主线稳定分支提供的源构建的。 内核配置基于默认的RHEL-7配置,并根据需要启用了添加的功能。 这些软件包有意命名为kernel-ml,以免与RHEL-7内核发生冲突,因此,它们可以与常规内核一起安装和更新。
  3. kernel-lt包是从Linux Kernel Archives提供的源代码构建的,就像kernel-ml软件包一样。 不同之处在于kernel-lt基于长期支持分支,而kernel-ml基于主线稳定分支。

3、参考文献

http://elrepo.org https://rorschachchan.github.io/2018/08/25/centos6-5升级最新内核4-18的坑/

https://rorschachchan.github.io/2018/06/11/阿里云centos7升级内核过程/

https://www.admon.org/faqs/kernel-lt-and-kernel-ml/