2 votes

Tous les modules gérés par DKMS échouent avec une erreur de format d'exécution.

Tous les modules du noyau gérés par DKMS ont commencé à échouer lors du chargement sur ma machine Ubuntu 18.04. Je l'ai remarqué avec acpi_call donc laissez-moi l'utiliser pour démontrer :

# uname -r
4.15.0-99-generic

# modinfo acpi_call.ko
filename:       /lib/modules/4.15.0-99-generic/updates/dkms/acpi_call.ko
license:        GPL
srcversion:     72B6FB9451F0D2139482F11
depends:
retpoline:      Y
name:           acpi_call
vermagic:       4.15.0-99-generic SMP mod_unload
signat:         PKCS#7
signer:
sig_key:
sig_hashalgo:   md4

# modprobe acpi_call
modprobe: ERREUR : impossible d'insérer 'acpi_call' : Erreur de format d'exécution

J'ai essayé de le réinstaller avec DKMS, en vain :

# dkms status acpi-call
acpi-call, 1.1.0, 4.15.0-99-generic, x86_64 : installé

# dkms remove acpi-call/1.1.0 --all

-------- Démarrage de la désinstallation --------
Module :  acpi-call
Version : 1.1.0
Noyau :  4.15.0-99-generic (x86_64)
-------------------------------------

Statut : Avant la désinstallation, cette version du module était ACTIVE sur ce noyau.

acpi_call.ko :
 - Désinstallation
   - Suppression de : /lib/modules/4.15.0-99-generic/updates/dkms/
 - Module d'origine
   - Aucun module d'origine n'a été trouvé pour ce module sur ce noyau.
   - Utilisez la commande d'installation dkms pour réinstaller n'importe quelle version précédente du module.

depmod...

DKMS : désinstallation terminée.

------------------------------
Suppression de la version du module : 1.1.0
complètement de l'arborescence DKMS.
------------------------------
Terminé.

# dkms install acpi-call/1.1.0

Création du lien symbolique /var/lib/dkms/acpi-call/1.1.0/source ->
                 /usr/src/acpi-call-1.1.0

DKMS : ajout terminé.

Préparation du noyau inutile pour ce noyau.  Saut...

Construction du module :
nettoyage de la zone de construction...
make -j8 KERNELRELEASE=4.15.0-99-generic -C /lib/modules/4.15.0-99-generic/build M=/var/lib/dkms/acpi-call/1.1.0/build...
Signature du module :
 - /var/lib/dkms/acpi-call/1.1.0/4.15.0-99-generic/x86_64/module/acpi_call.ko
Rien à faire.
nettoyage de la zone de construction...

DKMS : construction terminée.

acpi_call.ko :
Vérification de l'intégrité de la version du module.
 - Module d'origine
   - Aucun module d'origine ne existe dans ce noyau
 - Installation
   - Installation dans /lib/modules/4.15.0-99-generic/updates/dkms/

depmod...

DKMS : installation terminée.

# modprobe acpi_call
modprobe: ERREUR : impossible d'insérer 'acpi_call' : Erreur de format d'exécution

D'autres modules dans /lib/modules/4.15.0-99-generic/updates/dkms présentent exactement le même problème.

J'ai également essayé modprobe -f, ce qui a entraîné un message d'erreur différent :

# modprobe -f acpi_call
modprobe: ERREUR : impossible d'insérer 'acpi_call' : Clé requise non disponible

Cela m'a mené dans le terrier du MOK mais même après avoir inscrit un nouveau MOK et signé les fichiers .ko, je reçois toujours l'erreur Clé requise non disponible. Si je désactive la validation, alors modprobe -f échoue toujours avec Erreur de format d'exécution.

J'ai aussi remarqué cette ligne dans dmesg :

[  617.320431] module: x86/modules: Ignorer la cible de réadressage invalide, la valeur existante est non nulle pour le type 1, loc 0000000057734886, val ffffffffc0d56a43

Qu'est-ce qui ne va pas ici et comment puis-je résoudre ce problème ?

3voto

scarpster Points 77

Il s'avère que le problème venait du fait que le GCC par défaut sur mon système a été changé en GCC-9 (en raison d'une mise à jour de freehdl ratée, mais bon). Cela a entraîné l'utilisation d'une version différente (et apparemment, incompatible au niveau de l'ABI ?) de GCC pour la construction des modules avec DKMS par rapport à la version de GCC utilisée pour compiler le noyau Ubuntu.

Après être revenu à GCC-7 (et avoir reconstruit tous les modules DKMS), tout fonctionne maintenant comme avant, y compris le support du Secure Boot.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X