Depmod -a ; ERROR: fstatat(3,

Tags: #<Tag:0x00007f63f2306fa8>

Bonjour à tous,

Tout d’abord un coup de gueule, j’ai acheté un mini PC avec un adaptateur wifi usb externe TP-LINK TL-WN822N en ayant bien vérifié avant la possibilité d’installée Linux (debian)

Aucun pb pour la machine, par contre dans la boite TP-LINK reçu il est indiqué que pour Linux il faut récupérer le pilote sur leur site. Aucun pilote n’est présent pour la version en ma possession V5.2. Avec l’aide de mon revendeur (TP-LINK ne répond pas à mon mail), il m’est proposé d’installer celui de la version V5, ce que j’essaie de faire mais la procédure de compilation (make) ne fonctionne pas.

Après recherche sur le web je tombe sur ce lien https://stackoverflow.com/questions/55628185/cant-compile-the-tplink-tl-wn822n-driver-under-linux-mint-19-1-xfce
Merci à Jerémy, le make fonctionne.

Par contre j’ai un pb avec

    make install 
    install -p -m 644 8192eu.ko  /lib/modules/4.19.0-13-amd64/kernel/drivers/net/wireless/
    /sbin/depmod -a 4.19.0-13-amd64
    depmod: ERROR: fstatat(3, linux-4.19.0-13-amd64): No such file or directory

et donc le pb cité en objet

    depmod -a
    depmod: ERROR: fstatat(3, linux-4.19.0-13-amd64): No such file or directory

Je continue mes recherches/essais, mais si un lecteur a une idée, je le remercie par avance.

C’est make install qui exécute ces deux commandes install et depmod ?
Que se passe-t-il si tu exécutes depmod tout seul ? L’option -a est superflue et par défaut il utilise la version du noyau actif.

Bonsoir,

Comme tu l’as écrit depmod ou depmod -s fournissent la même réponse, dans mon cas :

depmod: ERROR: fstatat(3, linux-4.19.0-13-amd64): No such file or directory

et pour information

ls -la /lib/modules
drwxr-xr-x 3 root root 4096 janv. 27 20:38 4.19.0-13-amd64
drwxr-xr-x 3 root root 4096 déc. 21 17:05 4.19.0-5-amd64

Je n’ai pas parlé de -s mais de -a.

Quand je n’ai pas d’idée, j’emploie les grands moyens : j’utilise strace (paquet éponyme) pour tracer les appels système de la commande :

strace -s 60 -o depmod.trace depmod

Puis je recherche les occurrences du message et ce qu’il y a autour dans le fichier trace.

1 J'aime

Désolé pour l’erreur de frappe, il s’agit bien de -a.

J’en étais à rechercher les sources, je n’ai pas pensé à strace, pour info un premier retour brut

fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(6, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
getdents64(6, /* 3 entries */, 32768)   = 80
stat("/lib/modules/4.19.0-13-amd64/kernel/fs/jfs/jfs.ko", {st_mode=S_IFREG|0644, st_size=408628, ...}) = 0
getdents64(6, /* 0 entries */, 32768)   = 0
close(6)                                = 0
openat(5, "qnx4", O_RDONLY)             = 6
fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(6, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
getdents64(6, /* 3 entries */, 32768)   = 80
stat("/lib/modules/4.19.0-13-amd64/kernel/fs/qnx4/qnx4.ko", {st_mode=S_IFREG|0644, st_size=25612, ...}) = 0
getdents64(6, /* 0 entries */, 32768)   = 0
close(6)                                = 0
openat(5, "cifs", O_RDONLY)             = 6
fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(6, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
getdents64(6, /* 3 entries */, 32768)   = 80
stat("/lib/modules/4.19.0-13-amd64/kernel/fs/cifs/cifs.ko", {st_mode=S_IFREG|0644, st_size=1859732, ...}) = 0
getdents64(6, /* 0 entries */, 32768)   = 0
close(6)                                = 0
openat(5, "freevxfs", O_RDONLY)         = 6
fstat(6, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl(6, F_GETFL)                       = 0x8000 (flags O_RDONLY|O_LARGEFILE)
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
getdents64(6, /* 3 entries */, 32768)   = 80
stat("/lib/modules/4.19.0-13-amd64/kernel/fs/freevxfs/freevxfs.ko", {st_mode=S_IFREG|0644, st_size=43444, ...}) = 0
getdents64(6, /* 0 entries */, 32768)   = 0
close(6)                                = 0
stat("/lib/modules/4.19.0-13-amd64/kernel/fs/binfmt_misc.ko", {st_mode=S_IFREG|0644, st_size=35052, ...}) = 0
getdents64(5, /* 0 entries */, 32768)   = 0
close(5)                                = 0
getdents64(4, /* 0 entries */, 32768)   = 0
close(4)                                = 0
newfstatat(3, "linux-4.19.0-13-amd64", 0x7fff96e7a2c0, 0) = -1 ENOENT (Aucun fichier ou dossier de ce type)
write(2, "depmod: ERROR: fstatat(3, linux-4.19.0-13-amd64): No such fi"..., 76) = 76

a priori c’est clair, il cherche ‹ linux-4.19.0-13-amd64 › sans /lib/modules devant, maintenant reste à savoir pourquoi ?

Ok trouvé, dans /lib/modules/linux-4.19.0-13-amd64 j’avais ce lien

linux-4.19.0-13-amd64 -> /usr/src/linux-4.19.0-13-amd64

depmod et make install* Ok !!! Merci PascalHambourg

*mais le wifi ne se connecte tj pas :-(, peut-être l’occasion d’un autre post plus tard.

PS : aucune idée d’où vient le lien sachant que c’est installation neuve, la seule chose faite est la compilation du pilote TP-LINK qui a foiré … cela confirme mon coup de gueule du début.

L’installation d’un paquet d’en-têtes du noyau comme linux-headers-4.19.0-13-amd64 qui est nécessaire à la compilation d’un module externe crée un lien symbolique dans /lib/module/$version pointant vers les en-têtes /usr/src/linux-headers-$version, mais ce lien s’appelle « source », pas linux-$version.
Est-ce que le répertoire cible /usr/src/linux-4.19.0-13-amd64 existait ?

Que disent

lsusb
modinfo 8192eu

Merci @PascalHambourg pour le complément.

Non

ls -la /usr/src
drwxr-xr-x  4 root root 4096 janv. 27 16:33 linux-headers-4.19.0-13-amd64
drwxr-xr-x  4 root root 4096 janv. 27 16:33 linux-headers-4.19.0-13-common
lrwxrwxrwx  1 root root   24 nov.  28 08:47 linux-kbuild-4.19 -> ../lib/linux-kbuild-4.19

Le wifi fonctionne, il fallait désactiver le ‹ Secure Boot ›

Effectivement le secure boot bloque le chargement de modules compilés localement (non signés avec une clé reconnue).