Как запустить виртуальную машину без графической карты (VGA), настроенной в VirtualBox

1009
Kreisquadratur

Я хочу использовать следующую функцию Linux (которая является одной из моих виртуальных машин):

Если консольное устройство не указано, будет использовано первое найденное устройство, способное выполнять роль системной консоли. В это время система сначала ищет VGA-карту, а затем последовательный порт. https://github.com/torvalds/linux/blob/master/Documentation/serial-console.txt Причина в том, что в производстве мы используем вывод видео для взаимодействия с виртуальной машиной (только текст), но для тестирования я хочу программно взаимодействовать с машиной, используя последовательный порт, предоставляемый VirtualBox.

Отказ от ответственности:

  • Я знаю, что запускать виртуальные машины без головы, но это отличается от запуска их без видеокарты.
  • Я знаю о SSH, но SSH не разрешен в ВМ
  • Я знаю о RDP, но использование RDP-клиента во время тестирования невозможно.
  • Мне известно, что я делаю скриншоты виртуальной машины и распознаю их (в отчаянии, я знаю), но тогда я не могу предоставить информацию.
  • Мне известно о недокументированном параметре cli VirtualBox: VBoxManage modifyvm "$(VM_REL_NAME)" --graphicscontroller noneно, похоже, это не вызывает функцию, указанную выше.
0
Не ответ, но вместо того, чтобы беспокоиться об отключении карты VGA (поскольку вы собираетесь использовать ее в производстве), почему бы не настроить виртуальную машину так, чтобы последовательный порт указывал на именованный канал на хост-машине (если вы используете Windows в качестве хоста), а затем настройте последовательный порт на гостевой ОС в качестве терминального соединения. Затем вы можете подключить приложение терминала операционной системы хоста к именованному каналу и та-да, у вас есть терминальное подключение к гостевой ОС. Понятно, что это бесполезно, если вы не используете GUI для всей установки. David Rouse 8 лет назад 0
@DavidRouse Это сработало бы, если бы вы использовали последовательный порт в качестве консоли, например для входа в систему. Но так как я использую его во время загрузки (модуль, с которым я хочу взаимодействовать, является системным модулем), я могу использовать этот модуль только для вывода / ввода данных на одну консоль. Kreisquadratur 8 лет назад 0
«Я хочу использовать следующую функцию Linux» - тогда сделайте это. В настоящее время я не вижу никаких вопросов, за исключением того, что «кажется, не запускает функцию, указанную выше», подразумевает, что вы испытываете трудности при использовании этой функции. В чем сложность? Почему вы не можете использовать SSH? (Это звучит как проблема с сетью, которая, возможно, должна быть исправлена, в конце концов, в любом случае.) Программное обеспечение виртуальной машины, которое я обычно использую, имеет способ отправить нажатие клавиши на локальную консоль (даже если я ее не вижу), которая может работа со скриншотами. Детали конкретной ОС могут помочь, так какая ОС Linux? TOOGAM 8 лет назад 0
@TOOGAM Что касается использования функции Linux, я не могу найти способ в Virtualbox запустить виртуальную машину без конфигурируемой графической карты / VGA (что затем должно привести к тому, что ядро ​​Linux запустит функцию переключения консоли); поэтому мой вопрос нацелен на VirtualBox, а также на то, как и если эта функция ядра Linux должна работать. Что касается SSH: образ виртуальной машины будет использоваться клиентом, у которого не должно быть доступа к SSH, и я хочу проверить точное изображение, которое получает клиент, поэтому не могу активировать SSH во время тестирования, поскольку это приведет к изменению образа (OVA). Linux - это CoreOS, и я хочу взаимодействовать с модулем Systemd. Kreisquadratur 8 лет назад 0
@TOOGAM "У программного обеспечения для виртуальных машин, которое я обычно использую, есть способ отправить нажатие клавиши", вы имеете в виду программно или интерактивно? если программно, какое программное обеспечение VM вы используете? Я не вижу простого способа (помимо использования RPD или KVM) отправлять нажатия клавиш на виртуальную машину с помощью VirtualBox. Если бы это было возможно, это сделало бы необходимость в избыточном последовательном порту. Kreisquadratur 8 лет назад 0
Опять же, это не ответ, но, возможно, для Google вы хотите использовать «перенаправление последовательной консоли» - похоже, вы должны предпочесть последовательный порт во время загрузки. Похоже, что люди с подобными ограничениями, так как вы используете эту технику. Если это не поможет, я понятия не имею - если бы это была физическая машина, я бы сказал, LOM. David Rouse 8 лет назад 0
В Qemu есть функция, называемая «Qemu monitor», доступ к которой можно получить через Telnet (которая должна быть автоматизированной, что ведет как минимум к одному возможному способу автоматизации - могут быть и другие). Монитор Qemu позволяет человеку взаимодействовать с машиной и вносить некоторые изменения в работающую машину, включая имитацию нажатия клавиш. VirtualBox должен позволять отправлять нажатия клавиш на консоль. (Вы знаете, как это сделать для обычного компьютера с видеокартой, верно?) [Некоторая информация об использовании VirtualBox] (https://forums.virtualbox.org/viewtopic.php?f=8&t=38244) (и гиперссылка в финальном посте) TOOGAM 8 лет назад 0
Вы не упоминаете, какой тип Linux вы используете, но [здесь] (http://askubuntu.com/a/135706) приведены некоторые инструкции по настройке Ubuntu для загрузки с использованием последовательной консоли. heavyd 8 лет назад 0
@TOOGAM Спасибо, да, я наконец-то нашел подкоманду "отправить нажатие клавиши" и попробую. Что касается Qemu: согласен, у него есть функция, которую я хочу, но я не смог настроить ее так, чтобы она не была на несколько медленнее, чем VirtualBox, поэтому отказался от пути Qemu. Kreisquadratur 8 лет назад 0
@heavyd Извините, это CoreOS 766.5.0. Опять же, проблема заключается не в том, чтобы настроить последовательную консоль как таковую, а в том, чтобы установить «оба», последовательный tty (для тестирования) и виртуальный tty (для производства) в качестве консолей. До сих пор я думаю, что я попытаюсь перенаправить все из / dev / tty0 в / dev / stty0 для выходных данных и использовать `sendkeyboardscancodes` VirtualBox для входных данных. Kreisquadratur 8 лет назад 0
Кроме того, проблема не в том, что у меня не может быть доступа к обоим, / dev / tty0 и / dev / ttyS0, а в том, что часть, с которой мне нужно взаимодействовать для обоих, является модулем Systemd во время загрузки, так что просто использовать логин (который ограничен из-за правил безопасности в любом случае) невозможно / будет слишком поздно и позволит имитировать пользователя в процессе производства. Kreisquadratur 8 лет назад 0

1 ответ на вопрос

0
chaotux

Я искал ответ на что-то очень похожее. Поиск Google привел меня сюда, который не дал ответа. После того, как я нашел ответ, я собираюсь найти этот пост и предоставить ответ, который я нашел, чтобы он работал на меня.

Следующее будет прослушивать localhost (система, в которой работает VBox) через порт 2323 для telnet (или netcat) и обеспечивать последовательное соединение с сервером.

VBoxManage modifyvm <VBoxVM> --uart1 0x3F8 4 --uartmode1 tcpserver 2323 

Похожие вопросы