Forum Linux.embarqué Udev

Posté par  .
Étiquettes : aucune
0
24
fév.
2010
Bonjour à tous,

Je tente depuis un moment de faire fonctionner udev...

Il est bien configuré / compilé . J'ai copié sur la carte tout les fichiers créés lors de cette compilation.

Etc/udev/rules.d
Etc/udev/udev.conf
/lib/libudev*
/sbin/udevd
/sbin/udevadm

etc...

Mais je n'arrive pas à créer les périphériques dans /dev .

Dans le fichier udev.conf j'ai rajouté la ligne : udev_root= ‘’/dev ‘’

Quant au dossier /dev si j’ai bien compris il doit etre monté de cette facon :

Mount –t tmpfs udev /dev

Mais pour booter il faut qu’il y ai au moins quelques périphériques dans /dev (console, null…)
J'ai donc essayé plusieurs manières de lancer le daemon (via le sysinit, dans la console une fois logguer (udevd --daemon) mais rien ne se créé.

Merci de votre aide.
  • # Les bases

    Posté par  . Évalué à 2.

    Bon, déjà ce serait bien de savoir sur quel genre de distro tu te bases : si c'est du fait main complet ou pas.

    Ensuite, oui, le userspace va avoir besoin d'accéder à certains devices avant que udev soit lancé. Ce sera en gros ceux que t'as listé (je crois même qu'avec juste ces deux là, on peut se démerder). Udev sera lancé après.

    Par contre, apprend d'abord ce qu'est un montage. Udev va effectivement travailler dans un tmpfs, que tu dois monter avant de le lancer. Mais comme il faut que tu aies aussi un /dev avec tes devices minimum avant ça, il faudra (en général) que tu les aies dans ton FS racine sous /dev. Quand le tmpfs sera monté, bien sûr, il les recouvrira, mais udev créera alors tout ce qu'il faut.

    Pour les créer, bah ... fait les mknod qui vont bien dans le FS correspondant.

    Ha oui, aussi, t'as pas précisé si t'étais dans un initramfs (je suppose que non, mais on sait jamais).
    • [^] # Re: Les bases

      Posté par  . Évalué à 1.

      Bonjour,

      Merci de votre réponse. Je travaille sur une carte Compulab CMX270 et j'ai implanté un noyau linux 2.6.32.

      J'ai déja réussi a booter via NFS, j'ai donc déjà créé les périphériques dont j'avais besoin dans /dev. Maintenant je cherche à installer udev pour des raisons que l'on connait tous.

      Donc si j'ai bien compris je laisse le minimum de périphériques dans /dev et je monte le tmpfs lors du boot via lesysinit?

      Le problème c'est que ca ne créés aucun fichier dans /dev...

      Je lance udev via la commande :

      udevd -- daemon

      merci,
      • [^] # Re: Les bases

        Posté par  . Évalué à 2.

        Bon, ça ne me dit toujours pas si tu bosses sur une distro faite maison ou non, mais bon ...

        Donc, à priori tu fais ce qu'il faut, maintenant il faudrait savoir plus précisément d'où vient le problème : t'as un message d'erreur ? Quelque chose d'autre ? T'aurais un log à montrer, ou un bout de ton sysinit ? T'as bien monté /proc et /sys ?
        • [^] # Re: Les bases

          Posté par  . Évalué à 1.

          Que voulez vous dire par "une distro"?

          Voici mon sysinit :

          #!/bin/sh
          do_command (){
          echo -n "running $@ "
          $@
          if [ $? -ne 0 ]
          then
          echo " [ERROR]"
          else
          echo " [SUCCESS]"
          fi
          }
          do_command mount -t proc none /proc
          do_command mount -t sysfs none /sys
          do_command mount -t tmpfs none /tmp
          do_command ifconfig eth0 172.16.4.1
          #démarrage de udev et hotplug
          do_command /sbin/udevd --daemon
          do_command /etc/init.d/hotplug start
          do_command modprobe usb-storage
          do_command modprobe ucb1400_core
          #chargement des modules FAT
          do_command modprobe fat
          do_command modprobe vfat
          #chargement des caractères internationaux
          do_command modprobe nls_cp437
          do_command modprobe crc-ccitt

          Comme erreur relatif à ca au boot j'ai simplement quelque chose sur hotplug mais je pense que les périphériques devraient se créer meme sans hotplug...
          • [^] # Re: Les bases

            Posté par  . Évalué à 2.

            Par une "distro", je veux dire une distribution : partir d'un ensemble kernel + userspace déjà prêt, genre openembedded, buildroot-ng (openwrt), etc. Parce que partir de 0 (comme ça a l'air d'être ton cas) c'est un peu "hardcore".

            Sinon, vu ton script, et mes souvenirs (d'où l'importance d'une distro : on évite les oublis bêtes), ça a l'air "correct". Peut-être que udev n'a pas encore le temps de créer les périphs avant qu'une autre partie de l'OS veuille y accéder. Ou peut-être qu'il manque un truc, mais je ne vois pas. D'où l'importance (encore) de mon premier point.

            Après, udev n'est pas indispensable non plus si tu fait de l'embarqué minimal. À voir.
          • [^] # Re: Les bases

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

            Pour ma part dans mes scripts d'init je mets ceci:

            mount -t tmpfs -o size=10M,mode=0755 udev /dev
            echo > /proc/sys/kernel/hotplug
            echo 1500 >/proc/sys/vm/dirty_writeback_centisecs
            echo 5 >/proc/sys/vm/laptop_mode
            mkdir -p /dev/.udev/db
            udevd --daemon
            udevadm trigger
            udevadm settle

            et cela fonctionne

Suivre le flux des commentaires

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