IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Modules compilés en dur


Sujet :

Administration système

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut Modules compilés en dur
    Bonsoir,

    Après plusieurs recherche, je ne trouve pas comment faire pour lister les modules compiler en dur dans le noyau ?

    Connaissez-vous la commande qui va bien ?

    Je connais modprobe -l pour lister les modules disponibles.

    Je suis sous debian.

    Merci.

    Bonne soirée.

    ++
    Fluxy__

  2. #2
    Membre éclairé Avatar de Pilru
    Homme Profil pro
    Dev ASP.NET/jQuery ; Admin ORACLE
    Inscrit en
    Septembre 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev ASP.NET/jQuery ; Admin ORACLE

    Informations forums :
    Inscription : Septembre 2007
    Messages : 491
    Points : 833
    Points
    833
    Par défaut
    Si c'est compiler "un dur" dans le noyau, ce ne sont plus des modules.

    Le seul moyen que je connaisse pour savoir ce qui est intégré dans le noyau, c'est de faire un grep sur le fichier .config. Chaque options est marquée par un tag suivant qu'elles intégrée au noyau, compilé en module ou mise de coté. N'ayant pas de .config sous la main, je ne peut être plus précis.

    Et pour infos, modprobe -l ou lsmod ne liste que les modules en cours d'utilisation. Ce n'est donc pas exhaustif.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut
    Je te remercie pour ta réponse,

    cependant si je prend l'exemple suivant sur ma machine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    lsmod | grep "8139"
     
    8139cp                 19072  0
    8139too                23936  0
    mii                     4864  2 8139cp,8139too
    ok, donc mii est utilisé par 8139cp.
    Est-ce qu'il est chargé au démarrage de la machine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /etc/mod* -print0 | xargs -0 grep "8139"
    Pas de réponse, donc doit être en dur.
    Je tente de le déchargé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    modprobe -r 8139cp
     
    lsmod | grep "8139"
     
    8139too                23936  0
    mii                     4864  1 8139too
    Donc on peux décharger un module compilé en dur dans le noyau ??

    Autre chose, si je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -i "sd_mod" /boot/.config
    pas de réponse cependant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    modprobe sd_mod
     
    lsmod | grep "sd_mod"
     
    sd_mod                 20480  0
    scsi_mod              115148  1 sd_mod
    Donc je peux monté dans module qui n'ont pas été choisi à la compilation du noyau ??

    Je suis un peu paumé...

    ++
    Fluxy__

  4. #4
    Membre éclairé Avatar de Pilru
    Homme Profil pro
    Dev ASP.NET/jQuery ; Admin ORACLE
    Inscrit en
    Septembre 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev ASP.NET/jQuery ; Admin ORACLE

    Informations forums :
    Inscription : Septembre 2007
    Messages : 491
    Points : 833
    Points
    833
    Par défaut
    Le noyau est capable de charger lui même les modules dont il a besoin, en temps voulu.

    Les modules sont dans /lib/modules/<num noyau>/

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut
    ca je l'est bien compris et je sais que les modules sont dans ce répertoire ma question est :

    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 ?

    A part l'utilisation d'un grep sur le /boot/.config, existe-t-il une autre solution ?

    Merci et bonne journée.

  6. #6
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par Pilru Voir le message
    modprobe -l ou lsmod ne liste que les modules en cours d'utilisation. Ce n'est donc pas exhaustif.
    Je pense bien que "modprobe -l" donne une liste exhaustive de tous les modules disponibles.

    Ensuite, par rapport à la question d'origine, il faudrait connaitre le but de ton opération pour trouver d'éventuelles astuces...

  7. #7
    Membre éclairé Avatar de Pilru
    Homme Profil pro
    Dev ASP.NET/jQuery ; Admin ORACLE
    Inscrit en
    Septembre 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev ASP.NET/jQuery ; Admin ORACLE

    Informations forums :
    Inscription : Septembre 2007
    Messages : 491
    Points : 833
    Points
    833
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ok, donc mii est utilisé par 8139cp.
    Est-ce qu'il est chargé au démarrage de la machine ?
     
    Code :
     
    find /etc/mod* -print0 | xargs -0 grep "8139"
     
    Pas de réponse, donc doit être en dur.
    Pas forcement. Cela peut aussi signifier que le module n'est pas explicitement chargé au démarrage. Pour savoir qu'il ne s'agit pas d'un module, il faut s'assurer qu'il n'y a pas de fichier .ko dans /lib/modules/...

    Je tente de le déchargé

    Code :

    modprobe -r 8139cp

    lsmod | grep "8139"

    8139too 23936 0
    mii 4864 1 8139too

    Donc on peux décharger un module compilé en dur dans le noyau ??
    Si tu as pu le déchargé, c'est qu'il s'agit d'un module.

    Autre chose, si je fait :

    Code :

    grep -i "sd_mod" /boot/.config

    pas de réponse cependant

    Code :

    modprobe sd_mod

    lsmod | grep "sd_mod"

    sd_mod 20480 0
    scsi_mod 115148 1 sd_mod

    Donc je peux monté dans module qui n'ont pas été choisi à la compilation du noyau ??
    Cela veut peut-être dire que dans le fichier .config le module qui sera généré sous le mon de sd_mod.ko n'est pas référencé sous ce nom.

    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.

    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.

    Je pense bien que "modprobe -l" donne une liste exhaustive de tous les modules disponibles
    Au temps pour moi.

  8. #8
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)
    Citation 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)

    Citation 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)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Points : 78
    Points
    78
    Par défaut
    En gros c'était pour recompiler le noyau et désactiver les fonctionnalitées activé en dur dans le noyau qui ne me serve pas.

    J'avais penser à les chercher avec un script du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!/bin/bash
    repBoot="/boot/config-$(uname -r)"
    repConfModule="/etc/mod*"
    mesModulesInutiles=$(lsmod | awk -F " " '{ if ($3 == 0) print $1 }')
    for var in $mesModulesInutiles ; do
            echo "Recherche du module $var"
            grep -i "$var" -R $repConfModule
            if [ $? == 1 ] ; then
                    echo "Le Module $var nest pas active au demarrage"
            else
                    echo "Le Module $var est active au demarrage"
            fi
     
            echo "Recherche de la chaine $var dans $repBoot"
            grep -i "$var" $repBoot
            if [ $? == 0 ] ; then
                    echo "Le module a bien ete compile en module..."
            else
                    module=$(modprobe -l | grep -i "$var")
                    if [ $? == 0 ] ; then
                            echo "Le module $var semble correspondre au fichier $module"
                    else
                            echo "Aucun fichier trouve pour $var"
                    fi
            fi
            echo "--------------------------------"
            echo
    done
    ++ Fluxy__

  10. #10
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Très intéressant !

    Je cherchait un truc du genre. Mais je partais dans l'autre sens.

    On compile un noyau avec tout activé et tout ce qui est compilable en module, en module.

    On aurait ensuite un script qui regarde les modules chargés et qui regarde les drivers utilisés, etc. Le script tournerait pendant assez longtemps pour caractériser une utilisation typique du système.

    Enfin on aurait un .config qui reflète au mieux (c'est impossible d'être exact je pense), notre configuration.


    Bon, tout cela pour dire que c'est un sujet intéressant et que des résultats dans cette direction manque je trouve...

Discussions similaires

  1. [kernel] Passer un parametre a un module compiler en dur
    Par Ulrar dans le forum Administration système
    Réponses: 3
    Dernier message: 02/06/2009, 10h58
  2. [MIPS R3000] Assembleur dans module compilation
    Par hanou88 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 09/11/2008, 14h18
  3. Debian 2.4: Liste des modules compilés
    Par Jean_Benoit dans le forum Administration système
    Réponses: 2
    Dernier message: 13/04/2007, 20h12
  4. Réponses: 8
    Dernier message: 11/09/2006, 16h39
  5. Compiler un module sans recompiler tout le noyau
    Par khayyam90 dans le forum Administration système
    Réponses: 7
    Dernier message: 22/09/2005, 04h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo