CentOS7升级系统内核
时间:2019-11-02 22:00 来源:it 作者:IT
最近,在虚拟机中安装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
重启之后,发现没有其他内核可以选择。
(责任编辑:IT)
最近,在虚拟机中安装docker成功之后,尝试运行 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默认的内核版本 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
|