Die Foren-SW läuft ohne erkennbare Probleme. Sollte doch etwas nicht funktionieren, bitte gerne hier jederzeit melden und wir kümmern uns zeitnah darum. Danke!

Script für automatische Erstellung einer VM

Hilfe bei Problemen mit der Installation und Benutzung der VMware Workstation und VMware Workstation Pro.

Moderatoren: irix, continuum, Dayworker

Member
Beiträge: 5
Registriert: 08.09.2005, 14:04

Script für automatische Erstellung einer VM

Beitragvon toby@vm » 09.11.2005, 15:04

Hallo Zusammen,

habe ein Problem; sitze nun schon seit ein paar Tagen an meinem Rechner und versuche ein Script zu erstellen um eine Virtuelle Maschine zu konfigurieren bzw. erstellen. :shock: :shock:

Das System ist fast fertig. Leider habe ich einen Fehler(aus dem ich nicht mehr raus komme):
Wie kann ich meine Festplatte (*.vmdk) erstellen und konfigurieren? :?:

Facts:
Workstation 5
Batchprogrammierung

Vielen Dank!
tobi

Experte
Beiträge: 1425
Registriert: 11.08.2004, 17:08
Wohnort: Paderborn

Beitragvon MSueper » 09.11.2005, 18:50

leg doch eine Platte initial an, gezipped sind die sehr klein, und pack die dem Skript bei.
Z.B. eine mit 4, eine mit 8 und eine 32GB, dann hat der Anwender schon mal 3 Größen zur Auswahl.

Guru
Beiträge: 2237
Registriert: 21.09.2005, 00:12

Beitragvon stefan.becker » 09.11.2005, 20:04

Alternativ Qemu-img Kommando beilegen, das kann das auch. Dazu halt einmalig Qemu installieren, da ist der Befehl bei.

Benutzeravatar
Moderator
Beiträge: 14752
Registriert: 09.08.2003, 05:41
Wohnort: sauerland
Kontaktdaten:

Beitragvon continuum » 09.11.2005, 23:55

Hy Toby
hast du meine batch gesehen ?
Bild

Zur Plattenerstellung kannst du - auf einer Workstation einfach den vmware-vdiskmanager nehmen - das ist wohl die flexibelste Variante.

Ich bin ansonsten an der selben Story dran - fuer preallocated Disks kann man sich ein 2GB-stueck in ein 7-zip selbstentpackendes Archiv packen und das dann entweder ein paar mal hintereinander setzen und umbenennen oder aneinander haengen. Die Disk-geometrien kannst du einer Tabelle auf meiner Seite entnehmen.
Fuer sparse Platten entweder wie schon Stefan gesagt hat Qemu - oder wie MSueper vorschlaegt mit ein paar vorgefertigten Platten hantieren. Das hat den Vorteil, dass man sich die locker auch schon vorformatieren kann.

Ulli

Member
Beiträge: 5
Registriert: 08.09.2005, 14:04

Beitragvon toby@vm » 10.11.2005, 07:33

Hi,

ja das ist ein wenig komplizierter.

Hab gestern noch herausgefunden.... wenn ich eine bestehende Festplatte in der Config verändere kann man so eine Platte erzeugen.

Problem ist sobald ich eine neue Platte erstellen will fehlen ihm in der Config die Binärdaten.


Config einer 5GB IDE Platte

# Disk DescriptorFile
version=1
CID=xxxxxxxx
parentCID=ffffffff
createType="monolithicSparse"

# Extent description
RW 10485760 SPARSE "Windows XP Professional (2).vmdk"

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "10402"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"

Grüße
Tobi

PS: Hab mir die Batch gerade angesehen. Ist einiges interessantes drinnen. allerdings hätte ich bei der zeile mit den CDROM ISO´s einen kleinen verbesserungsvorschlag... du solltest den physikalischen Device anbieten. (D:)

Benutzeravatar
Moderator
Beiträge: 14752
Registriert: 09.08.2003, 05:41
Wohnort: sauerland
Kontaktdaten:

Beitragvon continuum » 10.11.2005, 16:15

allerdings hätte ich bei der zeile mit den CDROM ISO´s einen kleinen verbesserungsvorschlag... du solltest den physikalischen Device anbieten.


Ich hatte vor in der naechsten Version eine Option "Erstelle ein Iso von Laufwerk X" anzubieten - aber da du nicht der erste bist der wirklich die grottenlangsamen Echt-CDs verwenden will, werde ich auch das einbauen.

Wenn dir sonst noch sinnvolle Erweiterungen einfallen - immer raus damit.

Rob arbeitet schon an einer Umsetzung meiner batch in ein GUI - siehe http://sanbarrow.com/niceguis.html

Mich wuerde interessieren in welchem Zusammenhang du dein script verwenden wolltest?

Ulli

Benutzeravatar
Moderator
Beiträge: 14752
Registriert: 09.08.2003, 05:41
Wohnort: sauerland
Kontaktdaten:

Beitragvon continuum » 10.11.2005, 16:18

