我看到过一些关于 linux-headers 包的问题,但找不到任何可以解决我的特定问题的内容。
我在 Kubuntu 16.04 上,出现以下错误(来自 VirtualBox):
请安装与当前内核匹配的 Linux 内核“头文件”,以便为系统添加新硬件支持。包含头文件的发行包可能包括:
linux-headers-通用 linux-headers-4.13.0-43-通用
我很惊讶地发现它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
软件包,那么内核升级时会发生什么?
答案1
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
。
答案2
最简单的解决方案是安装缺少的软件包:
$ 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 年发布,但它是一个 5 或 6 年的 LTS(长期支持)内核(记不清具体时间了),目前的更新次数为 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
。
答案3
我的同事正在使用 18.10 和 4.18.0.17 内核。sudo apt-get install
官方相应的 linux-headers 说未找到包。
我终于找到并下载了特定文件packages.ubuntu.com:
http://mirrors.kernel.org/ubuntu/pool/main/l/linux-hwe/linux-headers-4.18.0-17_4.18.0-17.18~18.04.1_all.deb
http://mirrors.kernel.org/ubuntu/pool/main/l/linux-hwe/linux-headers-4.18.0-17-generic_4.18.0-17.18~18.04.1_amd64.deb
一旦安装了头文件,virtualbox 包就可以工作了apt-get purge
。apt-get install