Une solution:
find -L /usr/src/linux -name "Kconfig" -exec grep -B 2 "tristate" {} \; | grep "^config" | cut -d " " -f2 | xargs -I NAME grep "[^#].*NAME=y" /usr/src/linux/.config
Explications:
-[find -L /path/to/linuxsrc -name ] je ne vois pas comment a part chercher dans les Kconfig ceux qui se déclarent en "tristate" et non "bool" (voire autre chose pour les valeurs numériques, donc on cherche les fichier Kconfig)
Envoyé par
/usr/src/linux/drivers/gpio/Kconfig
config GPIO_PCA953X
tristate "PCA953x I/O ports"
depends on I2C
-[grep -B 2 ] le config associé est sur la ligne précédent, voire une ligne encore au dessus (et peut-être même plus, on peu donc en rater ;( ), donc on affiche 2 lignes avant
-[grep "^config"] on ne garde que les lignes qui on config au début
-[cut -d " " -f2] on prend le deuxième champ (i.e. GPIO_PCA953X)
-[xargs -i NAME "] et on applique pour tous ces noms:
-[grep "[^#].*NAME=y /usr/src/linux/.config] on cherche dans le .config les champs qui sont mis à y (# au début indique une ligne commentée, et =m indique un module)
Rq:
- les fichiers ils peuvent être ailleurs (le .config notamment)
- mais au fait, pourquoi as-tu besoin de ça, comme dit précédemment, modprobe gère lui-même les dépendances (deload tous tes modules (par exemple 8139cp, 8139too et mii) et fait un modprobe -v 8139cp, il devrait aussi loader mii)
Envoyé par
Pilru
Citation:
>Comment savoir si une fonctionnalité (vu que tu ne veux pas que je l'est appelle module) est compilée en dur dans le noyau ?
Un module, par définition, est compilé comme une extension au noyau (un fichier .ko). Ce qui est dans le noyau, n'est donc pas un module à proprement parlé. Soyons précis sur les termes. Sinon, on ne va pas se comprendre.
Citation:
>A part l'utilisation d'un grep sur le /boot/.config, existe-t-il une autre solution ?
Par déduction, si tu vois le nom d'un module dans lsmod, et qu'il n'y a pas dans .ko correspondant dans /lib/..., c'est qu'il s'agit d'une fonction du noyau.
Euh, plutôt pas d'accord, si lsmod te donne un truc c'est que c'est un module (et devrait correspondre à un .ko dans /lib/modules)
Partager