3

Я пытаюсь настроить последовательный доступ с моего хоста libvirt к одному из его гостей.

Я настроил устройство на гостевой и запустил его:

jsharpe@sel-app1:~$ cat /etc/init/ttyS0.conf 
# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc or RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -8 9600 ttyS0

jsharpe@sel-app1:~$ sudo restart ttyS0
ttyS0 start/running, process 767

jsharpe@sel-app1:~$ ps aux|grep ttyS0
root       767  0.2  0.0   6080   632 ttyS0    Ss+  17:20   0:00 /sbin/getty -8 9600 ttyS0
jsharpe    769  0.0  0.0   7624   904 pts/0    S+   17:20   0:00 grep --color=auto ttyS0

На хосте я пытаюсь соединиться с virsh:

jsharpe@twoface:~ $ virsh console sel-app1
Connected to domain sel-app1
Escape character is ^]

... в этот момент хозяин просто зависает. Я могу убить его с помощью ^], но другие нажатия клавиш не отображаются в терминале.

Теперь вернемся к гостю, давайте перезапустим ttyS0:

jsharpe@sel-app1:~$ sudo restart ttyS0
ttyS0 start/running, process 772
jsharpe@sel-app1:~$ ps aux|grep ttyS0
root       772  1.0  0.0   6076   560 ttyS0    Ss+  17:23   0:00 /sbin/getty -8 9600 ttyS0
jsharpe    774  0.0  0.0   7624   904 pts/0    S+   17:23   0:00 grep --color=auto ttyS0

Отлично, вернемся к хозяину:

jsharpe@twoface:~ $ virsh console sel-app1
Connected to domain sel-app1
Escape character is ^]

Ubuntu 10.04.3 LTS sel-app1 ttyS0

sel-app1 login: 

Подсказка для входа? Таким образом, я должен перезапустить ttyS0 после попытки подключения? WTF. Обратите внимание, что это не проблема тайм-аута. Команда хоста / консоли будет зависать бесконечно. Соединение происходит только после перезапуска ttyS0.

1 ответ1

3

Если я правильно помню, последовательные порты не имеют стандартного средства определения, есть ли терминал, подключенный к другой стороне - или, если они это делают, большинство виртуальных последовательных консолей просто не удосуживаются реализовать их. Следовательно, экземпляр agetty для ttyS0 запускается при загрузке гостя, и баннер входа в систему просто отправляется в никуда (на отключенный порт). Когда вы наконец подключаетесь, agetty не знает об этом; это просто сидит там в приглашении входа в систему. Вы можете попытаться ввести имя пользователя вслепую, и оно будет отправлено.

Нажатие клавиши, например Enter, заставит agetty повторно отобразить баннер входа в систему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .