Arquivos de cabeçalho do kernel Linux para corresponder ao kernel atual

1

Eu já vi algumas perguntas sobre os pacotes do linux-headers, mas não consegui encontrar nada para resolver meu problema específico.

Estou no Kubuntu 16.04 e recebi o seguinte erro (do VirtualBox):

Please install the Linux kernel "header" files matching the current kernel for adding new hardware support to the system. The distribution packages containing the headers are probably:

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

Fiquei surpreso ao ver que linux-headers-generic não estava instalado, embora eu não tenha certeza se deveria estar lá por padrão.

Em qualquer caso, enquanto o kernel é 4.13.0-43-generic, os cabeçalhos correspondentes não estão, de fato, instalados:

$ 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

O linux-headers-generic "sempre dependerá dos mais recentes cabeçalhos de kernel genéricos disponíveis", então achei que instalá-lo instalaria os pacotes mais recentes (neste caso, linux-headers-4.13.0-43-generic conforme exigido pelo VirtualBox) e os manteria atualizados .

No entanto, se eu tentar, peço para instalar o que parece ser um pacote muito antigo:

$ 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.

Há também um pacote chamado linux-headers-generic-lts-xenial , mas, mais ou menos, a mesma coisa.

Então, minhas perguntas:

  • Algum dos pacotes genéricos linux-headers está lá por padrão? Qual deles?
  • Preciso instalar um deles no meu caso?
  • Se eu instalar o pacote linux-headers-4.13.0-43-generic necessário diretamente, o que acontece quando o kernel é atualizado?
por Ratler 11.06.2018 / 04:28

2 respostas

4

Should either of the linux-headers-generic packages have been there by default? Which one?

Não. Nenhum dos dois.

Do I need to install either of them in my case?

Nas versões do kernel, parece que você está usando a pilha de habilitação de hardware kernel de empilhamento de hardware (HWE). Então você deve instalar os cabeçalhos para estes: linux-headers-generic-hwe-16.04 , o meta-pacote que deve depender do pacote de cabeçalho correto para o seu kernel HWE (4.13).

If I install the necessary linux-headers-4.13.0-43-generic package directly, what happens when the kernel is upgraded?

Você teria que instalar novamente manualmente os cabeçalhos relevantes. É melhor usar linux-headers-generic-hwe-16.04 .

    
por muru 11.06.2018 / 06:17
0

A solução mais fácil é instalar os pacotes ausentes:

$ 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.

Meu sistema já instalou o que você está perdendo. Por que eles estão perdendo eu não posso dizer.

Aviso para linux-headers-generic da versão mais atual é de fato 4.4.0.127.133 . Embora o Linux Kernel 4.4 tenha sido lançado em 2015, ele é um kernel LTS (Long Term Support) por 5 ou 6 anos (não se lembra exatamente) e está atualmente no número de atualização 127. Assim, o número de atualização irá crescer para 300 ou mais .

Não importa como você olhe, basta morder a bala e instalar os cabeçalhos ausentes usando:

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

Atualização de 11 de junho de 2018.

4.4.0.127.133 não é mais a versão mais recente do cabeçalho. Eu corri sudo apt upgrade e depois executei sudo apt autoremove . Recebi algumas mensagens de erro porque o software esquizofrênico removeu 127 e me disse para adicionar 127 headers para corrigir o problema:

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

Não há um problema real, e a partir de 11 de junho de 2018, a versão mais recente do linux-headers-generic é: 4.4.0.128.134 .

    
por WinEunuuchs2Unix 11.06.2018 / 07:08