OpenVZ容器中的Ubuntu 14.04:试图升级内核

如何防止Ubuntu尝试升级内核?

我的主机的底层OpenVZ架构提供了这个内核:

$ uname -r 2.6.32-042stab116.2 

我的理解是,这超出了我的控制范围。 然而,每次我这样做:

 $ sudo aptitude update && sudo aptitude safe-upgrade 

我看到Ubuntu尝试(并且失败)升级。 我现在有几个处于部分安装状态的包:

 $ dpkg -l |grep linux ii libselinux1:i386 2.2.2-1ubuntu0.1 i386 SELinux runtime shared libraries ii linux-firmware 1.127.22 all Firmware for Linux kernel drivers iU linux-generic 3.13.0.101.109 i386 Complete Generic Linux kernel and headers ii linux-headers-3.13.0-100 3.13.0-100.147 all Header files related to Linux kernel version 3.13.0 ii linux-headers-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel headers for version 3.13.0 on 32 bit x86 SMP ii linux-headers-3.13.0-101 3.13.0-101.148 all Header files related to Linux kernel version 3.13.0 ii linux-headers-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel headers for version 3.13.0 on 32 bit x86 SMP ii linux-headers-3.13.0-91 3.13.0-91.138 all Header files related to Linux kernel version 3.13.0 ii linux-headers-3.13.0-91-generic 3.13.0-91.138 i386 Linux kernel headers for version 3.13.0 on 32 bit x86 SMP ii linux-headers-3.13.0-92 3.13.0-92.139 all Header files related to Linux kernel version 3.13.0 ii linux-headers-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel headers for version 3.13.0 on 32 bit x86 SMP ii linux-headers-3.13.0-93 3.13.0-93.140 all Header files related to Linux kernel version 3.13.0 ii linux-headers-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel headers for version 3.13.0 on 32 bit x86 SMP ii linux-headers-3.13.0-96 3.13.0-96.143 all Header files related to Linux kernel version 3.13.0 ii linux-headers-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel headers for version 3.13.0 on 32 bit x86 SMP ii linux-headers-generic 3.13.0.101.109 i386 Generic Linux kernel headers iF linux-image-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP iF linux-image-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP iF linux-image-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP iF linux-image-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP iF linux-image-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP iU linux-image-extra-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP iU linux-image-extra-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP iU linux-image-extra-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP iU linux-image-extra-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP iU linux-image-extra-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP iU linux-image-generic 3.13.0.101.109 i386 Generic Linux kernel image ii linux-libc-dev:i386 3.13.0-101.148 i386 Linux Kernel Headers for development ii syslinux 3:4.05+dfsg-6+deb8u1 i386 collection of boot loaders ii syslinux-common 3:4.05+dfsg-6+deb8u1 all collection of boot loaders (common files) ii util-linux 2.20.1-5.1ubuntu20.7 i386 Miscellaneous system utilities 

为了完整起见,我运行的是一个非常相似的OpenVZ容器(相同的托管),它没有显示相同的问题:

 $ uname -r 2.6.32-042stab116.2 $ dpkg -l |grep linux ii libselinux1:i386 2.2.2-1ubuntu0.1 i386 SELinux runtime shared libraries ii libv4l-0:i386 1.0.1-1 i386 Collection of video4linux support libraries ii libv4lconvert0:i386 1.0.1-1 i386 Video4linux frame format conversion library ii linux-libc-dev:i386 3.13.0-101.148 i386 Linux Kernel Headers for development ii syslinux 3:4.05+dfsg-6+deb8u1 i386 collection of boot loaders ii syslinux-common 3:4.05+dfsg-6+deb8u1 all collection of boot loaders (common files) ii util-linux 2.20.1-5.1ubuntu20.7 i386 Miscellaneous system utilities 

正如您所看到的,任何一台机器上的dpkg都没有列出实际内核,但只有前者引入了这些较新的不需要的内核。 对后者的升级一直很顺利。

UPDATE

要删除半安装的软件包, 请参阅此问题 。

  • fkraiem的回答已经解释了为什么无法从来宾容器更新正在运行的内核。

  • 要防止内核更新,您必须卸载其meta

     sudo apt-get purge linux-generic linux-image-generic linux-headers-generic 

您安装了一些内核映像包(以linux-image开头的软件包),与所有其他软件包一样,软件包管理器希望在存储库中有更新版本时升级它们。

但是,在您的情况下,内核由主机提供,并且已完全忽略已安装的内核包。 在这种情况下,卸载它们是很自然的; 包管理器可能会抱怨你没有安装内核包,因为它通常是不受欢迎的,但在你的情况下它完全没问题。

或者,保持它们的安装和升级不会造成任何伤害(除了占用磁盘空间),因为它们不会被使用。