Linux内核头文件与当前内核相匹配

我已经看到了一些关于linux-headers包的问题但找不到任何可以解决我的具体问题的问题。

我在Kubuntu 16.04上,我收到以下错误(来自VirtualBox):

请安装与当前内核匹配的Linux内核“头”文件,以便为系统添加新的硬件支持。 包含标头的分发包可能是:

linux-headers-generic linux-headers-4.13.0-43-generic

我很惊讶地看到linux-headers-generic没有安装,虽然我不确定它是否应该默认存在。

在任何情况下,虽然内核是4.13.0-43-generic,但实际上并没有安装相应的头文件:

 $ uname -r 4.13.0-43-generic $ aptitude search linux-headers | grep ^i id linux-headers-4.13.0-32 - Header files related to Linux kernel versi id linux-headers-4.13.0-32-generic - Linux kernel headers for version 4.13.0 on i A linux-headers-4.13.0-37 - Header files related to Linux kernel versi i A linux-headers-4.13.0-37-generic - Linux kernel headers for version 4.13.0 on i A linux-headers-4.13.0-38 - Header files related to Linux kernel versi i A linux-headers-4.13.0-38-generic - Linux kernel headers for version 4.13.0 on i A linux-headers-4.13.0-39 - Header files related to Linux kernel versi i A linux-headers-4.13.0-39-generic - Linux kernel headers for version 4.13.0 on 

linux-headers-generic “总是依赖于最新的通用内核头文件”,所以我认为安装它会安装最新的软件包(在这种情况下, linux-headers-4.13.0-43-generic正如VirtualBox所要求的那样)并使它们保持最新状态。

但是,如果我尝试这样做,我会被要求安装看起来很旧的包:

 $ sudo aptitude install linux-headers-generic The following NEW packages will be installed: linux-headers-4.4.0-127{a} linux-headers-4.4.0-127-generic{a} linux-headers-generic 0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 10.8 MB of archives. After unpacking 78.4 MB will be used. 

还有一个名为linux-headers-generic-lts-xenial ,但它或多或少都是一样的。

所以,我的问题:

  • 应该是linux-headers-generic软件包中的任何一个默认存在吗? 哪一个?
  • 在我的情况下,我是否需要安装其中任何一个?
  • 如果我直接安装必要的linux-headers-4.13.0-43-generic软件包,内核升级后会发生什么?

应该是linux-headers-generic软件包中的任何一个默认存在吗? 哪一个?

不,也不是。

在我的情况下,我是否需要安装其中任何一个?

从内核版本看,您看起来正在使用硬件支持堆栈 (HWE)内核。 所以你应该为这些安装头文件: linux-headers-generic-hwe-16.04 ,这个元包应该依赖于HWE内核的正确头文件包(4.13)。

如果我直接安装必要的linux-headers-4.13.0-43-generic软件包,内核升级后会发生什么?

您必须再次手动安装相关标头。 最好使用linux-headers-generic-hwe-16.04

最简单的解决方案是安装缺少的软件包:

 $ sudo apt install linux-headers-generic linux-headers-4.13.0-43-generic Reading package lists... Done Building dependency tree Reading state information... Done linux-headers-4.13.0-43-generic is already the newest version (4.13.0-43.48~16.04.1). linux-headers-generic is already the newest version (4.4.0.127.133). 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. 

我的系统已经安装了你缺少的东西。 为什么他们失踪我不能说。

关于linux-headers-generic的注意事项最新版本确实是4.4.0.127.133 。 虽然Linux Kernel 4.4在2015年问世,但它是LTS(长期支持)内核5年或6年(记不清楚),目前更新号为127.因此更新数量最终会增加到300左右。

无论你如何看待它,你都需要咬紧牙关并使用以下方法安装缺少的标题:

 sudo apt install linux-headers-generic linux-headers-4.13.0-43-generic 

2018年6月11日更新。

4.4.0.127.133不再是最新的标题版本。 我运行sudo apt upgrade ,然后运行sudo apt autoremove 。 我收到一些错误消息,因为精神分裂软件被删除127并告诉我添加127标题来解决问题:

 Removing linux-image-extra-4.4.0-127-generic (4.4.0-127.153) ... run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.4.0-127-generic /boot/vmlinuz-4.4.0-127-generic run-parts: executing /etc/kernel/postinst.d/dkms 4.4.0-127-generic /boot/vmlinuz-4.4.0-127-generic dkms: WARNING: Linux headers are missing, which may explain the above failures. please install the linux-headers-4.4.0-127-generic package to fix this. run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.4.0-127-generic /boot/vmlinuz-4.4.0-127-generic update-initramfs: Generating /boot/initrd.img-4.4.0-127-generic Adding /lib/firmware/i915/skl_guc_ver9_33.bin run-parts: executing /etc/kernel/postinst.d/pm-utils 4.4.0-127-generic /boot/vmlinuz-4.4.0-127-generic run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.4.0-127-generic /boot/vmlinuz-4.4.0-127-generic run-parts: executing /etc/kernel/postinst.d/update-notifier 4.4.0-127-generic /boot/vmlinuz-4.4.0-127-generic run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.4.0-127-generic /boot/vmlinuz-4.4.0-127-generic 

但是没有真正的问题,截至2018年6月11日,最新的linux-headers-generic版本是: 4.4.0.128.134