Thomas Kramer

IT-COW | VirtualBox-Maschine ohne Benutzerkontext starten

VirtualBox-Maschine ohne Benutzerkontext starten

By Administrator at Juni 10, 2010 00:30
Filed Under: Administration, Workarounds

Scheint gar nicht so einfach zu sein. Konkret gemeint ist VirtualBox beim Windows-Boot automatisch mitstarten zu lassen, ohne sich in Windows einloggen zu müssen. Dies automatisch mit der Windows-Anmeldung zu tun ist einfach, dazu muss man nur den Befehl

 

vboxheadless -s "Maschine"

 

in eine Batch-Datei schreiben und diese in den Benutzer-abhängigen Autostart-Ordner verschieben.

 

Nun wollte ich das aber ohne Windows-Anmeldung erreichen. Mein erster Gedanke dazu war den Gruppenrichtlinien-Editor gpedit.msc zu benutzen und unter

 

Richtlinien für Lokaler Computer/Computerkonfiguration/Windows-Einstellungen/Skripts (Start/Herunterfahren)/Starten

 

die Batch-Datei mit oben genanntem Befehl einzutragen -> Quelle Link. Funktioniert nur leider nicht mit VirtualBox. Zweiter Versuch bestand darin, mit den Microsoft-Tools instsrv.exe und srvany.exe einen benutzerdefinierten Dienst zu erstellen -> Link. Den Dienst zu erstellen und zu starten war kein Problem, aber VirtualBox startete trotzdem nicht...

 

Als nächstes habe ich dann dies hier gefunden, um mit dem /b-Parameter vboxheadless ohne Fenster-Ausgabe zu starten... funktioniert bei mir aber auch nicht. Das ein neues Fenster erstellt wird muss wohl eines der Probleme sein, denn sobald man dieses Fenster schließt wird auch der Prozess geschlossen. Anscheinend gibt es aber keine Möglichkeit diese Ausgabe zu unterdrücken.

 

Nach weiterem Googlen habe ich das Programm VBoxVmService gefunden, das für diesen Zweck programmiert wurde. Leider versagt auch dieses Programm bei mir - weder wird im grafischen VirtualBox-Fenster angezeigt das die Maschine startet, noch kann ich über RDP auf die Maschine draufgehen (RDP geht bei VirtualBox noch vor Ping, weil für Ping muss das System erst gebootet haben - und VirtualBox hat einen eingebauten RDP-Server). 

 

Anscheinend gibt es noch ein alternatives Programm dafür: VirtualBox Control Service. Dieses Programm habe ich noch nicht getestet, das hebe ich mir für später auf. Gemäß dieser Adresse Link hat es wohl jemand über das Programm srvstart geschafft, und er schreibt auch das die Versuche mit VBoxVmService bei ihm ebenfalls nicht funktioniert hätten.

 

Offenbar haben sich bereits viele Leute daran versucht - vielleicht sollte Sun für VirtualBox standardmäßig eine solche Möglichkeit einbauen. Geschafft habe ich es jedenfalls noch nicht, aber ich rechne gerade wieder Zeitaufwand gegen Nutzen und werde wohl umgekehrt bei mir Windows so umstellen, das der Administrator-Benutzer beim Start automatisch eingeloggt wird und nach 5 Minuten der Bildschirmschoner mit Passwortabfrage anspringt - dies kann man über die Registry erreichen.

 

Vielleicht fällt jemandem noch eine weitere Möglichkeit ein, dann bitte melden... Ergänzung: die selbst erstellten Dienste kann man übrigens über den Befehl sc delete "Dienst" wieder entfernen.

 

Warum ich das ganze machen wollte? Nun, wie in 1 und 2 bereits erwähnt habe ich bei mir in meinem Netzwerk immer wieder mal Datenverluste beim Schreiben auf die Netzlaufwerke - seltsamerweise aber nicht beim Lesen. Dazu habe ich bereits alles mögliche ausprobiert: Netzwerkkarten- und sonstige Treiber aktualisiert, Kabel ausgetauscht (nur noch Cat5e!), mit Crossoververbindung direkt getestet, Patches von Microsoft eingespielt usw...

 

