Question Comment simuler une prise USB?


J'ai une application qui implémente des automatismes lorsqu'une clé USB est branchée.

En développant, je dois le tester dans un environnement spécifique (dérivé de Debian Squeeze).
L'application s'abonne aux événements HAL via DBUS.
Le problème est que mon bureau est au troisième étage alors que mes machines de test sont au sous-sol.

Je voudrais vraiment avoir un moyen de simuler une prise USB.

  • usbip ne marche pas sur Ubuntu.
  • Je n'arrive pas à utiliser le module g_mass_storage sur Ubuntu (le module dummy_hcd me manque) et dans Debian.

Peut-être est-il possible de simuler un appel dbus?

Mon poste de travail est sur Ubuntu 12.04.


2
2017-12-06 13:45


origine


Si vous n'avez pas besoin que cette clé soit connectée à ce matériel particulier, vous pouvez utiliser virtualbox (avec le pack d'extension)! Il l'utilise très souvent. - martin-mystere
@ martin-mystere: c'est en effet une solution simple (elle fonctionne aussi avec Qemu) mais, à des fins de test, je préférerais utiliser les systèmes dédiés. Ces machines dans les sous-sols sont connectées à d'autres systèmes (ce sont les plates-formes de pré-production) et il est vraiment difficile de les reproduire entièrement avec des machines virtuelles. Merci quand même, c'est ce que je vais utiliser pour l'instant jusqu'à ce que je trouve quelque chose de mieux. - Nicolas Delvaux


Réponses:


J'ai trouvé une autre solution qui me convenait. En fait, j'ai réalisé que je n'avais pas vraiment besoin de simuler une clé USB, mais plutôt n'importe quel type de périphérique de stockage (mon application surveille HAL ou UDisks pour les événements "DeviceAdded").

J'ai donc fait ce qui suit:

  • créer une image de système de fichiers, par exemple avec la commande "virt-make-fs"
    sudo virt-make-fs --type=ntfs -- fs.tar.gz fs-test.img

  • télécharger le fichier img sur la machine de test

  • configurer l'image comme un périphérique en boucle: sudo losetup /dev/loop0 fs-test.img

Et ça y est, UDisks vient de déclencher l'événement DBUS "DeviceAdded"!
(cependant, HAL ne déclenche rien dans ce cas, c'est donc une bonne occasion de le laisser tomber car il est obsolète)

Si vous voulez, vous pouvez monter l'image manuellement avec quelque chose comme sudo mount /dev/loop0 /mnt/fs.

Si vous devez utiliser pmount, n'oubliez pas d'ajouter /dev/loop0 à /etc/pmount.allow.

Pour désactiver le périphérique en boucle, utilisez simplement sudo losetup -d /dev/loop0.


2
2017-12-07 17:13



Bien que cette réponse ait fonctionné pour vous dans ce cas particulier, la réponse elle-même n’a rien à voir avec la question initiale. Google m'amène ici en essayant de savoir comment simuler un périphérique de stockage de masse USB. Ce que je dis, c'est que vous n'auriez probablement pas dû marquer votre propre réponse comme la bonne solution. :) - holmb