Uebrigens - warum willst du mit monolithic sparse hantieren? - die anderen Typen sind viel einfacher zu handeln.
Schon um eine monolithic-sparse umzubennen musst du hex-editieren.
Die anderen Typen lassen sich einfach mit notepad bearbeiten.

Ulli

Member
Beiträge: 5
Registriert: 08.09.2005, 14:04

Beitragvon toby@vm » 10.11.2005, 16:50

aber kann ich die anderen typen mit einem script kombinieren um die klicks alle von einem script oder datei abarbeiten lassen?

das problem ist ich will für meine testumgebung das produkt workstation an sich über einen ressourceserver installieren lassen.

anschließend werde ich das hoffentlich irgendwann fertige script verwenden um mit einem kleinen file( in dieser stehen dann die hardfacts) eine maschine zu bilden und zu starten um anschließend in die session ein betriebssystem von einem ressourceserver zu installieren.

dies alles sollte so weit wie möglich manuell entstehen.
dabei ist die vmx noch das leichteste.

gut wäre es die hintergrund befehle von vmware zu wissen... wenn ich klicke was und wie die datei geschrieben wird.

Benutzeravatar
Moderator
Beiträge: 14752
Registriert: 09.08.2003, 05:41
Wohnort: sauerland
Kontaktdaten:

Beitragvon continuum » 11.11.2005, 01:57

Hi
du drueckst dich etwas vage aus -
wo fehlt es denn im Detail - vielleicht kann ich dir ja helfen - interessant ist es allemale.
Ich denke zB auch ueber Moeglichkeiten nach - die Boot-reihenfolge im BIOS voreinzustellen ...

Ulli

Member
Beiträge: 5
Registriert: 08.09.2005, 14:04

Beitragvon toby@vm » 11.11.2005, 07:41

es hängt bei der erstellung der festplatte.

ich erstelle die *.vmx und habe somit meine config für die VM.
damit ich aber etwas mit der maschine anfangen kann benötige ich eine Festplatte.

Problem:
wenn ich eine Festplatte anhand der in der *.vmdk angegebenen configdaten erstelle erkennt er das format nicht als vmdk sondern als config.
daher sollte man wenn möglich in binärschreibweise die config schreiben... da das system dann klar kommen würde

wenn du eine vmdk in visual studio.net mal öffnest siehst du das eine festplatte(vmdk) nicht mit der eigentlichen config also:
------------------------------------
# Disk DescriptorFile
version=1
........
--------------------------------------

anfängt sondern mit einem binärcode

und an dieser aktion scheitert die erstellung der KOMPLETTEN maschine.

verstanden?

grüße
tobi

Benutzeravatar
Moderator
Beiträge: 14752
Registriert: 09.08.2003, 05:41
Wohnort: sauerland
Kontaktdaten:

Beitragvon continuum » 11.11.2005, 17:59

... daher sollte man wenn möglich in binärschreibweise die config schreiben...


Das sehe ich aber anders!
Dir ist sicher bewusst das es 4 (+1) verschiedene Festplattenformate von VMware gibt - du hast dir von allen 5 das unpraktischste ausgesucht.
Ok - dieser Gegner reizt mich auch am meisten.
Bei den preallocated Versionen hatte ich letzte Woche erste Erfolge - hier kann ich den descriptor locker mit notepad erzeugen und die grossen chunks konnte ich mit fsutil erzeugen.
Wenn ich bei den monolithic-sparse disks etwas am descriptor aendern muss, extrahiere ich den Bereich von 200h bis 400h und kann den Teil dann auf einfache Art und Weise veraendern indem ich striings austausche oder einfach einen neuen Block erzeuge.

Code: Alles auswählen

echo # Disk DescriptorFile                  > descriptor.block
echo version=1                             >> descriptor.block
echo CID=58b65610                          >> descriptor.block
echo parentCID=ffffffff                    >> descriptor.block
echo createType="monolithicSparse"         >> descriptor.block
echo.                                      >> descriptor.block
echo # Extent description                  >> descriptor.block
echo RW 2097152 SPARSE "a-s001.vmdk"       >> descriptor.block
echo.                                      >> descriptor.block
echo # The Disk Data Base                  >> descriptor.block
echo #DDB                                  >> descriptor.block
echo.                                      >> descriptor.block
echo ddb.virtualHWVersion = "4"            >> descriptor.block
echo ddb.geometry.cylinders = "512"        >> descriptor.block
echo ddb.geometry.heads = "128"            >> descriptor.block
echo ddb.geometry.sectors = "32"           >> descriptor.block
echo ddb.adapterType = "buslogic"          >> descriptor.block
echo ddb.toolsVersion = "0"                >> descriptor.block


Eine Aktion wie diese kann man recht einfach von einer batch ausfuehren lassen. Ich bin im Moment noch ein bisschen am experimentieren mit welchem Programm ich das mache - derzeitiger Favorit sind die dsfok-tools. Leider habe ich noch keine gute Dokumentation von dd fuer Windows gefunden - ich weiss das man das mit dd machen kann aber zur Zeit steht es noch 0:3 im Spiel Ulli gegen dd-syntax ;-)

