我对 Ubuntu/Linux 内核更新有点困惑。由于我有 Windows 背景,我有点希望所有更新都可以通过更新管理器获得,就 Ubuntu 而言apt/aptitude
。
然而,如果我查看我们所有服务器(大约 60 个)的内核版本,我会发现许多服务器之间的内核有所不同3.13.0-24-generic
,3.13.0-52-generic
尽管它们都运行着 Ubuntu 14.04.2。
如果我登录到正在运行的服务器3.13.0-24-generic
并运行升级,则不会提供内核更新。
为什么不安装/应用新的内核版本apt-get upgrade
以及为什么不将do-release-upgrade
内核更新为相同(最新)内核?
有人可以介绍一下 linux/ubuntu 内核更新的工作原理吗?
请注意,我apt-get update
之前正在运行apt-get upgrade
,但尚未安装内核更新。
非常感谢!
答案1
由于内核版本中的第 4 个数字通常被视为补丁...我假设系统确定您不需要该补丁 - 即系统上安装的软件没有内核补丁版本作为依赖项。它还告诉我这不是安全更新。
因此,如果没有软件依赖于 52 补丁,并且所有安装的软件都可以使用 24,那么我认为它不会被安装,并且系统将保留 24 内核。
答案2
每个 Ubuntu 版本都包含一个预安装的内核列表,要了解已安装的内核,请在终端中执行以下命令:
dpkg -l | grep -Ei "linux-headers|linux-image"
内核由如下文件组成:
linux-headers-<version>_<version>_all.deb
linux-headers-<version>-generic_<version>_<architecture>.deb
linux-image-<version>-generic_<version>_<architecture>.deb
linux-image-extra-<version>-generic_<version>_<architecture>.deb
根据系统架构(x86 或 x64),do-release-upgrade 或 apt-get upgrade 将升级所有已安装的软件包,包括内核软件包,但我们应该选择合适的内核进行启动
要下载新内核,请访问内核.ubuntu.com
下载文件并使用安装dpkg -i
您还可以执行以下操作:
apt-cache search linux-image
选择您想要的一个然后执行以下操作:
sudo apt-get install linux-image-your_version_choice
答案3
机器只有在重新启动后才会选择新内核。您可能已经安装了较新的内核,但如果机器尚未重新启动,它就没有机会切换到该内核。最近的 Linux 内核正在开发允许实时内核升级的技术,但这仍然非常前沿。
答案4
我不记得在哪个版本发生了变化,但几年前,apt-get 和 aptitude 默认停止提供内核更新,除非您本地登录服务器。如果您远程登录服务器(通过 ssh),您可以使用命令
sudo apt-get update && sudo apt-get dist-upgrade
包括内核更新。