1 votes

Pouvez-vous lancer un getty sur /dev/pts/x ? Je veux une connexion série entre mon serveur hôte KVM Linux et mon invité Windows.

Voici ce que j'ai en cours :
J'ai un serveur Debian qui exécute plusieurs services dans Docker et quelques-uns dans KVM.
L'un des hôtes KVM est une VM Windows 10 que j'utilise en fait comme un bureau en utilisant le passthrough PCI du GPU, de l'USB et d'autres choses.
Sur la VM Windows, j'ai également un périphérique série virtuel qui se connecte à /dev/pts/1.

Si je lance Putty sur la machine virtuelle Windows et que je me connecte à Com1, je peux echo "something" > /dev/pts/1 sur mon serveur hôte et il apparaît dans ma fenêtre putty. Je peux également cat /dev/pts/1 et je tape les données dans ma fenêtre putty et ça s'affiche dans la sortie cat.

Ce que j'essaie de faire : Je veux qu'un getty fonctionne sur /dev/pts/1 afin que je puisse simplement ouvrir une fenêtre putty et obtenir la console de mon périphérique hôte.

Ce problème est apparu lorsque j'ai remarqué que j'avais fait quelque chose à la pile réseau de mon périphérique hôte et que je ne pouvais pas y accéder par ssh. J'ai essayé de lancer agetty -s 115200 -t 600 /dev/pts/1 linux qui ne fait rien. Il semble /etc/inittab n'existe plus.
J'ai envisagé d'ajouter un vnic séparé directement relié à mon hôte, mais je ne veux pas faire ça.

1voto

Majenko Points 244

J'ai constaté que agetty le gestionnaire de connexion par défaut du terminal, n'aime pas les périphériques PTS. Cependant, mgetty fonctionne bien avec lui. C'est un peu difficile à mettre en place.

Première installation mgetty - sur Ubuntu, c'est sudo apt-get install mgetty .

Ensuite, vous devez configurer un fichier d'unité systemd pour celui-ci. J'en ai fait un qui fonctionne spécifiquement sur les fichiers /dev/pts. Enregistrez le sous le nom de /lib/systemd/system/mgetty-pts@.service :

[Unit]
Description=Smart Modem Getty(mgetty)
Documentation=man:mgetty(8)
Requires=systemd-udev-settle.service
After=systemd-udev-settle.service

[Service]
Type=simple
ExecStart=/usr/sbin/mgetty -r /dev/pts/%I
Restart=always
PIDFile=/var/run/mgetty.pid.pts%I

[Install]
WantedBy=multi-user.target

Et rechargez la configuration de systemd pour prendre en compte les changements :

sudo systemctl daemon-reload

Ensuite, vous devez configurer les types de terminaux pour toutes les connexions entrantes. Ceci est fait dans /etc/mgetty/mgetty.config . Pour chacun des pts, vous devez ajouter :

port pts/2
    term vt220

Remplacez le /2 par les pts avec lesquels vous travaillez, et sélectionnez le type de terminal en conséquence.

Enfin, activez et démarrez le service pour l'opérateur que vous avez choisi :

sudo systemctl enable mgetty-pts@2
sudo systemctl start mgetty-pts@2

Vous devriez maintenant avoir un login disponible sur le serial de la machine virtuelle. Vous pouvez démarrer autant de mgetty comme vous le souhaitez sur différents périphériques pts en spécifiant un numéro pts différent dans le service enable/start. Pour /dev/pts/3, ce serait :

sudo systemctl enable mgetty-pts@3
sudo systemctl start mgetty-pts@3

Veillez donc à utiliser les bons chiffres tout au long du processus.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X