Vorhin übrigens im Windows-Log gefunden: Dienst "Intel Hardware Monitor" wurde unerwartet beendet. Dies ist bereits 29 Mal passiert. Dabei ist das bereits die neueste Version. Das Programm gehört zum Lieferumfang meines Windows Home Servers. Update 16.06.2010: Das PlugIn habe ich gerade runtergeworfen... und mir dafür lieber die Tools System Explorer, HWInfo32 und CPUID installiert -> Link zur Heise Hardware-Analyse-Seite aus dem Software-Verzeichnis. Muss die Einträge in meinem Startmenü mal gruppieren, es wird solangsam unübersichtlich...

 

Vorhin habe ich dann einmal etwas anderes ausprobiert, ich lasse auf meinem Server Ubuntu Server 9.04 in einer VM bei der Anmeldung mitstarten und lasse Samba darauf laufen. Gemäß meinen Tests reichen 150 MB Ram-Zuweisung dafür bereits aus, zumal Ubuntu Server nur die Konsole mitbringt und keine grafische Oberfläche. Damit habe ich nun auch erstmals Ubuntu Server getestet. Wenn man sich an die Befehle gewöhnt hat ist es eigentlich sehr einfach - ich finde es eingängiger als die Konsole von Mac OS X.

 

Auf Tecchannel haben sie die Samba-Konfiguration sehr gut erklärt, mittels Textdateien ist es fast übersichtlicher als die Windows-Freigaben zu konfigurieren. Per default war Ubuntu bei mir auf DHCP-Adressvergabe konfiguriert, bei einem Server sollte man das natürlich nicht belassen -> Link.

 

Nach meinen ersten Erfahrungen ist die Übertragung bei meinem GBit-LAN natürlich langsamer als bei nativer SMB-Verbindung, aber 20 MB/sec konnte ich trotzdem erreichen... natürlich weiss ich das es auch noch andere Möglichkeiten als eine zusätzliche VM gibt, über FTP und über USB-Netzwerkkarte hatte ich es auch bereits versucht, das ist nur ein weiterer Versuch... an der Netzwerkkarte ansich kann es daher nicht liegen.

 

Meine Vermutung ist das sich der Speicherpool des WHS an jede Netzwerkkarte hängt und Fehler bei der Datenübertragung verursacht... an der Netzwerkkarte kann man nichts einstellen, ansonsten hätte ich schon die Duplex-Einstellung geändert (mit USB-Netzwerkkarte aber auch schon getestet). Nur an der Geschwindigkeit kann es wie gesagt nicht liegen, denn über den 100mbit-Switch übertragen hatte ich auch immer wieder Übertragungsfehler. Von zwei Rechnern (Linux/Windows) aus und nur in Richtung Server... das ganze kostet mich zuviel Zeit. Wenn es jetzt stabil läuft werde ich es wohl dabei belassen... mein Enthusiasmus bezüglich Windows Home Server hält sich jedenfalls in Grenzen.

 

Update 15.06.2010: Nach dem letzten Neustart des Servers hatte ich das Problem, das irgendwie ein Savestate von Virtualbox kaputt war und gelöscht werden musste. Nachdem ich das gefixt hatte ergab sich weiterhin das Problem, das das Netzwerkinterface von Ubuntu nun auf eth1 statt eth0 lief, nach dem folgenden Fix ging es dann wieder. Muss durch den Zwangs-Neustart nach dem Windows-Update passiert sein, montags ist Patchday auf meinem Server angesagt...

 

Update 22.06.2010: Schade, mit Ubuntu-Server in der VM und der virtuellen Netzwerkkarte von VirtualBox lässt sich das Problem doch nicht umgehen. Mit USB-Netzwerkkarte hatte ich auch schon probiert, Kabel ausgetauscht... ich verstehe es nicht... muss wohl irgendwo ein Bug sein.

 

Gemäß Link und Link habe ich mal versucht über Registry-Hacks das Task-Offloading und TCP Chimney Offload zu deaktivieren, welche Netwerkaufgaben von der CPU auf die Netzwerkkarte verlagern, aber ohne Auswirkungen. Hier hatte jemand im Zusammenhang mit der Intel Pro 1000/PM-Netzwerkkarte davon berichtet das nach Änderung dieser Parameter der Netzwerktransfer flüssiger lief.

 

