> Tous les forums > Forum Linux
 Fonction Bash pour remplacer modprobe -l
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Logicien
  Posté le 27/08/2012 @ 00:32 
Aller en bas de la page 
Astucien

Avec le remplacement du paquet modules-init-tools par kmod dans beaucoup de distributions Linux, l'option -l --list (Afficher les modules chargeables) de modprobe est sans effet pour qui veut lister des modules du noyau actif.

Comme plusieurs, je me suis mis à utiliser la commande find comme substitue. J'en suis arrivé à cette fonction Bash que j'ai ajouté à mon $HOME/.bashrc:

function fmod() {

[ "$1" != '' ] && find /lib/modules/$(uname -r) -iname "$1".ko -print | awk -F $(uname -r)/ '{print $NF}'


[ "$1" = '' ] && find /lib/modules/$(uname -r) -iname *.ko -print | awk -F $(uname -r)/ '{print $NF}'


}

Cette variante de cette fonction donne les mêmes résultats:

function fmod() {

if [ "$1" != '' ] ; then

find /lib/modules/$(uname -r) -iname "$1".ko -print | awk -F $(uname -r)/ '{print $NF}'

else

find /lib/modules/$(uname -r) -iname *.ko -print | awk -F $(uname -r)/ '{print $NF}'

fi

}

Les commandes fmod et modprobe -l me retournent toutes les deux la liste de tous les modules disponibles:

fmod | wc
721 721 24165

modprobe -l | wc
721 721 24165

Si on ajoute \* à ces commandes, cela donne le même résultat. Le caractère \ est nécessaire pour que l'astérix fonctionne dans ce cas.

L'astérix est nécessaire si on ne connaît pas le nom du module au complet:

fmod 2800 et modprobe -l 2800 ne retournent rien, alors que fmod *2800* et modprobe -l *2800* retournent toutes les deux

kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
kernel/drivers/net/wireless/rt2x00/rt2800usb.ko

sous Funtoo où l'option -l de modprobe fonctionne encore.

Je me demande pourquoi l'option -l de modprobe a été abandonnée.



Modifié par Logicien le 27/08/2012 22:31
Publicité
Esclapion
 Posté le 27/08/2012 à 15:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour Paul,

Je vois mal la différence avec lsmod. Apparemment, tu listes tous les modules, pas les actifs.

Remarque : sous Arch, je pense que le find doit porter sur .ko.gz.



Modifié par Esclapion le 27/08/2012 16:00
Logicien
 Posté le 27/08/2012 à 22:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir Esclapion,

effectivement, dans le cas d'ArchLinux et de ses 'hérétiques', la recherche doit porter sur l'extension .ko.gz, puisque les modules de cette distribution sont compressés avec Gzip. Donc, la fonction pour ArchLinux doit se lire *.ko.gz et "$1".ko.gz .

La fonction fonctionne telle quelle pour Debian et descendants ainsi que pour Gentoo/Funtoo et éventuellement pour toute distribution Linux dont les modules du noyau ont l'extension .ko.

Il ne faut pas confondre ce que fait la commande lsmod de ce que fait la commande modprobe -l . La première, lsmod, liste les modules déjà chargés en mémoire vive, utilisés ou non par Linux. La seconde, modprobe -l, liste les modules disponibles pour utilisation par le noyau Linux actif, chargés en mémoire vive ou non, utilisés ou non.

Sous ArchLinux, j'ai 2873 modules utilisables par le noyau 3.4.7-1-fbcondecor. C'est pourquoi il est pratique de filtrer la recherche avec un mot-clé.

Avec cette fonction, mon but est d'offrir les mêmes possibilités que l'option -l de modprobe, possibilités que les développeurs Linux ont retranchées.



Modifié par Logicien le 27/08/2012 22:34
Esclapion
 Posté le 27/08/2012 à 22:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Pour toi, donc, un module actif n'est pas un module chargé, mais uniquement un module qui existe dans le noyau.

Sinon, j'ai modprobe, mais sans option -l. J'ai aussi kmod, mais ce dernier, avec le paramètre list, fait la même chose que lsmod.

(edit)

D'ailleurs, je viens de voir que : lsmod, rmmod, insmod, modinfo, modprobe et depmod sont des liens symboliques vers kmod.



Modifié par Esclapion le 27/08/2012 22:31
Esclapion
 Posté le 27/08/2012 à 22:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Re,

Au passage, cette liste est contenue dans module.dep ou mieux dans modules.order :