Ich bin noch nicht so recht dazu gekommen mich weiter um die sparse-disks zu kuemmern - am einfachsten erscheint mir der undokumentierte Typ monolithic-sparse mit descriptor-file zu sein. Den verwendet VMware zwar nicht selber - aber kommt problemlos mit ihm klar. Einzige mir bekannte Dokumentation bzw Erwaehnung dieses Typs findest du auf meiner Seite - ich habe das im US-forum mal als feature-request gepostet: bitte ersetzt monolithic-sparse ohne durch monolithic-sparse mit!
http://www.vmware.com/community/thread. ... tstart=200

Petr's Antwort lese ich so: wenn es mir nach ginge, wuerde ich es auch so machen.

Wenn ich erstmal begriffen habe, wie man diesen Typ handhabt sollte es nicht mehr allzu schwierig sein, den descriptor-block wieder an die normale Stelle 200h einzufuegen.



Ein weiteres Problem ist die disk-geometrie: ich wollte bis ich begriffen habe wie man das errechnet, zur Plattenerstellung die Werte aus der Geometrietabelle auf meiner Seite verwenden und nur Groessenwerte von x mal 1GB zulassen.
Ich denke aber, das diese Einschraenkung sich schnell erledigt hat, wenn ich mich mal naeher damit befasse.

Toby - wenn du Lust hast noch weiter darueber zu diskutieren - lass uns dass in meinem Forum machen.

Ulli

Member
Beiträge: 28
Registriert: 10.06.2005, 18:03

Beitragvon Thoralf » 12.11.2005, 15:40

continuum hat geschrieben:Ein weiteres Problem ist die disk-geometrie:


Die Geometrie errechnet sich relativ einfach ausgehend von der Plattenkapazität in Bytes.

Die Größenangabe im DescriptorFile ist die reale Größe in Bytes / 512
Die Cylinder errechnen sich aus der Größe im DescriptorFile / Heads / Sectors.

Beispiel:
Du hast eine IDE VMDK von 100MB mit 16 Heads und 63 Sectors.
Dann ist die Größe = 104857600/512 = 204800
und die Cylinder = 204800/16/63 = 203

Dein Beispiel oben:
Im DescriptorFile ist die Größe 2097152.
Die reale Kapazität ist somit
2097152*512 = 1073741824 Bytes = 1048576 KB = 1024 MB = 1 GB

Die Cylinder 2097152/128/32 = 512

Thoralf

Benutzeravatar
Moderator
Beiträge: 14752
Registriert: 09.08.2003, 05:41
Wohnort: sauerland
Kontaktdaten:

Beitragvon continuum » 13.11.2005, 11:10

Hi Thoralf

Es waere schoen, wenn es so einfach waere - SCSI-geometrien verhalten sich ziemlich berechenbar - bei IDE-Platten passiert aber etwas merkwuerdiges sobald man groesser als 8GB wird. Dann haben naemlich alle Platten egal wie gross sie werden immer diese Geometrie:
16383 x 16 x 63

Mal ein anderes Beispiel:

Groesse im Descriptor: 1979711488
Geometrie nach VMware: 16383 x 16 x 63
Nenngroesse = 944 Gb

Man koennte ja eigentlich gut damit leben, keine IDE-Platten unter 8GB zu erstellen denn dann kann man immer die selbe Geometrie nehmen.

Etwas weiteres merkwuerdiges: Sparse-disks wenn sie von VMware kommen wachsen auch nicht linear an sondern machen Spruenge.

Na ja - jedenfalls muss ich noch ein wenig weiter forschen um die Sparse-platten zu begreifen ;-)

Ulli

Member
Beiträge: 28
Registriert: 10.06.2005, 18:03

Beitragvon Thoralf » 13.11.2005, 12:44

Hallo Uli,

das ist Richtig und ich habe es vergessen zu erwähnen.
Laut Festlegung der Hersteller geben alle ATA Festplatten maximal ein logisches Format von CHS=16383/16/63 (8.4GB) zurück.
Das macht natürlich auch VMware so.

continuum hat geschrieben:Etwas weiteres merkwuerdiges: Sparse-disks wenn sie von VMware kommen wachsen auch nicht linear an sondern machen Spruenge.


Ich weiss nicht genau was du meinst.
Eventuell beziehst du dich auf den Effekt, dass bei wachsender Grösse, und damit wachsenden Directory Tables, diese in Blöcken vergrössert werden.

Bei einer Granularity von 128 (Standard bei VMware) ergibt das Sprünge von 128*512 = 65536 Bytes = 64 KB.

Thoralf

Benutzeravatar
Moderator
Beiträge: 14752
Registriert: 09.08.2003, 05:41
Wohnort: sauerland
Kontaktdaten:

Beitragvon continuum » 22.11.2005, 00:25

Hi Thoralf
... was weisst du ueber "Granularity von 128" ???????????

Ist ein "Granulat-teilchen" a 64kb der kleinste Block mit dem VMware hantiert?
Also nicht VMware an REDO: Hast du sektor 5666477 oder ist der in parent-disk?
Sondern VMware an REDO: Hast du granulatteil 5666477/128 = 44269 oder ist der in parent-disk?

Ulli


Zurück zu „VMware Workstation und VMware Workstation Pro“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast