如何删除主线内核并返回到受支持的内核?

如何删除主线内核并返回到受支持的内核?

我最近将 Ubuntu 12.04 升级到内核 3.4。之后计算机无法启动。所以我使用以前的内核来启动。实际上我不想要 3.4 内核。那么我该如何删除它并使用以前的内核本身呢?

答案1

你是怎么安装的?如果你只是抓取了一堆 deb 文件并安装它们,那么删除它就很简单了,只需找到软件包并运行apt-get remove每个软件包即可。

我刚喝了一杯咖啡,所以你今天早上要承受我全部的责骂……这应该告诉你安装了哪些内核:

dpkg -l | awk '/linux-[^ ]+-[0-9]/ {print $2}'

仔细检查这些内容,并记下要删除的版本。还要注意记下当前安装的版本(uname -a)或自启动以来安装的任何新内核。您不想删除最新的内核。

无论如何,当您有想法时,您可以通过调整以下命令批量删除它们:

sudo apt-get purge linux-{headers,image,image-extra}-3.5.0-{7,8,9}.*

括号内的单词和数字将在运行时扩展,因此实际针对的包是:

linux-headers-3.5.0-7*
linux-headers-3.5.0-8*
linux-headers-3.5.0-9*
linux-image-3.5.0-7*
linux-image-3.5.0-8*
linux-image-3.5.0-9*
linux-image-extra-3.5.0-7*
linux-image-extra-3.5.0-8*
linux-image-extra-3.5.0-9*

您可以随意摆弄它,但为了清理,我发现这比宽通配符更安全(因为我目前在 3.5.* 内核上)。

无论哪种方式,了解 apt-get 将要做什么在您说“是”之前,请考虑一下。删除当前内核和所有内核是 Ubuntu 用户遇到的一个令人惊讶的常见困境。这不是无法解决的,但是,不要这样做!

特别要小心使用通配符和 apt-get。如果你不相信我,运行apt-get -s remove linux-image-3.4*看看它选择了什么(是的 -全部内核)。不用担心,该命令处于“模拟模式”,所以它不会执行任何操作(因此不需要 root)。

答案2

卸载主线内核

主线内核有自己的 ABI 命名空间,因此它们与原装 Ubuntu 内核并排安装(/lib/modules/VERSION例如,每个内核都有一个单独的目录)。这意味着您可以同时安装多个主线内核和 Ubuntu 原装内核,并从 GRUB 启动菜单中选择所需的内核。

如果您仍然想卸载主线内核,请首先使用:

dpkg -l | grep "linux\-[a-z]*\-"

找到您想要卸载的内核包的确切名称,然后执行以下操作:

sudo apt-get remove KERNEL_PACKAGES_TO_REMOVE

请记住,几个软件包属于一个内核版本:通用头文件、特定于体系结构的头文件和特定于体系结构的图像。

来源: https://wiki.ubuntu.com/Kernel/MainlineBuilds#Uninstalling_Mainline_Kernels

相关内容