So führen Sie eine virtuelle Maschine ohne in VirtualBox konfigurierte Grafikkarte (VGA) aus

1224
Kreisquadratur

Ich möchte die folgende Funktion von Linux (welche meiner virtuellen Maschinen) verwenden:

Wenn kein Konsolengerät angegeben ist, wird das erste Gerät verwendet, das als Systemkonsole fungiert. Zu diesem Zeitpunkt sucht das System zuerst nach einer VGA-Karte und dann nach einer seriellen Schnittstelle. https://github.com/torvalds/linux/blob/master/Documentation/serial-console.txt Der Grund dafür ist, dass wir in der Produktion die Videoausgabe verwenden, um mit der virtuellen Maschine zu interagieren (nur Text), aber zum Testen möchte ich Programmgesteuerte Interaktion mit dem Computer über einen seriellen Port von VirtualBox.

Disclaimer:

  • Ich bin mir bewusst, dass virtuelle Maschinen kopflos ausgeführt werden, dies unterscheidet sich jedoch davon, dass sie ohne Grafikkarte ausgeführt werden.
  • Ich kenne SSH, aber SSH ist in der VM nicht zulässig
  • Ich kenne RDP, aber die Verwendung eines RDP-Clients während des Testens ist nicht möglich.
  • Ich bin mir bewusst, dass ich Screenshots von der VM und OCR gemacht habe (verzweifelt, ich weiß es), aber ich kann keine Eingaben machen.
  • Ich kenne die undokumentierte VirtualBox-Option cli: Dies VBoxManage modifyvm "$(VM_REL_NAME)" --graphicscontroller nonescheint jedoch das oben genannte Feature nicht auszulösen.
