zoukankan      html  css  js  c++  java
  • CentOS_7升级系统内核

    最近,在虚拟机中安装docker成功之后,尝试运行docker run hello-world时出现以下错误:

    1 $ sudo docker run hello-world
    2 Unable to find image 'hello-world:latest' locally
    3 latest: Pulling from library/hello-world
    4 1b930d010525: Pull complete 
    5 Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
    6 Status: Downloaded newer image for hello-world:latest
    7 docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:293: copying bootstrap data to pipe caused "write init-p: broken pipe"": unknown.

    查资料得知,这是CentOS内核系统与docker版本不匹配所导致的问题,下面介绍一下如何升级系统内核。

    升级系统版本
    首先,查看当前系统版本

    1 $ uname -r
    2 3.10.0-229.el7.x86_64

    然后进行升级

     1 $ yum update
     2 # 之后重启虚拟机
     3 $ reboot
     4 # 查看系统内核
     5 $ uname -r
     6 3.10.0-229.el7.x86_64
     7 # 内核并未升级,升级的其实是系统版本
     8 # 因为 CentOS 为了安全和稳定并不会把系统内核升级到最新的版本,所以 yum update 命令只会升级系统版本和更新软件
     9 $ cat /etc/redhat-release
    10 CentOS Linux release 7.6.1810 (Core) 

    升级内核版本
    升级内核

    $ 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

    上述命令为启用elrepo仓库,我们可以使用以下命令列出可用的系统内核相关包:

    1 $ yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

    之后,就可以安装最新的稳定内核:

    1 $ yum --enablerepo=elrepo-kernel install kernel-ml

    重启机器,并选择最新安装的内核(第一个)

    进入系统之后,查看内核版本uname -r

    设置GRUB默认的内核版本
    启动系统时,系统默认选择之前的版本,所以我们需要设置一下GRUB

    1 $ vi /etc/default/grub
    2 
    3 GRUB_TIMEOUT=5
    4 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    5 GRUB_DEFAULT=0
    6 GRUB_DISABLE_SUBMENU=true
    7 GRUB_TERMINAL_OUTPUT="console"
    8 GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
    9 GRUB_DISABLE_RECOVERY="true"

    重新创建内核配置

    1 $ grub2-mkconfig -o /boot/grub2/grub.cfg
    2 Generating grub configuration file ...
    3 Found linux image: /boot/vmlinuz-5.0.0-2.el7.elrepo.x86_64
    4 Found initrd image: /boot/initramfs-5.0.0-2.el7.elrepo.x86_64.img
    5 Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
    6 Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
    7 Found linux image: /boot/vmlinuz-0-rescue-16053a12b3234d688858493442d3b11e
    8 Found initrd image: /boot/initramfs-0-rescue-16053a12b3234d688858493442d3b11e.img
    9 done

    重启,不进行选择内核操作,验证更新后的内核为默认内核

    1 $ uname -r
    2 5.0.0-2.el7.elrepo.x86_64


    删除旧版本内核(可选)
    查看当前全部内核

    1 $ rpm -qa | grep kernel
    2 kernel-tools-3.10.0-957.el7.x86_64
    3 kernel-ml-5.0.0-2.el7.elrepo.x86_64
    4 kernel-tools-libs-3.10.0-957.el7.x86_64
    5 kernel-3.10.0-957.el7.x86_64

    使用yum remove删除旧版本内核

    1 yum remove kernel-tools-3.10.0-957.el7.x86_64 kernel-tools-libs-3.10.0-957.el7.x86_64 kernel-3.10.0-957.el7.x86_64


    重启之后,发现没有其他内核可以选择。

  • 相关阅读:
    Java8之Optional用法举例
    Java多线程之ThreadPoolTaskExecutor用法
    Java多线程之ExecutorService使用说明
    CountDownLatch同步计数器使用说明
    读取excel文件内容 (hutool-poi)
    字符串工具-StrUtil(hutool)
    IDEA 常用插件
    在 Gerrit 仓库中创建空分支
    Linux idea 输入中文出现下划线乱码
    ArchLinux 修改 MariaDB 数据库路径后启动报错 Can't create test file /xxxxx/xxxxx-test
  • 原文地址:https://www.cnblogs.com/yanglang/p/10761857.html
Copyright © 2011-2022 走看看