Update 23.06.2010: Da robocopy unter Windows fehlertoleranter ist als rsync unter Linux habe ich das nun so umgestellt das der Windows-Rechner die Dateien vom Linux-Rechner abholt statt umgekehrt.

 

Kommentare (7) -

16.08.2010 11:22:20 #

Hallo!

Habe wahrscheinlich was am laufen, was dich interessieren wurde...

Meine beiden Virtuellen Maschinen laufen beide unter Local System account
und zwar als Service

Damit man solche Maschinen erstellen kann muss man Virtual box im Local System account starten (mit hilfe von psexec (sysinternals):
psexec -i -s cmd
und von dort aus zu Virtualbox.exe oder Vboxmanage, etc.)

Mit diesen Maschinen habe ich dann mit hilfe von Windows Service Commander
und srvstart.exe und startx (zum verhindern des Fensters

C:\Program Files\srvstart\srvstart.exe  svc Ubuntuserver -c "c:\Program Files\srvstart\Ubuntuserver.srvstart.ini"

Wobei Ubuntuserver.srvstart.ini so aussieht:

env=VBOXGUI="C:\Program Files\Sun\VirtualBox\virtualbox.exe"
env=VBOXHEADLESS="C:\Program Files\Sun\VirtualBox\vboxheadless.exe"
env=VBOXWEBSRV="C:\Program Files\Sun\VirtualBox\vboxwebsrv.exe"
env=VBOXMANAGE="C:\Program Files\Sun\VirtualBox\VBoxManage.exe"
env=VBOX_PROG="C:\Program Files\Sun\VirtualBox\"
env=VBOX_BASE="c:\vms\"
env=VBOX_MACHINES="c:\vms\machines"
env=VBOX_VDI="c:\vms\Harddisk"
env=VBOX_MACHINE="Ubuntuserver"
env=CMDOW=C:\Program Files\srvstart\cmdow.exe

[Ubuntuserver]
startup=C:\Program Files\srvstart\StartX.exe /BELOWNORMAL /B /WAIT /RETURNERROR "C:\Program Files\Sun\VirtualBox\vboxheadless.exe -startvm Ubuntuserver"
shutdown_method=command
shutdown=%VBOXMANAGE% controlvm %VBOX_MACHINE% acpipowerbutton
debug=0
debug_out=>c:\vms\logs\Ubuntuserver.log
minimised=y


ende Zitat

Dann habe ich eine .bat Datei unter Lokaler Computer/Computerkonfiguration/Windows-Einstellungen/Skripts (Start/Herunterfahren)/Herunterfahren eingetragen, die

net stop Ubuntuserver

enthält, welches dann Automatisch bei jedem herunterfahren dann die Virtuelle Maschine stoppt bevor Windows sich beendet.

Fazit: Virtualbox VM als service, die Automatisch mitstartet (oder manuell durch net start) und durch shutdown skript heruntergefahren wird.

Startx.exe um die Priorität zu setzen und das Vboxheadless-Fenster zu verhindern.

Viele Grüsse nach DE

Sönke Schmachtel

P.S.

VBoxwebsrv ist schön aber öffnet immer ein Vboxheadless-Fenster und startet dies immer mit normaler Priorität. Ausserdem (weiss nicht wie die Aktuelle Version ist) wird hier nichts automatisch gestartet.

Aber: benutze es trotzdem, weil es einen webserver hat und damit auch andere die Maschinen starten und beenden können(nicht admins an anderen Computern). Net start und net stop funktionieren nicht von entfernten maschinen aus(auch wenn man es den Usern erlauben kann(windows service commander), die VM Services zu starten und zu stoppen).

Dazu dann auch VboxWebsrv als service unter localsystem account starten


PS. 2:

Ist schon ein bischen her, dein Post, hoffe aber trotzdem es hilft dir weiter.

Sönke Finland |

16.08.2010 13:04:25 #

Danke für den Hinweis... mal sehen vielleicht teste ich es in nächster Zeit wieder...

thomas Germany |

17.08.2010 22:27:49 #

Hey Thomas,

ich habe eben gerade die neueste Version von VBoxVmService released. Unter anderem wurde in diesem Release der Installationsprozess drastisch vereinfacht. Falls du damit wider Erwarten weiterhin Probleme haben solltest, schick mir einfach eine Mail. Smile

LG, Mathias (aka mattz)

mattz Germany |

18.08.2010 22:27:19 #

ZITAT ---

Nach weiterem Googlen habe ich das Programm VBoxVmService  gefunden, das für diesen Zweck programmiert wurde. Leider versagt auch dieses Programm bei mir - weder wird im grafischen VirtualBox-Fenster angezeigt das die Maschine startet, noch kann ich über RDP auf die Maschine draufgehen (RDP geht bei VirtualBox noch vor Ping, weil für Ping muss das System erst gebootet haben - und VirtualBox hat einen eingebauten RDP-Server).

--- ENDE ZITAT

Das grafische VirtualBox-Fenster kann NIEMALS parallel zu VBoxVmService offen sein, da sich die Programme gegenseitig in Ihrer Ausführung, bzw. ihrer Funktionsweise verhindern. Dabei geht es um File Locking Prioritäten, bzw -Konflikte bzgl. des nur einmal im Speicherbereich existierenden Dienstes VBoxSVC.exe (oder so ähnlich, ist schon etwas länger her bei mir....)

mattz Germany |

19.08.2010 02:38:15 #

Danke... ist jetzt aber auch schon wieder eine Weile her das ich das getestet hatte...

Admin United States |

19.08.2010 02:42:29 #

BTW hier

thelivedevil.com/.../

hatte doch noch jemand berichtet das dein Programm bei ihm nicht funktionierte, warum auch immer. Ich war damit jedenfalls nicht allein, und ich bin eigentlich genau nach Anleitung vorgegegangen. Gut, das das grafische Fenster nicht offen sein darf wusste ich jetzt nicht...

Admin United States |

26.08.2010 11:03:22 #


BTW hier ... hatte doch noch jemand berichtet das dein Programm bei ihm nicht funktionierte, warum auch immer. Ich war damit jedenfalls nicht allein, und ich bin eigentlich genau nach Anleitung vorgegegangen.

Ich kann schwer einschätzen, wie lange dein Versuch zurückliegt. Tatsächlich waren die ersten Versionen von VBoxVmService - naja, sagen wir mal "nichts für schwache Nerven" und das Setup sehr komplex. Inzwischen kommt die aktuelle Version ganz ohne Drittsoftware aus und die Installation besteht aus einigen wenigen und einfachen Schritten.

Gut, das das grafische Fenster nicht offen sein darf wusste ich jetzt nicht...

Steht ja auch tatsächlich nirgendwo, außer in der Entwicklerdokumentation von VirtualBox... Smile

Vielleicht aber noch diese Randnotiz zum Verständnis:
Sowohl die VirtualBox GUI, als auch VBoxVmService sind beides nur unterschiedliche Wege, um mit letztendlich den identischen Kernkomponenten von VirtualBox zu kommunizieren. Sie nutzen daher ebenfalls beide die identischen XML-Files mit den Maschinenbeschreibungen und -Konfigurationen.
Soweit, so gut. Das Problem ist aber:
Der eigentliche Kernprozess von VirtualBox kann aber nur genau einmal im Speicher existieren und benötigt dazu exklusiven Zugriff auf die Konfigurationsdateien. In dem Moment, wo die GUI geöffnet ist, wird dieser Prozess automatisch im Hintergrund gestartet (kann man prima im TaskManager beobachten). VBoxVmService kann dann diesen Kernprozess, der zum Starten oder Stoppen von Maschinen benötigt wird, nicht mehr instanziieren und wird somit auch nicht funktionieren. Anders herum klappt das genauso. Hat man eine VM mittels VBoxVmService gestartet und versucht danach, die GUI zu öffnen, bricht diese mit einer Fehlermeldung ab. Smile

mattz Germany |

Pingbacks and trackbacks (1)+

Monats-Liste