在安装 CertBot 过程中,执行到 snapd 安装后,使用 snap install core 时候,发现报错:
error: system does not fully support snapd: cannot read the value of fs.may_detach_mounts kernel
parameter: open /proc/sys/fs/may_detach_mounts: no such file or directory
搜索资料发现是 Linux 内核(Linux 3.10.0-327.22.2.el7.x86_64)太老了,需要升级内核
第一步:先执行 yum update 更新所有的包
第二步:先查看并记录当前的内核版本
# uname -sr Linux 3.10.0-327.22.2.el7.x86_64
第三步:大多数现代发行版提供了一种使用 yum 等包管理系统和官方支持的仓库升级内核的方法。
但是,这只会升级内核到仓库中可用的最新版本 - 而不是在 https://www.kernel.org/ 中可用的最新版本。不幸的是,Red Hat 只允许使用前者升级内核。
与 Red Hat 不同,CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本。
要在 CentOS 7 上启用 ELRepo 仓库,请运行:
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
第四步:仓库启用后,你可以使用下面的命令列出可用的内核相关包:
# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
第五步:接下来,安装最新的主线稳定内核:
# yum --enablerepo=elrepo-kernel install kernel-ml 将会安装最新版本的内核
第六步:重启机器
第七步:为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB 配置:
为了让新安装的内核成为默认启动选项,你需要如下修改 GRUB 配置:打开并编辑 /etc/default/grub 并设置 GRUB_DEFAULT=0。意思是 GRUB 初始化页面的第一个内核将作为默认内核。
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=0 GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto idle=halt net.ifnames=0 console=tty0 console=ttyS0,115200n8" GRUB_DISABLE_RECOVERY="true"
第八步:接下来运行下面的命令来重新创建内核配置。
# grub2-mkconfig -o /boot/grub2/grub.cfg
第九步:重启机器,并查看内核版本是否升级成功
# uname -r 5.15.10-1.el7.elrepo.x86_64
说明成功了。