2008-07-30

VMware Player: Failed to allocate page for guest RAM!

Nach erfolgreichem Mounten der externen Festplatte, wollte nun der vmplayer die VM nicht starten. Unter Windows und nach dem Kopieren auf eine lokale Platte hingegen schon. Sollte doch noch eine Option beim ntfsmount fehlen?
Nein, jedes Programm will ein bißchen anders gestreichelt werden.
Hier die Fehlermeldung:
VMware Player unrecoverable error: (vcpu-0)
Failed to allocate page for guest RAM!
A log file is available in "/media/ExternePlatte/VM/vmware.log". Please request support and include the contents of the log file.
To collect data to submit to VMware support, run "vm-support".
We will respond on the basis of your support entitlement.

Lösung: In der xxx.vmx-Datei die Option
mainMem.UseNamedFile="FALSE"
eintragen und der vmplayer kann die Speicher-Datei anlegen und die VM startet.

ntfsmount

Eine externe Festplatte mit einem VMware-Image einer Testumgebung ist eine feine Sache. Allein das kopieren der ca 30GB über das Netzwerk wäre sonst schon ziemlich unschön.
Nach dem Auspacken und Anschliessen der heiß ersehnten Fracht, wurde die Platte auch sofort von Debian (Etch) erkannt und ein lesender Zugriff war ohne Probleme möglich.
Aber wie kann man nun auch schreiben? Sonst stünde ja doch eine Kopie an?

Hilfe naht mit dem Tool ntfsmount im Paket ntfsprogs. Dieses via Synaptic Paketmanager oder
apt-get install ntfsprogs
installieren.
Das Tool benötigt noch FUSE, welches aber normalerweise zum Funktionsumfang ab Kernel 2.6.14 gehört (beim aktuellen Patch-Level von Debian Etch ist das der Fall).
Ob das Modul vorhanden ist kann man mit
modprobe -l fuse
feststellen.
Temporär kann man das Kernelmodul mit
modprobe fuse
starten. Permanent macht man das mit dem Eintrag
fuse
als separate Zeile in /etc/modules.
Nun kann man sich an das mounten der Festplatte machen (gilt für interne genauso).
Als erstes mal einen Mount-Punkt anlegen:
mkdir /media/ExternePlatte
Dann manuell mounten:
ntfsmount /dev/sdb1 /media/ExternePlatte

sdb1 ggf. durch den eigenen Plattennamen ersetzen.
Hinweis: Wenn die Platte autmatisch erkannt wurde, kann man mit
mount
alle Platten auflisten und erhält so auch den Device-Namen - hier eben /dev/sdb1
Mit
umount /dev/sdb1
sollte man dann vor erneutem mounten die Platte erstmal wieder trennen


Die Platte ist jetzt verfügbar aber noch nicht wirklich beschreibbar.
Warum?
Obige Schritte sind nur als root durchführbar und man ist ja sinnvollerweise eben nicht als root angemeldet. Die folgenden Optionen dienen der Abhilfe unter der Annahme, daß sich genau ein Benutzer am System angemeldet hat (ansonsten sollte man mit uid,guid und umask feintunen - siehe
man ntsmount
)
Der gesamte Befehl nochmal:
ntfsmount /dev/sdb1 /media/ExternePlatte -o umask=0,allow_others
Um das ganze nicht jedesmal wieder eintippen zu müssen, kann der Eintrag in der /etc/fstab hinterlegt werden (separate Zeile, Spalten getrennt durch [Tab])
/dev/sdb1 /media/ExternePlatte ntfs-fuse umask=0,allow_others 0 0
Hinweis: In der Original-Dokumentation steht fuse.ntfs - das funktioniert nicht
Hier gibt es mehr Informationen (auch für andere Linux-Distributionen): http://www.linux-ntfs.org/doku.php?id=ntfsmount