升级 Ubuntu Linux 内核的几种不同方法
即将开播:4月29日,民生银行郭庆谈商业银行金融科技赋能的探索与实践
这个指南里介绍了 7 种为 Ubuntu 升级 Linux 内核的不同方法。这 7 种方法里,有 5 种需要重启系统来使新内核生效,其他两种则不用。升级之前,强烈建议你将重要数据进行备份! 这里提到的所有方法只在 Ubuntu 中测试过。我们并不确定这些方法是不是也能适用于其他 Ubuntu 的特色发行版(如:Xubuntu)和衍生发行版(如:Linux Mint)。
第一部分:需要重启的内核升级
以下方法需要你重启系统以便新的内核生效。以下所有方法都建议在个人系统或测试系统中进行。重要的事儿再说一遍,请备份好你 Ubuntu 中的重要数据、配置文件和其他重要的东西。
方法 1 - 使用 dpkg 升级 Linux 内核(手动方式)
这个方法可以帮助你从 kernel.ubuntu.com 网站手动下载可用的最新 Linux 内核。如果你打算安装最新版(而不是稳定版或者正式发布版),那这种方法对你会很有用。从以上链接下载 Linux 内核版本。编写这个指南的时候,最新的可用版本是 5.0-rc1,最新的稳定版是 v4.20。
点击你所选择的 Linux 内核版本链接,找到你对应的架构(“Build for XXX”)的那部分。然后下载符合以下格式的两个文件(其中 X.Y.Z 是最高版本号):
- linux-image-X.Y.Z-generic-*.deb
- linux-modules-X.Y.Z-generic-.deb
在终端中改变到文件所在的目录,然后执行此命令手动安装内核:
$ sudo dpkg --install *.deb
重启系统,使用新内核:
$ sudo reboot
检查是否如你所愿:
$ uname -r
以上的指南是针对的是 4.15 版本,不过安装最新版本的所有的步骤都是一样的。
- 优势: 不必联网(你可以从任何系统中下载 Linux 内核来使用)
- 缺点: 手动更新,需要重启系统。
方法 2 - 用 apt-get 来升级 Linux 内核(推荐方法)
这是在类 Ubuntu 系统中升级 Linux 内核的推荐方法。不同于上一个方法,这种方法会从 Ubuntu 官方仓库下载、安装内核版本,而不是从 kernel.ubuntu.com网站。
要升级包括内核的整个系统,只需要执行:
$ sudo apt-get update $ sudo apt-get upgrade
如果只希望升级内核,运行:
$ sudo apt-get upgrade linux-image-generic
- 优势: 简单。推荐方法。
- 缺点: 需要联网,需要重启。
从官方库中升级内核是最接近开箱即用的方法,并且不会出什么问题。如果是生产环境的系统,这是最为推荐的升级 Linux 内核的方法。
方法 1 和方法 2 都需要用户去介入到升级 Linux 内核的过程中。而下边的方法(3、 4、 5)则几乎是全自动的。
方法 3 - 使用 Ukuu 升级 Linux 内核
Ukuu是一个 Gtk GUI 和命令行工具,它可以从 kernel.ubuntu.com 下载最新的 Linux 主线内核,并自动安装到你的 Ubuntu 桌面版和服务器版中。Ukku 不仅简化了手动下载和安装新内核的过程,同时也会帮助你安全地移除旧的和不再需要的内核。
- 优势: 易于安装使用。自动安装主线内核。
- 缺点: 需要联网,需要重启。
方法 4 - 使用 UKTools 升级 Linux 内核
跟 Ukuu 差不多,UKTools 也会从 kernel.ubuntu.com 网站获取最新的稳定内核并且自动安装到 Ubuntu 以及类似于 Linux Mint 的延伸发行版中。
- 优势: 简单,自动。
- 缺点: 需要联网,需要重启。
方法 5 - 使用 Linux 内核实用程序更新 Linux 内核
Linux 内核实用程序是目前另一个用于升级类 Ubuntu 系统 Linux 内核的程序。实质上,它是一个由一系列 Bash 脚本构成的合集,用于编译并且可以选择性地为 Debian(LCTT 译注:Ubuntu 的上游发行版)及其衍生发行版升级内核。它包含三个实用程序,一个用于手动编译、安装来自于 http://www.kernel.org 网站的源码内核,另一个用于安装来自 https://kernel.ubuntu.com 网站的预编译的内核,第三个脚本用于移除旧内核。
- 优势: 简单,自动。
- 缺点: 需要联网,需要重启。
第二部分:无需重启的内核升级
我之前说过,上边所有的方法都需要你重启服务器(LCTT 译注:也可以是桌面版)来启用新内核。如果是个人系统或者测试系统,可以这么办。但对于无法停机的生产环境系统该怎么办呢?一点问题没有,这时候实时补丁(livepatching)就派上用场了。
实时补丁(或者叫热补丁)允许你在不重启的情况下安装 Linux 更新或补丁,使你的服务器处于最新的安全级别。这对 web 主机、游戏服务器这类需要不间断在线的服务器来说是很有价值的。事实上,任何情况下,服务器都应该保持在不间断运行的状态下。由于 Linux 供应商只会在出于修复安全漏洞的目的下维护补丁,所以如果安全性是你最关注的问题时,这种方式再适合不过了。
以下两种方法不需要重启,对于生产环境和执行关键任务的 Ubuntu 服务器的 Linux 内核更新非常有用。
方法 6 – 使用 Canonical 实时补丁服务来更新 Linux 内核
Canonical 实时补丁服务可以在不需要重启 Ubuntu 系统的情况下自动应用内核更新、补丁和安全补丁。它可以减少Ubuntu系统的停机时间,并保证系统的安全。Canonical 实时补丁服务可以在安装过程当中或安装之后进行设置。如果你使用的是 Ubuntu 桌面版,软件更新器会自动检查内核补丁的更新,并通知你。在基于控制台的系统中,则需要你定期运行 apt-get update 命令来进行升级。由于需要你手动运行 apt-get upgrade 命令它才会安装内核的安全补丁,所以算是半自动的。
实时补丁对三个及以下系统免费,如果多于三个,你需要升级成名为 Ubuntu Advantage 的企业支持方案套件。这个套件包括 Kernel 实时补丁及以下服务:
- 扩展安全维护 – Ubuntu 生命周期后的重要安全更新
- Landscape – 针对大规模使用 Ubuntu 的系统管理工具
- 知识库 – 由 Ubuntu 专家撰写的私人文章和教程
- 电话和网站支持
(1) 价格
Ubuntu Advantage 包含三种付费计划,即基本计划、标准计划和高级计划。最基础的计划(基本计划)从 单物理节点 225 美元/年和单VPS 75美元/年开始计价。对于 Ubuntu 服务器版和桌面版看上去没有按月订阅。你可以在此处浏览所有计划的细节信息。
- 优势: 简单。半自动化。无需重启。支持三个免费系统。
- 缺点: 4 个以上主机的话非常昂贵。没有补丁回滚。
(2) 开启 Canonical 实时补丁
如果你想在安装后设置实时补丁服务,依照以下方法逐步执行:
$ sudo snap install canonical-livepatch $ sudo canonical-livepatch enable your-key
方法 7 - 使用 KernelCare 升级 Linux 内核
KernelCare 是最新的实时补丁方案。它是 CloudLinux 推出的产品。KernelCare 可以运行在 Ubuntu 和其他的 Linux 发行版中。它每四个小时检查一遍补丁的发布,并在无需确认的情况下安装它们。如果更新后存在问题,可以将补丁进行回滚。
(1) 价格
费用,每台服务器:4 美元/月,45 美元/年。
跟 Ubuntu 实时补丁相比,KernelCare 看起来非常便宜、实惠。好的方面在于也可以按月订阅。另一个前者不具备的功能是支持其他 Linux 发行版,如 Red Hat、CentOS、Debian、Oracle Linux、Amazon Linux 以及 OpenVZ、Proxmox 等虚拟化平台。
你可以在此处了解 KernelCare 的所有特性和简介,以及所有的付费计划的细节。
- 优势: 简单。全自动化。覆盖范围更广的操作系统。补丁回滚。无需重启。对非营利组织提供免费许可。价格低廉。
- 缺点: 不是免费的(除了30天的试用期)。
开启 KernelCare 服务
在 https://cloudlinux.com/kernelcare-free-trial5 获取一个 30 天免费试用密钥。
执行以下命令开启 KernelCare 并注册秘钥。
$ sudo wget -qq -O - https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | bash $ sudo /usr/bin/kcarectl --register KEY
如果你正在寻找一种经济实惠且可靠的商业服务来保持 Linux 服务器上的 Linux 内核更新,那么 KernelCare 是个不错的选择。