Я видел несколько вопросов о пакетах заголовков Linux, но не мог найти, что что-либо решило мою конкретную проблему.
Я нахожусь на Kubuntu 16.04, и я получил следующую ошибку (от VirtualBox):
Установите файлы "заголовка" ядра Linux, соответствующие текущему ядру для добавления новой поддержки оборудования к системе. Пакеты распределения, содержащие заголовки, вероятно:
linux-headers-generic linux-headers-4.13.0-43-generic
Я был удивлен видеть это linux-headers-generic
не был установлен, хотя я не действительно уверен, как ли это, предполагается, там по умолчанию.
В любом случае, в то время как ядро 4.13.0-43-универсально, соответствующие заголовки, действительно, не установлены:
$ 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
"будет всегда зависеть от последних универсальных заголовков ядрa, доступных", таким образом, я думал, что установка его установит последние пакеты (в этом случае, 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-4.13.0-43-generic
упакуйте непосредственно, что происходит, когда ядро обновлено?Должен ли какой-либо из пакетов linux-headers-generic быть там по умолчанию? Какой?
blockquote>Нет. Ни.
Нужно ли устанавливать какой-либо из них в моем случае?
blockquote>Из версий ядра похоже, что вы используете стек аппаратного включения ] (HWE) ядро. Поэтому вы должны установить заголовки для тех:
linux-headers-generic-hwe-16.04
, метапакет, который должен зависеть от правильного пакета заголовков для вашего ядра HWE (4.13).Если я установлю необходимый пакет
blockquote>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
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
Реальных проблем нет, хотя и по состоянию на 11 июня 2018 г. linux-headers-generic
версия: 4.4.0.128.134
.
Мой коллега использовал 18,10 и 4.18.0.17 ядра. sudo apt-get install
в соответствующих заголовках Linux от чиновника говорится что пакет, не найденный.
Я наконец нашел и загрузил определенные файлы с 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
После того как Вам установили заголовочные файлы. apt-get purge
затем apt-get install
virtualbox пакет должен работать.