专栏首页ZNing·腾创库【玩转腾讯云】腾讯云CentOS 7.6升级内核到最新操作(附自动化Shell脚本)
原创

【玩转腾讯云】腾讯云CentOS 7.6升级内核到最新操作(附自动化Shell脚本)

最近腾讯云服务器即将到期,因为用了五年的服务器比较老了,而且云翼计划当年给的青岛配置相对续费便宜点,因此准备对其进行一下迁移。秉着自动化手段解决问题并且未来有更好的借鉴,对网上查找的升级内核操作进行了总结并脚本化处理。以供未来使用。

注意:本文首次撰写于2019-07-03,最近修改时间为2020-05-05,请注意相关程序的可用性与安全性。

简要说明脚本执行逻辑:

脚本一般需要执行三次,必须执行两次:

  1. 第一次执行进行yum update升级并重启。
  2. 第二次执行进行Kernel的正式升级与切换。
    • 这一步会进行两次的用户手工输入,第一次输入是选择最新内核所代表的最前面的数字,以便程序确认最新内核位置;
    • 第二步输入确认是否内核已经切换为第一步所输的数字,如果saved_entry=X中的X为第一步所输入的数字,即可输入y进行切换内核重启。
  3. 第三次(可选)执行进行旧内核的删除。当然也可以手工删除不执行此步骤。

代码如下:

#!/bin/bash
#
# Title: CentOS7.6_x64_upgrade_kernel_script
# Author: ZNing
# Date: 2019-7-3 23:13:09
# Pass on the Tencent Cloud CentOS7.6 x64
# You should run this script three times. The first is yum update, the second is kernel upgrade to 5, the final one is optional when you decided to maunal which is deleting old kernel.
# Having fun to using it. (*^▽^*) Best wishes from Misaka Mikoto and Misaka 10086. 

clear;

function upgradeYum()
{
    yum clean all;
    yum update -y;
    reboot;
}

function upgradeKernel()
{
    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 -y kernel-ml;
    grub2-mkconfig -o /boot/grub2/grub.cfg;
    grub2-editenv list;
    awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg;
    echo -n  "please enter the latest kernel number ->";
    read  num;
    grub2-set-default $num;
    grub2-editenv list;
}

function confirmKernel()
{
    echo -n  "are the kernel changed? If it is, plz input(y),else(n) ->";
    read confirmInput;
    if [ "$confirmInput" == 'y' ]; then
		reboot;
	elif [ "$selected" == 'n' ]; then
		exit;
	else
		confirmKernel;
		return;
	fi;
}

function removeOldKernel()
{
    IFS=$'\n';
    for LINE in `rpm -qa | grep kernel- | grep 3.`; do
        #Do some works on "${LINE}"
        yum -y remove ${LINE};
    done;
    reboot;
}

function checkSystem()
{
    cat /etc/redhat-release;
    uname -sr;
    uname -a;
    echo "[Notice] Confirm Upgrade Kernel? please select: (1~4)"
    select selected in 'Upgrade Step 1' 'Upgrade Step 2' 'Delete Old Kernel' 'Exit'; do break; done;
	[ "$selected" == 'Exit' ] && echo 'Exit Upgrade.' && exit;
	if [ "$selected" == 'Upgrade Step 1' ]; then
		upgradeYum;
	elif [ "$selected" == 'Upgrade Step 2' ]; then
		upgradeKernel;
        confirmKernel;
	elif [ "$selected" == 'Delete Old Kernel' ]; then
		removeOldKernel;
	else
		ConfirmInstall;
		return;
	fi;
	echo "[OK] You Selected: ${selected}";
}

checkSystem;

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 日常评 | 深夜,来谈一谈未来 #191005

    假期已经过半,近期对于未来的科技发展,有些许想法从头脑中迸出。趁着假期这个机会分享给大家。

    ZNing
  • 技术角 | 深度学习之《深度学习入门》学习笔记(三)神经网络

    最近学习吴恩达《Machine Learning》课程以及《深度学习入门:基于Python的理论与实现》书,一些东西总结了下。现就后者学习进行笔记总结。本文是本...

    ZNing
  • 万言谈 | 智能时代、深度学习与未来:人类与人工智能的博弈之道

    近期刚刚读完吴军博士所著《智能时代:大数据与智能革命重新定义未来》以及特伦斯·谢诺夫斯基所著《深度学习:智能时代的核心驱动力量》两本书。这两本书前后间隔接近三年...

    ZNing
  • 升级CentOS 7.4内核版本的三种方案

    在实验环境下,已安装了最新的CentOS 7.4操作系统,现在需要升级内核版本。

    拓荒者
  • Mac CentOS-7 命令行安装VMware Tools

    实际上是yum 安装的最新版kernel-devel 和本机kernel版本不一致而已。 升级一下kernel:

    悠扬前奏
  • CVE-2019-13272 Linux Kernel< 5.1.17 PTRACE_TRACEME 漏洞复现

    日前,Linux官方发布一则通告, kernel 5.1.17之前版本中存在安全漏洞,该漏洞源于kernel/ptrace.c文件的ptrace_lin...

    墙角睡大觉
  • springBoot生成SQL文件-使用Hibernate5的SchemaExport实现01

    上一篇我们说了使用jpa配置属性直接生成SQL全量脚本文件的方式,想重新了解可以看:springBoot+jpa根据实体类注解生成SQL文件。 这一篇是根据H...

    汐楓
  • CentOS7.0+OpenStack+kvm云平台部署—配置Keystone

    [root@openstack~]# yum -y install openstack-keystone

    菲宇
  • 股票型基金选择与最优投资组合构建的新方法(CS LG)

    我们从一个新的角度重新审视了经典的股票型基金选择和投资组合构建问题,并提出了一个易于实现的框架来解决实际投资中的问题。我们不是用传统的方法从一大堆股票或宏观因素...

    Elva
  • springBoot生成SQL文件-Hibernate5的SchemaUpdate实现

    之前两篇介绍了使用Hibernate生成SQL全量脚本文件的方式,若需要生成增量脚本进行版本维护呢?想到的对于生成增量脚本的方案可归为:

    汐楓

扫码关注云+社区

领取腾讯云代金券