[root@arc2 3.4.9-1-ARCH]# head modules.order
kernel/arch/x86/kernel/msr.ko
kernel/arch/x86/kernel/cpuid.ko
kernel/arch/x86/kernel/microcode.ko
kernel/arch/x86/crypto/aes-x86_64.ko
kernel/arch/x86/crypto/camellia-x86_64.ko
kernel/arch/x86/crypto/blowfish-x86_64.ko
kernel/arch/x86/crypto/twofish-x86_64.ko
kernel/arch/x86/crypto/twofish-x86_64-3way.ko
kernel/arch/x86/crypto/salsa20-x86_64.ko
kernel/arch/x86/crypto/serpent-sse2-x86_64.ko
[root@arc2 3.4.9-1-ARCH]# wc -l modules.order
2873 modules.order
[root@arc2 3.4.9-1-ARCH]#

...quitte à faire un depmod avant, en cas de modif.

Logicien
 Posté le 27/08/2012 à 22:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Sauf erreur, je n'interprète pas les choses ici. J'ai parlé de modules utilisables, de modules chargés en mémoire vive et de modules utilisés par le noyau Linux. Un module actif pour moi, est chargé en mémoire vive et utilisé par le noyau Linux.

Certains modules sont chargés en mémoire vive sans être utilisés. Ils sont donc inactifs. Ceux qui ne sont pas utilisés du tout peuvent généralement être déchargés de la mémoire vive sans problème. Certains peuvent être chargés et être inactifs pour un temps, mais nécessaires si un événement les concernent.

La commande lsmod liste aussi les modules qui dépendent des modules chargés, les modules dépendants affichées étant eux aussi chargés. Pour retirer un module de la mémoire vive, celui-ci ne doit plus être utilisé par le noyau et aucun autre module, ce qui implique que tous ceux qui dépendent de lui et qui sont chargés en mémoire vive doivent être déchargés.

Esclapion
 Posté le 27/08/2012 à 23:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Oui, c'est moi qui ai mal lu ce bout de phrase :

qui veut lister des modules du noyau actif.


C'est le noyau qui est actif, pas les modules.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
113,67 €SSD externe USB 3.1 PNY Elite CS1050 960 Go à 113,67 €
Valable jusqu'au 18 Janvier

Amazon fait une promotion sur le SSD externe USB 3.1 PNY Elite CS1050 960 Go qui passe à 113,67 € livré gratuitement alors qu'on le trouve ailleurs à partir de 130 €. Ce SSD externe ultra compact (5,99 x 3,56 x 0,89 cm, 50 grammes) offre des vitesses allant jusqu'à 420 Mo/s en lecture et en écriture.


> Voir l'offre
60,97 €Clé USB 3.1 Sandisk Ultra Luxe 512 Go à 60,97 € livré
Valable jusqu'au 18 Janvier

Amazon Allemagne propose la clé USB Sandisk Ultra Luxe d'une capacité de 512 Go à 55,45 €. Comptez 5,52 € pour la livraison en France soit un total de 60,97 € livré. Cette clé USB 3.1 toute en métal est compatible USB 2.0 et offre de bons débits d'environ 150 Mo/s en lecture et en écriture. Elle inclut le logiciel SanDisk SecureAccess pour un cryptage et une protection par mot de passe de vos données sensibles.


> Voir l'offre
58,95 €Disque dur Seagate BarraCuda 2 To à 58,95 €
Valable jusqu'au 18 Janvier

Amazon propose actuellement le disque dur Seagate BarraCuda - 2 To (ST2000DM008) à 58,95 € livré gratuitement. On le trouve ailleurs autour de 69 €. Ce disque dur 3.5 pouces SATA III tourne à 7200tr/min et possède 64Mo de cache. 


> Voir l'offre

Sujets relatifs
pilote ubuntu pour clavier sans touches fonction
Script bash pour lancer/arrêter un logiciel
divers pour personnalisation de bash
"Phrases Epress" pour Linux...
Debian 8.0 Jessie pour le 25 avril 2015
Problème pour installer fichier msi. avec Wine
[TUTO]Script, pour Notification de Réponse.
freeBSD : problème avec bash
Linux pour vieux NEC VESRA m500 ...
Création d'une clé multiboot pour Imager/Sauvegarder sous LinuxMint!!!
Plus de sujets relatifs à Fonction Bash pour remplacer modprobe -l
 > Tous les forums > Forum Linux