Монтирование .vmdk-диска виртуальной машины VMware в Linux

Иногда обмен файлами между виртуальной и хостовой операционными системами может стать проблемой (по крайней мере, у меня такое не раз бывало). Штатные средства на уровне гостевой ОС требуют установленных VMware-Tools, дополнительных настроек виртуальной сети и т.п.

А что делать, если нам просто нужно перекинуть небольшой файл из хостовой ОС Linux на диск виртуальной машины, но шаманить с тулзами и дополнительными настройками нету ни времени ни желания?

Как по мне, простейший способ сделать это — выключить ВМ (если есть возможность) и смонтировать ее виртуальный диск в хостовую ОС. О том как я это делал — ниже.

Итак, все происходило на моем любимом Дебиане 5.0 с установленным на нем VMware Server 2. На VMware крутится Windows 7.

У VMware Server для таких целей есть тулза vmware-mount, которая расположена в папке с самим гипервизором. Принцип ее использования достаточно прост:

./vmware-mount <путь к файлу диска> [номер раздела] <точка монтирования>

«путь к файлу диска» — это путь к самому .vmdk файлу нашей виртуальной машинки, который, как правило, расположен в папке с самой виртуальной машиной;

«номер раздела» — номер логического раздела на диске, начинается, по ходу с «1» т.к. «0» и «1», в моем случае, были загрузочным сектором, а раздел номер «2» был собственно разделом с виндой;

«точка монтирования» — папка, в которую хотим примонтировать наш диск;

Собственно у меня получилась вот такая команда:

$ sudo ./vmware-mount /var/vm-machines/windows7/windows7.vmdk 2 /mnt/windows7

что бы отмонтировать это дело, я не додумался до чего-то более умного чем:

$ sudo umount /mnt/windows7

думаю это есть правильно :)

Возможные ошибки (куда же без них):

Для начала, тулза не хотела ничего монтировать и вылетала с ошибкой:

./vmware-mount: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory

пофиксилось установкой 2-х пакетов: fuse-utils и libfuse2:

$ sudo apt-get install fuse-utils

но это не все, дальше появилась еще одна ошибка:

SSLLoadSharedLibrary: Failed to load library libcrypto.so.0.9.8:/vmserver/libdir/lib/libcrypto.so.0.9.8/libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
Core dump limit is 0 KB.
Child process 16980 failed to dump core (status 0x6).

VMware Server Error:
VMware Server unrecoverable error: (app)
SSLLoadSharedLibrary: Failed to load library libcrypto.so.0.9.8:/vmserver/libdir/lib/libcrypto.so.0.9.8/libcrypto.so.0.9.8: cannot open shared object file: No such file or directory
Please request support.
To collect data to submit to VMware support, select Help > About and click "Collect Support Data". You can also run the "vm-support" script in the Workstation folder directly.
We will respond on the basis of your support entitlement.

Press "Enter" to continue...

Насколько я понял,связана она с тем, что VMware Server у меня был установлен не в /usr, а в /vmserver, а если конкретней, то сами библиотеки ВМтвари расположены не в /usr/lib/vmware а в /vmserver/lib/vmware. Пофиксить это достаточно просто, нужно создать симлинк на наши библиотеки:

$ sudo ln -s /vmserver/lib/vmware /usr/lib/vmware

vmserver в моем случае, это папка, в которую установлены быблиотеки гипервизора и сам гипервизор (инсталяциооный скрипт в процессе установки VMware сервера, спрашивает куда их устанавливать).

Вроде бы ничего не забыл :)