http://www.solves.com.cn/it/rj/czxt/linux/2019-08-05/2756.html

https://www.linuxrumen.com/rmxx/931.html

前言

本文主要如何安全地升级Ubuntu内核,以18.04 Server版为例纂写本教程。

我们先来了解一下什么是主线内核构建(Mainline Kernel Build)

Mainline Kernel Build是一个从kernel.org开发的一个vanilla内核,作为deb包打包。 Canonical Kernel Team构建和定制Ubuntu的内核源代码,并将其构建为.deb包,以便于apt包管理器进行安装。 只有在需要最新的内核功能的情况下才能使用Mainline内核,因为与Ubuntu一起运行的生产内核可能不太稳定。

我们可以从 Canonical Kernel Team Mainline Kernel Build官方网站查找需要的内核:

https://kernel.ubuntu.com/~kernel-ppa/mainline/

确认升级目标版本
在这里插入图片描述

Ubuntu系统怎么升级到最新内核,看这里少踩坑

确认升级目标版本

可以看出,目前Ubuntu最新的mainline内核版本为4.20.5和v5.0-rc2。确定升级内核的步聚

把当前系统所有软件包和内核升级到最新
检查当前内核版本
下载并安装新内核版本
删除旧内核
把当前系统所有软件包和内核升级到最新

zcwyou@ubuntu1804:~$ sudo apt update
已下载 61.7 MB,耗时 1分 13秒 (842 kB/s)

正在读取软件包列表… 完成

正在分析软件包的依赖关系树

正在读取状态信息… 完成

有 29 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。

查询系统更新包

Ubuntu系统怎么升级到最新内核,看这里少踩坑

查询系统更新包

可以看出,有29个软件包需要升级。

查看哪些软件包需要升级,这个步聚非必要:

zcwyou@ubuntu1804:~$ sudo apt list --upgradable
开始升级系统所有的软件包,类似于windows系统更新。

zcwyou@ubuntu1804:~$ sudo apt upgrade -y
[sudo] password for zcwyou:

Reading package lists… Done

Building dependency tree

Reading state information… Done

Calculating upgrade… Done

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

1 not fully installed or removed.

After this operation, 0 B of additional disk space will be used.

Setting up Docker-ce (5:18.09.13-0ubuntu-bionic) …

update-alternatives: warning: forcing reinstallation of alternative /usr/bin/dockerd-ce because link group dockerd is broken

在这里插入图片描述

正在显示系统更新过程

重启服务器,既然已经决定要升级内核了,服务器应该可以重启吧?

zcwyou@ubuntu1804:~$ sudo reboot
重新登录系统,再次检查可升级包,并使用以下命令。

zcwyou@ubuntu1804:~$ sudo apt list --upgradeable
如果执行命令的结果为:Listing… Done,就说明系统组件已经是最新的,没有需要更新的软件。

检查当前内核版本

zcwyou@ubuntu1804:~$ uname -r
4.15.0-43-generic

可以看出当前的内核版本为4.15.0-43-generic

下载并安装最新的内核

正如上文所说的,主线内核的官方地址为https://kernel.ubuntu.com/~kernel-ppa/mainline/

我们的目标是安装最新稳定的版本v4.20.5,它对应的下载页面是:

https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/

下载最新内核文件

Ubuntu系统怎么升级到最新内核,看这里少踩坑

下载最新内核文件

选择我们服务器的架构,我们的服务器一般使用AMD64架构吧?注意,由于64位架构是AMD先推出的,所以Intel 64位处理器也被称为AMD64架构。所以这里并不仅仅是指因特尔的64位CPU。

generic表示通用版内核。

lowlatency表示低延迟内核。

我们一般选择通用版内核

先安装下载工具wget

zcwyou@ubuntu1804:~$ sudo apt install -y wget
创建专用目录

zcwyou@ubuntu1804:~$ cd ~ && mkdir newkernel && cd newkernel
我们应该使用wget分别下载4个generic版本的内核文件:

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-headers-4.20.5-042005_4.20.5-042005.201901260434_all.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-headers-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-image-unsigned-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.20.5/linux-modules-4.20.5-042005-generic_4.20.5-042005.201901260434_amd64.deb
使用dpkg安装最新内核:

zcwyou@ubuntu1804:~$ sudo dpkg -i *.deb
看到如下即表示安装成功:

Replacing config file /run/grub/menu.lst with new version

Updating /boot/grub/menu.lst … done

/etc/kernel/postinst.d/zz-update-grub:

Generating grub configuration file …

Found linux image: /boot/vmlinuz-4.20.5-042005-generic

Found initrd image: /boot/initrd.img-4.20.5-042005-generic

Found linux image: /boot/vmlinuz-4.15.0-43-generic

Found initrd image: /boot/initrd.img-4.15.0-43-generic

Found linux image: /boot/vmlinuz-4.15.0-29-generic

Found initrd image: /boot/initrd.img-4.15.0-29-generic

done

安装最新内核:

Ubuntu系统怎么升级到最新内核,看这里少踩坑

安装最新内核

更新grub,其实上面一步安装时也会自己更新grub配置。

zcwyou@ubuntu1804:~$ sudo update-grub
重启服务器

zcwyou@ubuntu1804:~$ sudo reboot
进入系统后,重新确认版本。

zcwyou@ubuntu1804:~$ uname -r
4.20.5-042005-generic

已经看到内核已经升级为最新版本4.20.5-042005-generic

验证刚刚安装的内核

Ubuntu系统怎么升级到最新内核,看这里少踩坑

验证刚刚安装的内核

删除旧内核

我们需要借助byobu这个工具删除旧内核:

oucanrong@zcwyou:~$ sudo apt install byobu -y
安装byobu用于删除旧内核

Ubuntu系统怎么升级到最新内核,看这里少踩坑

安装byobu用于删除旧内核

查看系统已经安装的内核:

oucanrong@zcwyou:~$ dpkg -l | grep linux-image
查询当前系统的内核包

Ubuntu系统怎么升级到最新内核,看这里少踩坑

查询当前系统的内核包

使用byobu删除旧内核,

oucanrong@zcwyou:~$ sudo purge-old-kernels
默认情况下,byobu将在系统上至少保留2个内核版本,以确保在第一个失败时具有备用内核。

使用byobu删除旧内核

Ubuntu系统怎么升级到最新内核,看这里少踩坑

使用byobu删除旧内核

如果你想保留唯一一个(最新的)内核,那么你可以使用下面的命令除去一个内核以外的所有内核。执行以下命令:

oucanrong@zcwyou:~$ purge-old-kernels --keep 1 -q
正常情况,purge-old-kernels命令会自动更新grub,为了保证安全,我们可以考虑再更新一次。

oucanrong@zcwyou:~$ sudo update-grub
Ubuntu内核现在从主线内核版本升级到最新版本4.20.5-042005-generic,旧的内核版本已从系统中删除,以释放磁盘空间。

总结:内核是Linux系统中最基础最重要的文件,即使你是一个Linux老手,也不建议手工升级和删除,强烈建议使用工具进行操作,避免发生严重后果。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