文章目录
一、Linux 升级内核
Centos7 yum/rpm升级到最新内核
Centos7升级内核
参考URL: https://www.cnblogs.com/mgsudu/p/14741297.html
如何在 CentOS 7 中安装或升级最新的内核
参考URL: https://linux.cn/article-8310-1.html
具体,推荐查看原文。
检查已安装的内核版本
[root@localhost ~]# uname -sr
Linux 3.10.0-1160.el7.x86_64
大多数现代发行版提供了一种使用 yum 等包管理系统和官方支持的仓库升级内核的方法。
但是,这只会升级内核到仓库中可用的最新版本 - 而不是在 https://www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允许使用前者升级内核。
与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。
http://elrepo.org/tiki/HomePage
Centos 7 rpm升级到指定内核
rpm 去
https://pkgs.org/download/kernel(list_del) 找 kernel-xxx.rpm
https://pkgs.org/download/kernel-devel 找 kernel-devel-xxxx.rpm
下载指定版本用rpm -Uvh安装或者用yum安装:
yum -y install kernel-ml-devel-4.12.4-1.el7.elrepo.x86_64.rpm
yum -y install kernel-ml-4.12.4-1.el7.elrepo.x86_64.rpm
centos7亲测:rpm安装的内核,reboot后貌似就自动切换好了。
关于Linux依赖包资源下载
教你怎么解决Linux依赖包第一篇:pkgs.org资源网下载
参考URL: https://blog.csdn.net/qq_36154886/article/details/106853048
-
pkgs.org
在pkgs网站上几乎收集了所有对外发布的Linux服务包,无论是Debian系,红帽系,arrch系都有,一个字:齐全
https://pkgs.org/ -
rpm.pbone.net
http://rpm.pbone.net/index.php3
二、Linux内核源码的编译及安装
下载Linux内核的源代码 (Download the source code of Linux kernel)
从[ https://www.kernel.org/]下载。
三、设置 grub2 切换内核
查看系统上的所有可用内核:
$ awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.12.1-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.25.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-16ba4d58b7b74338bfd60f5ddb0c8483) 7 (Core)
设置新的内核为grub2的默认版本
服务器上存在4 个内核,我们要使用 5.12.1这个版本,可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置
方法1、通过 grub2-set-default 0 命令设置
其中 0 是上面查询出来的可用内核
grub2-set-default 0
方法2、编辑 /etc/default/grub 文件
设置 GRUB_DEFAULT=0,通过上面查询显示的编号为 0 的内核作为默认内核:
$ vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="
(
s
e
d
′
s
,
r
e
l
e
a
s
e
.
∗
(sed 's, release .*
(sed′s,release.∗,g’ /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=“console”
GRUB_CMDLINE_LINUX=“crashkernel=auto rd.lvm.lv=cl/root rhgb quiet”
GRUB_DISABLE_RECOVERY=“true”
方法3: 推荐
查看所有内核启动 grub2
# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.2.4-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-327.28.3.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-327.22.2.el7.x86_64) 7 (Core)
3 : CentOS Linux (3.10.0-327.13.1.el7.x86_64) 7 (Core)
4 : CentOS Linux, with Linux 0-rescue-cd8c4444947b4b0b818457f51ded6591
修改为最新的内核启动
grub2-set-default ‘CentOS Linux (5.2.4-1.el7.elrepo.x86_64) 7 (Core)’
然后reboot
经过测试 centos7 rpm安装完成,重启,自动就换成你安装的内核了。
四、centos系统中kernel-devel
1. LINUX中的kernel-devel工具是干什么的?
如果某个程序需要内核提供的一些功能,它就需要内核的 C header 来编译程序,这个时候 linux-devel 里面的东西就用上了。
kernel-devel 不光是 C Header 文件,它还有内核的配置文件,以及其他的开发用的资料。
区别:kernel-devel包只包含用于内核开发环境所需的内核头文件以及Makefile,而kernel-souce包含所有内核源代码。
如果仅仅是用于你自己编写的模块开发的话,因为只需引用相应的内核头文件,所以只有devel包即可,如果你要修改现有的内核源代码并重新编译,那必须是kernel-souce。
kernel-souce在RH某些版本之后不再附带在发行版中了,必须自己通过kernel-XXX.src.rpm做出来。
kernel-devel是用做内核一般开发的,比如编写内核模块,原则上,可以不需要内核的原代码。
kernel则是专指内核本身的开发,因此需要内核的原代码。
rpm 去
https://pkgs.org/download/kernel(list_del) 找 kernel-xxx.rpm
https://pkgs.org/download/kernel-devel 找 kernel-devel-xxxx.rpm
2. 安装标配内核 kernel-devel
找到linux的安装盘,将其挂载到当前系统中,然后去Packages目录执行安装命令。
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
cd Packages
rpm -Uvh kernel-devel*.rpm