В продолжение к Программирование последовательных портов (комментарий).
Установил tty0tty
, который запускается при помощи systemd
как модуль ядра.
Имеется виртуальная машина Booter, на которой запускается fdd (Floppy-диск с простым загрузчиком, написанным на nasm).
При помощи команд
VBoxManage modifyvm Booter --uart1 0x3F8 4 --uart-mode1=/dev/tnt0
VBoxManage modifyvm Booter --uart2 0x2F8 3 --uart-mode2=/dev/tnt1
устанавливаются настройки для последовательных портов виртуальной машины.
Имеется программа на nasm, устанавливающая системный стек, запускающая основной код и уходящая в бесконечный цикл (простой bootloader).
Проблема:
- при первом запуске виртуальной машины программа успешно выполняется и уходит в бесконечный цикл;
- при закрытии виртуальной машины появляется сообщение «Powering VM off», которое задерживается на 50%, после чего виртуальная машина «подвисает», но в конечном итоге закрывается через некоторое время;
- повторный запуск этой же виртуальной машины приводит к зависанию хостовой системы (работает только курсор либо полное зависание).
Проблема появилась после того, как COM-порты виртуальной машины, привязанные к raw-файлам socat псевдотерминалов были привязаны к host-устройствам /dev/tnt*.
Сама программа выполняет пересылку байта данных из COM1 в COM2.
С чем может быть связано такое поведение?
UPD1: подключение COM1=/dev/tnt0 COM2=/dev/tnt1 для гостевой системы Linux (UART) приводит к самопроизвольным действиям в UEFI Boot menu -> UEFI Shell.
UPD2: в UEFI Shell выводятся последовательности символов, которые со времен все больше напоминают строковые константы меню VirtualBox Manager (https://imgur.com/a/GbJ0wTh).