web-dev-qa-db-fra.com

Configurez les ports série virtuels (émulateur de modem null Linux) à l’aide de tty0tty

Je souhaite configurer un émulateur de port série virtuel sous Linux. Je veux que les ports soient permanents, afin que je puisse les utiliser chaque fois que je redémarre. J'ai essayé d'utiliser socat à cette fin, de cette manière,

socat -d -d pty,raw,echo=0 pty,raw,echo=0

Mais je rencontre souvent des problèmes de port occupé lors de l'utilisation de ces VSP (ports série virtuels) dans mes programmes de test. De plus, j'ai du mal à créer des VSP permanents/persistants. Je veux maintenant essayer tty0tty pour mes besoins. Mais, il existe rarement de la documentation et comment utiliser ce guide. Tout le monde peut m'éclairer là-dessus? Veuillez commenter, s’il existe également une solution pour socat.

9
yuva

Installation

  1. Téléchargez le paquet tty0tty depuis l’une de ces sources:

  2. L'extraire

    • tar xf tty0tty-1.2.tgz
  3. Construisez le module du noyau à partir de la source fournie
    • cd tty0tty-1.2/module
    • makename__
  4. Copiez le nouveau module du noyau dans le répertoire des modules du noyau
    • Sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
  5. Charger le module
    • Sudo depmod
    • Sudo modprobe tty0tty
    • Vous devriez voir de nouveaux ports série dans/dev/(ls /dev/tnt*)
  6. Accordez les autorisations appropriées aux nouveaux ports série
    • Sudo chmod 666 /dev/tnt*

Vous pouvez maintenant accéder aux ports série en tant que /dev/tnt0 (1,2,3,4, etc.). Notez que les ports consécutifs sont interconnectés. Par exemple,/dev/tnt0 et/dev/tnt1 sont connectés comme si vous utilisiez un câble direct.

Persistant à travers le démarrage

éditez le fichier/etc/modules (Debian) ou /etc/modules.conf

nano /etc/modules

et ajoutez la ligne suivante:

tty0tty

Attention

Notez que cette méthode ne rendra pas le module persistant sur les mises à jour du noyau , donc si vous mettez à jour votre noyau, assurez-vous de générer à nouveau tty0tty et répétez le processus.

Si vous ne déplacez pas le module à chaque mise à jour du noyau, systemctl --failed renverra le service systemd-modules-load.service terminé par "failedname__". Également sur journalctl -xe | grep "Failed to find".

12
Ruraj