0
Keine Antwort, aber statt sich Gedanken über die Deaktivierung der VGA-Karte zu machen (da Sie diese in der Produktion verwenden werden), sollten Sie die VM so konfigurieren, dass ein serieller Port auf eine Named-Pipe auf dem Host-Computer verweist (vorausgesetzt, Sie verwenden dies) Windows als Host) und dann die serielle Schnittstelle auf dem Gastbetriebssystem als Terminalverbindung konfigurieren. Dann können Sie eine Host-OS-Terminal-App an die Named Pipe anschließen und ta-da haben Sie eine Terminalverbindung zum Guest-OS. Verständlicherweise nicht hilfreich, wenn Sie während der gesamten Installation GUI-frei sein müssen. David Rouse vor 8 Jahren 0
@DavidRouse Das würde funktionieren, wenn ich dir die serielle Schnittstelle als Konsole zB dazu einloggen würde. Aber da ich es beim Booten verwende (die Einheit, mit der ich interagieren möchte, ist eine systemd-Einheit), kann ich diese Einheit nur zur Ausgabe / Eingabe an einer Konsole verwenden. Kreisquadratur vor 8 Jahren 0
"Ich möchte folgende Funktion von Linux verwenden" - dann tun Sie es. Ich sehe derzeit keine Frage, außer dass "das oben erwähnte Feature nicht auszulösen scheint" bedeutet, dass Sie Schwierigkeiten bei der Verwendung des Features haben. Was ist die Schwierigkeit? Warum können Sie SSH nicht verwenden? (Das klingt nach einem Netzwerkproblem, das möglicherweise ohnehin behoben werden muss.) Die von mir verwendete VM-Software bietet die Möglichkeit, einen Tastendruck an die lokale Konsole zu senden (auch wenn ich sie nicht sehen kann) mit Screenshots arbeiten. Betriebssystemspezifische Details können helfen, also welches Linux-Betriebssystem? TOOGAM vor 8 Jahren 0
@ TOOGAM Bei der Verwendung der Linux-Funktion kann ich in Virtualbox keine Möglichkeit finden, die VM zu starten, ohne dass eine Grafikkarte / ein VGA konfiguriert werden muss (was dann den Linux-Kernel veranlassen sollte, die Console Switch-Funktion auszulösen). Meine Frage bezieht sich also auf VirtualBox sowie darauf, wie und ob das Linux-Kernel-Feature funktionieren sollte. Was SSH betrifft: Das VM-Image wird von einem Kunden verwendet, der keinen Zugriff auf SSH haben sollte, und ich möchte das genaue Image testen, das der Kunde erhält. Daher kann SSH nicht während des Tests aktiviert werden, da dies das Image (eine OVA) ändern würde. Linux ist CoreOS und ich möchte mit einer Systemd-Einheit interagieren. Kreisquadratur vor 8 Jahren 0
@TOOGAM "Die VM-Software, die ich normalerweise verwende, hat die Möglichkeit, einen Tastendruck zu senden", meinen Sie programmgesteuert oder interaktiv? wenn programmgesteuert, welche VM-Software verwenden Sie? Ich sehe keinen einfachen Weg (neben der Verwendung von RPD oder KVM), um Tastenanschläge mithilfe von VirtualBox an einen virtuellen Computer zu senden. Wenn dies möglich wäre, wäre eine serielle Schnittstelle überflüssig. Kreisquadratur vor 8 Jahren 0
Wieder keine Antwort, aber vielleicht möchten Sie bei Google "serielle Konsolenumleitung" - es scheint, dass Sie die serielle Schnittstelle beim Booten bevorzugen sollten. Es sieht aus wie Leute mit ähnlichen Einschränkungen, da Sie diese Technik verwenden. Wenn das nicht hilft, habe ich keine Ahnung - wenn es eine physische Maschine wäre, würde ich LOM sagen. David Rouse vor 8 Jahren 0
Qemu hat eine Funktion namens "Qemu-Monitor", auf die über Telnet zugegriffen werden kann (was automatisierbar sein sollte und mindestens eine Möglichkeit zur Automatisierung bietet - möglicherweise gibt es auch andere). Mit dem Qemu-Monitor kann eine Person mit der Maschine interagieren und einige Änderungen an einer laufenden Maschine vornehmen, einschließlich der Simulation eines Tastenanschlags. VirtualBox sollte es Ihnen ermöglichen, Tastatureingaben an eine Konsole zu senden. (Sie wissen, wie man das für einen normalen Rechner mit einer Grafikkarte macht, oder?) [Einige Informationen zur Verwendung von VirtualBox] (https://forums.virtualbox.org/viewtopic.php?f=8&t=38244) (und Hyperlink im letzten Beitrag) TOOGAM vor 8 Jahren 0
Sie erwähnen nicht, welche Linux-Variante Sie verwenden, aber [hier] (http://askubuntu.com/a/135706) enthält einige Anweisungen zum Einrichten von Ubuntu zum Booten mit einer seriellen Konsole. heavyd vor 8 Jahren 0
@ TOOGAM Danke, ja, ich habe endlich den Unterbefehl "send keystroke" gefunden und werde es versuchen. In Bezug auf Qemu: stimme zu, dass es die gewünschte Funktion hat, aber ich konnte es nicht so konfigurieren, dass es nicht um Größenordnungen langsamer ist als VirtualBox, so dass der Qemu-Pfad verworfen wurde. Kreisquadratur vor 8 Jahren 0
@Heavyd Sorry, es ist CoreOS 766.5.0. Wiederum besteht das Problem nicht darin, die serielle Konsole als solche einzurichten, sondern "beide", ein serielles tty (zum Testen) und ein virtuelles tty (für die Produktion) als Konsolen. Bis jetzt denke ich, ich werde versuchen, alles von / dev / tty0 nach / dev / stty0 für Ausgaben umzuleiten, und die `sendkeyboardscancodes` von VirtualBox für Eingaben verwenden. Kreisquadratur vor 8 Jahren 0
Das Problem ist auch nicht, dass ich nicht auf beide / dev / tty0 und / dev / ttyS0 zugreifen kann, sondern dass der Teil, mit dem ich für beide interagieren muss, eine Systemd-Einheit ist, die während des Startvorgangs so einfach ist, dass ein Login verwendet wird (was aus Sicherheitsgründen ohnehin eingeschränkt ist) ist nicht möglich / wäre zu spät und erlaubt einen Benutzer in der Produktion zu simulieren. Kreisquadratur vor 8 Jahren 0

1 Antwort auf die Frage

0
chaotux

Ich suchte nach einer Antwort auf etwas sehr Ähnliches. Google-Suchen brachten mich hierher, was keine Antwort lieferte. Nachdem ich die Antwort gefunden habe, necro ich diesen Beitrag und gebe die Antwort, die ich gefunden habe, um für mich zu arbeiten.

Im Folgenden wird von localhost (dem System, auf dem VBox ausgeführt wird) an Port 2323 Telnet (oder netcat) überwacht und eine serielle Verbindung zum Server hergestellt.

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