Forum Linux.noyau Chargement automatique de modules

Posté par  .
Étiquettes : aucune
0
7
jan.
2005
Bonjour à tous,

Voilà, j'ai un noyau (2.6.10) compilé par mes soins, le tout dans une Mandrakelinux 10.1, tournant avec udev. J'ai inclus, par exemple, le support du port série (module 8250) et du chipset IDE (module via82cxxx) en tant que modules, et non compilé directement dans le noyau (je trouve cela plus élégant).

Mon problème est que dès je veux accéder au port série (connecté avec mon Palm), le message d'erreur comme quoi /dev/ttyS0 n'existe pas apparaît. C'est évident, les modules n'ont pas été chargés.

Il existe bien la solution d'utiliser modprobe.preload pour charger au démarrage, mais ca ne me convient pas beaucoup.

Ce que j'aimerais faire, c'est dire au noyau de charger automatiquement le module correspondant dès qu'un utilisateur tente d'accéder à un bloc périphérique.

J'ai regardé du côté de udev, qui dit clairement que c'est pas son job, mais celui des modules. Bien, j'ai alors modprobe.conf et modprobe.devfs. Lequel des deux est-ce ? modprobe.devfs n'est-il pas obsolète, ou doit-il rester intact, fait-il modifier modprobe.conf à la place ? Et comment savoir si les modifications de modprobe.conf ont bien été prises en compte (y-a-t'il un service à redémarrer) ? Je suis perdu.
  • # modprobe.conf

    Posté par  (site web personnel) . Évalué à 2.

    alias char-major-4-* lenomdumodule

    devrait faire l'affaire

    sous un noyau 2.4, c'etait alias char-major-4 nomdumodule dans modules.conf

    Je n'ai jamais testé avec un 2.6.
    • [^] # Re: modprobe.conf

      Posté par  . Évalué à 2.

      Marche pas (ou alors je m'y suis mal pris).

      De modprobe.devfs:
      alias /dev/ttyS* serial

      De modprobe.conf:
      alias char-major-4 serial
      install serial /sbin/modprobe 8250; /bin/true
  • # haaaaa

    Posté par  (site web personnel) . Évalué à 2.

    Je proposerai bien un petit settrans -cp /dev/ttyS0 /linux/module /ton/dev mais je crains qu'il ne faille attendre.
  • # La réponse

    Posté par  . Évalué à 2.

    Dans le lien http://lfs.linux-phreak.net/lfs/view/testing/chapter08/kernel.html, ils indiquent qu'udev n'est pas compatible avec modprobe.conf (impossible de créer une entrée /dev sans chargement du module).

    Il ne me reste plus qu'à les charger à la main.
  • # modprobe -av

    Posté par  . Évalué à 1.

    Et comment savoir si les modifications de modprobe.conf ont bien été prises en compte (y-a-t'il un service à redémarrer) ? Je suis perdu.

    Si tu a modifié modprobe.conf et que tu veux charger tes modif , tu peux taper
    modprobe -av lenomdumodulesansoption

    le v (verbose) t'indiquera les options qui ont été chargé avec le module (car il se refere à modprobe.conf pour savoir quels optiosn utiliser)

    J'ai personnellement une question aussi :
    dans modprobe.conf j'ai ca :

    alias snd-card-0 snd-intel8x0
    install snd-intel8x0 /sbin/modprobe --ignore-install snd-intel8x0 && /usr/sbin/alsactl restore >/dev/null 2>&1 || :
    remove snd-intel8x0 { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-intel8x0
    alias usb-controller uhci-hcd
    alias eth1 islpci_cb
    alias eth0 dmfe
    alias char-major-81 bttv
    options tda9887 port2=0 secam=L
    options bttv tuner=38 secam=L
    alias char-major-195* nvidia

    Mais le module tda9887 ne se charge pas automatiquement au boot. Il manque je crois une ligne comme celle la :

    alias char-major-XX tda9887

    Mais que mettre pour XX ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.