如何删除编译后的内核?


21

我在笔记本电脑Lenovo E455上安装了14.10。

并按以下顺序编译内核3.19

因为似乎14.10不想和我一起工作。(我看到了慢动作)

http://www.kernel.org/下载当前的内核

make oldconfig
make
sudo make install

最后,无法使用新内核启动。

如何从grub中删除已编译的内核并恢复?


到目前为止,您尝试了哪些操作将其删除,并且哪里出了问题?哪里有警告或错误消息?
David Foerster,2015年

多亏您的帮助。恢复并等待Ubuntu15.XX。
Ohmygirl

Answers:


33

简单的方法:

如果通过debian方法进行编译,则可以看到安装了以下内容的内核:

dpkg --list | grep kernel-image

然后使用以下命令卸载所需的内核软件包apt-get

sudo apt-get remove kernel-image-your-kernel-image

硬方法:

如果通过进行编译和安装make install,则需要手动删除以下条目:

/boot/vmlinuz*KERNEL-VERSION*
/boot/initrd*KERNEL-VERSION*
/boot/System-map*KERNEL-VERSION*
/boot/config-*KERNEL-VERSION*
/lib/modules/*KERNEL-VERSION*/
/var/lib/initramfs/*KERNEL-VERSION*/

然后更新grub配置:

sudo update-grub2

1
我没有/ var / lib / initramfs /目录,但这是因为我的系统中没有编译内核吗?
jarno

1
/var/lib/initramfs-tools/*KERNEL-VERSION*在Debian上
Csaba Toth

1
考虑包含更新的内核(2018年)编辑:/boot/abi*KERNEL-VERSION*/boot/retpoline*KERNEL-VERSION*
WinEunuuchs2Unix

9

感谢在这里的 jarno的问题我找到了一种实现Mudit Kapil答案的方法,该方法只需要很少的输入就可以捕获任何多余的内容

由于删除内核所需的只是删除其所有文件和目录,并且所有这些文件和目录的路径中都将包含内核发行字符串,因此我们可以使用locate查找带有内核发行字符串的所有文件并将其删除删除内核。

(首先检查uname -r以查找当前正在运行的内核的名称,并确保不要删除它)

假设您要删除名为的内核4.4.6-my-kernel。您可以使用查找所有现有文件和目录(未在所有命名目录中列出文件)locate -b -e 4.4.6-my-kernel。附加rm -r到这个xargs允许您也删除文件。我想补充-p,使xargs显示的目标和要求确认执行前

locate -b -e 4.4.6-my-kernel | xargs -p sudo rm -r

然后键入yrm -r对显示的目标执行。它会抱怨说不是目录的文件不存在,因为您试图递归地删除它们(-r),但是没关系,它们仍将与目录及其内容一起删除。完成后,只需运行

sudo update-grub

等。


+1,因为它捕获的文件多于可接受的答案。例如所有的dkms东西。我将首先运行它,而无需rm选择仅查看将被删除的所有内容。
WinEunuuchs2Unix

为什么不删除当前正在运行的内核?如果那是我要删除的内核怎么办?是否可以删除当前正在运行的内核而无需先用另一个内核重新启动机器?
Liran Funaro

1
@LiranFunaro有可能。查看我的答案如何仅通过命令卸载正在运行的内核?这也解释了为什么这可能不是一个好主意
Zanna
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.