如何使用apt-get命令更新到最新的内核版本?

我的当前内核是3.2.0-26(我的主要电脑),而在另一台我没有使用非官方更新的Ubuntu电脑上,内核版本是3.2.0-30。然而,我的主要电脑上的更新管理器并没有显示可用的内核更新,但却显示其他更新。
我怀疑这是因为过去我安装了多个主线内核版本(不推荐的版本),包括3.5*系列。
我想要的是: 要么:修复自动内核更新。 要么:了解一种检查最新官方Ubuntu内核版本并手动获取的方法(我知道如何从deb文件安装内核)。
我已经尝试过的方法: 根据https://askubuntu.com/a/103875/29347的建议卸载了未使用的内核,包括“没有编号的通用内核”,然后还参考了https://ubuntugenius.wordpress.com/2011/01/08/ubuntu-cleanup-how-to-remove-all-unused-linux-kernel-headers-images-and-modules/
3个回答

您在自动更新方面遇到的问题可能是由于主线内核或者您删除了“通用”软件包所致。
您可以通过以下方式使用apt-get更新到最新的内核:
sudo apt-get update
sudo apt-get install linux-image-`uname -r`
如果您还需要头文件(用于编译内核模块,如无线驱动程序):
sudo apt-get install linux-headers-`uname -r`

7我得到的回复是“linux-image-3.2.0-26-generic已经是最新版本了。”但事实上并不是这样(请参阅原始问题)。你确定给我正确的终端命令了吗?虽然我对这个问题不是很专业,但在我看来,这些命令的意思是“将内核更新为你已经安装并使用的相同版本”。 - Bucic
14请问你能解释一下这个是用来做什么的吗?linux-image-\uname -r``只是尝试重新安装你已经拥有的内核,那这有什么用呢? - Asad Saeeduddin

如果您只想更新默认内核,您应该能够通过以下方法解决:
sudo apt-get install linux-image-generic

由于linux-image-generic始终依赖于您发行版的最新默认内核,当您运行apt-get upgrade时,内核会随其他软件包一起升级。
当您想要更新非默认内核时,可以通过运行此脚本来实现:
#!/usr/bin/env bash

sudo apt-get update
kernel_release="$(uname -r | cut --complement -d'.' -f3)"
kernel_release_versions="$(apt-cache search linux-image-${kernel_release})"
kernel_release_versions_generic="$(grep linux-image-"${kernel_release_version}".*-generic <<< "$kernel_release_versions")"
newest_kernel_of_release="$(echo "$kernel_release_versions_generic" | tail -n1 | cut -d' ' -f1 )"

sudo apt-get install $newest_kernel_of_release

sudo apt-get dist-upgrade

如果你还需要头文件,另外运行以下命令:
newest_kernel_of_release_headers=${newest_kernel_of_release/image/headers}

sudo apt-get install $newest_kernel_of_release_headers

2我认为 OP 正在寻找最新的主线/稳定内核。 - WinEunuuchs2Unix
1我认为这应该是正确的答案。楼主似乎表明了更改内核版本,这导致Ubuntu(正确地)停止跟踪新的次要内核版本更新。如果需要,这个答案可以让一切重新开始运行。 - Informagician
剧本的第四行使用了一个未定义的变量,${kernel_release_version}('version'末尾没有s)。它应该是${kernel_release_versions}还是${kernel_release}或其他什么? - Ken H
@KenH 我不记得是否有添加它的原因,但你可以直接删除这个变量。脚本在没有它的情况下也能正常工作。 - Tom Dörr